サーバーレス関数

「サービスとしての関数」(Function-as-a-service:Faas)とも呼ばれるサーバーレスアーキテクチャーは、さまざまなビジネス予定に応じて独自のコードを実行するためのプラットフォームを開発者に提供します。Zoho CRMでは、これらのすべてのコードをDelugeスクリプトで記述でき、サーバーのプロビジョニングや管理を行わずに実行できます。一度記述したこれらのコードは、他の外部サービスのサービスからトリガーすることも、任意のWebアプリまたはモバイルアプリから直接トリガーして呼び出すこともできます。

これは「サーバーレス」と呼ばれていますが、実際にコードを実行するにはサーバーが必要です。したがって、「サーバーレス」という用語は、開発者や組織がコードを実行するためにサーバーを購入、プロビジョニング、レンタルする必要がないことを意味します。

REST APIを使用した関数の呼び出し

関数を使用すると、従来の関数とは別に、CRMの追加の機能性や機能を使用できます。関数を呼び出すにはトリガーが必要です。トリガーは、ワークフロー、ブループリント、関連リストの形式で、またはボタンのクリックの形で設定できます。

これらのメソッドを使用せずに、または外部ソースから関数をトリガーする必要がある場合は、スタンドアロン関数を作成して、API呼び出しとして使用できるようにします。REST APIを通じて関数をトリガーすることで、Zoho CRM内の任意の場所や外部サービスのアプリケーションから柔軟にトリガーできます。

関数をAPIとして呼び出すには、次の2つの方法があります。

関数をAPIとして使用する以外に、関数を他の関数内で使用することもできます。これは、関数全体が1行のコードに集約されるため可能になります。

ただし、他の関数で関数を呼び出すときには、いくつかの注意事項があります。次に、別の関数内で呼び出される関数を表すサンプルのコードスニペットを示します。

関数内の関数(APIを使用):

URL=<REST API Function URL>;
param = Map();
param.put(<argument-name>, <argument-value>);
param.put(<argument-name>, <argument-value>);
param.put(<argument-name>, <argument-value>);
argument = Map();
argument.put("arguments", param);
response = invokeurl
[
url: URL
type: GET | POST
parameters: argument
headers: {}
];
return response;

Postmanの関数:

API呼び出しとして提供される関数は、POSTMANアプリケーションを使用してテストできます。ただし、そのアプリで関数を実行する場合は、いくつかの点に注意する必要があります。

URL:

https://crm.zoho.com/crm/v2/functions/{api_name_of_function}/actions/execute?auth_type=oauth{or}apikey

引数:

arguments=
{
"emailAddress":"abc@gmail.com",
"extraDetails":{
  "name":"Abc",
  "signature":"XYZ"
   }
}

  • 関数内で引数として「arguments」という名前を使用することは避けてください。これは、JSON内で渡されるすべての引数が1つの「arguments」に関連付けされ、他の引数は空のままになるためです。

1. リクエストURL内:

HTTPメソッド

  • GET
  • POST

次に示す引数は符号化形式です。

リクエストURL内では、引数をJSONオブジェクトとして渡すことはできません。リクエストURL内で引数を指定する場合は、引数を符号化してください。

arguments=%7B%0D%0A%09%22emailAddress%22%3A%22abc%40gmail.com%22%2C%0D%0A%09%22extraDetails
%22%3A%7B%0D%0A%09%09%22name%22%3A%22Abc%22%2C%0D%0A%09%09%22signature%22%3A%22XYZ%22%0D%0A%09%7D%0D%0A%7D%0D%0A

APIでは、引数をヘッダーとして呼び出すことができます。たとえば、URLは「{Rest API URL}?age=15&name=Robert」となります。ここで、「age」と「name」は関数の引数です。

また、関数で定義されていないが、APIで使用されている追加の引数については、通常、エラーがスローされます。ただし、「CRM API Request」という名前の関数に追加の引数を優先的に追加できます。この引数には、API呼び出し内で渡す追加引数がすべて含まれるか、または取得されます。

2. ボディーのセクションで次の手順を実行してください。

[ボディー] > [フォームデータ]セクションで、「arguments」という名前のキーを作成してください。

arguments={"emailAddress":"abc@gmail.com","extraDetails":{"name":"Abc","signature":"XYZ"}}

  • POSTリクエスト - 引数の制限
    • リクエストURL - 5,000行。
    • ボディー - 95,000行(JSONオブジェクトとして)。

別の関数内の関数を呼び出す

関数を他の関数内で呼び出す必要がある要件がいくつかあります。ワークフロー内の関数を呼び出す方法と同様に、他の関数内で関数を呼び出すことができます。AとBの2つの関数について考えてみましょう。

関数Aから関数Bに引数(パラメーター)を渡すには、URLパラメーターの文字列またはフォームデータのいずれかで渡す必要があります。これを実現するには、以下のスニペットを関数内で使用してください。

上記のコードスニペットは、関数Aの引数が関数Bのパラメーターとして呼び出されるサンプルを示しています。「file」という名前のリストを作成し、関数Aのパラメーターを関数Bでどのように使用するかを決定する必要があります。

関数のヘッダーはフォームデータであり、「file」を呼び出す必要があります。

以下のコードスニペットを関数内に直接コピーできます。

param = Map();
param.put("{key}","{value}");
param.put("{key}","{value}");
param.put("{key}","{value}");
files = list();
for each key in param.keys()
{
    stringpart = Map();
    stringpart.put("stringPart","true");
    stringpart.put("content","" + param.get(key));
    stringpart.put("paramName",key);
    files.add(stringpart);
}
response = invokeurl
[
    url :"{Function_API_URL}"
    type :POST
    headers:{"Content-Type":"multipart/form-data"}
    files:files
];