サーバーレス関数
「サービスとしての関数」(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
];