无服务器函数
无服务器函数也称为“函数即服务”(Faas),它提供平台供开发者针对不同的业务活动执行自己的代码。在 Zoho CRM 中,所有此类代码都可以通过 deluge 脚本进行编写,并可以在不提供或管理服务器的情况下运行。这些代码一旦编写,可以从任何第三方服务中触发,也可以从任何 Web 或移动应用中直接触发。
尽管它名为“无服务器”,但实际上需要服务器来运行代码。因此,“无服务器”一词表示,开发者或机构无需购买、提供或租赁任何服务器来运行其代码。
使用 REST API 调用函数
除常规功能外,函数允许您在 CRM 中具有其他功能。函数需要触发器来调用。触发器可以是工作流、蓝图、相关列表,也可以是通过点击按钮来触发。
如果函数需要在不使用这些方法的情况下或从外部源触发,则您可以创建独立函数并以 API 调用的形式提供。通过 REST API 触发函数,这允许您在 Zoho CRM 中的任意位置或任意第三方应用程序触发该函数。
您可用两种方式以 API 的形式调用函数:
除将函数用作 API 外,您还可以在其他函数内调用这些函数。由于整个函数减少为一行代码,因此这是有可能实现的。
但是,当在另一函数中调用该函数时,有一些注意事项。以下是代码片断示例,它表示某一函数在另一函数内进行调用。
函数内的函数(使用 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.cn/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.在请求 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 中将自变量作为 Header 进行调用。例如,URL 为 "{Rest API URL}?age=15&name=Robert",其中 "age" 和 "name" 是函数中的自变量。
此外,对于函数中未定义、但在 API 中使用的任何额外自变量,通常会抛出一个错误。但是,您可以预先在函数的 "CRM API Request" 名称下添加一个额外的自变量。此自变量将包含或采用您在 API 调用中传递的所有额外自变量。
2.在 Body 部分:
在Body > form-data部分,请用 "arguments" 名称创建一个密钥。
arguments={"emailAddress":"abc@gmail.com","extraDetails":{"name":"Abc","signature":"XYZ"}}
注:
- POST 请求 - 自变量限制
- 在 Request URL 中 - 5000 行。
- 在 Body 中 - 95000 行(作为 JSON 对象)。
在另一函数中调用函数
通常可能有一些要求,需要在其他函数中调用函数。就像您在工作流中调用函数一样,您可以在其他函数中调用它们。让我们以两个函数为例,A 和 B。
为了将自变量(参数)从函数 A 传递到 B,它们必须在查询 URL 字符串或者在表单数据中进行传递。为了达到此目的,请在函数中使用以下提供的代码片断。
以上代码片断展示了一个示例,在以下模块中,函数 A 中的自变量作为参数进行调用。您需要创建一个名称为 'file' 的列表,并确定函数 A 的参数将在函数 B 中使用。
该函数的 Header 为表单数据,需要调用 '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
];