函数
我怎样才能...
函数是用户定义类型的例程,每当调用时执行一组特定操作。它们在 Zoho Developer 中定义为使用 Deluge 脚本编写的独立函数,不依赖于任何模块。所以,可在任何工作流中调用这些函数以实现指定功能。
返回类型和自变量
- 可将受支持数据类型的单个或多个自变量作为参数传递至函数。
- 函数可返回具有某个受支持数据类型的值。
- 受支持数据类型为:整数、浮点、字符串、布尔值、日期、映射和列表。
函数类型
Zoho Developer 中的函数分类为常规函数和 REST API 函数。
创建函数
常规函数
这些函数是在其他工作流自定义函数、自定义按钮、相关列表和计划中调用的。
要创建函数,请执行以下操作:
- 登录 Zoho Developer 控制台,然后点击 Zoho CRM 的扩展。
- 选择要为其创建函数的扩展,然后点击编辑。
- 在左窗格中点击自动化,然后点击函数。
- 在函数页面中点击创建函数。
- 在创建函数页面中,填写以下详细信息:
- 函数名称
- 作为 REST API 调用 - 对于常规函数,请选择“否”,对于 REST API 函数,请选择“是”。
- 选择函数的返回类型
- 点击“添加自变量”(如果存在),然后指定自变量名称和类型。
- 点击保存。
下面给出 Deluge 脚本中对应某个常规函数的样本代码片段:
string pluginname.Copy_Address(string module, int id)
{
m = { "module" : input.module, "id" : input.id };
resp = zoho.crm.invokeConnector(("crm.get"), m);
response = (resp.get("response")).toMap();
data = response.get("data").toJSONList();
respstr = "";
for each rec in data
{
dataMap = rec.toMap();
idd = dataMap.get("id");
street = dataMap.get("Street");
city = dataMap.get("City");
state = dataMap.get("State");
country = dataMap.get("Country");
zip = dataMap.get("Zip_Code");
updateDataMap = map();
updateDataMap.put("installscript.Billing_Street", street);
updateDataMap.put("installscript.Billing_City", city);
updateDataMap.put("installscript.Billing_State", state);
updateDataMap.put("installscript.Billing_ZipCode", zip);
updateDataMap.put("installscript.Billing_Country", country);
updateDataMap.put("id", idd);
l = List();
l.add(updateDataMap);
updMap = { "module" : input.module, "data" : l };
updateResp = zoho.crm.invokeConnector("crm.update", updMap);
respstr = updateResp+"";
}
return respstr;
}
REST API 函数
第三方应用程序可以带有“apikey”支持的 webhook URL 形式调用这些 API 函数(请参阅此节)。API 函数不返回任何内容。所以它们的返回类型为 void,但这些函数内传递的参数将为映射类型并命名为 requestMap。下面给出 requestMap 的键/值对:
| 键 | 值 |
| 参数 | 下面是 requestMap 中的键/值对形式的映射类型实体。例如,在 URL https://platform.zoho.com/crm/v2/settings/custom_functions/ <extension_namespace.function_name>/execute?zapikey=apikey&action=mailreceived 中,参数以 {"action":"mailreceived"} 形式接收,其中 "action" 是参数名, "mailreceived" 是参数值。然后,系统会对该映射运行以下代码: params = requestMap.get("parameters"); |
| tp_event_response | 如果第三方服务在输入流中发送数据,那么系统会对该映射运行以下代码: response = input.requestMap.get("tp_event_response") |
获取 ZAPI 键的值
可使用下列其中一项获取 ZAPI 键的值:
- 自定义函数
- 安装脚本
使用自定义函数
- 发布包含 REST API 函数的扩展并安装该扩展。
- 登录您的应用程序。
- 转至设置 > 自动化 > 操作,然后选择函数页签。
- 点击配置函数按钮。
- 点击编写自己的函数链接。
- 在 Deluge 脚本编辑器中,粘贴以下代码片段并点击保存并执行脚本。
m = {"nameSpace" : "<portal_name.extension_namespace>"};
apikeyresp = zoho.crm.invokeConnector("crm.zapikey",m);
zapikey = apikeyresp.get("response");
info zapikey;
- 该 ZAPI 键将显示在日志消息中。
使用安装脚本
- 登录 Zoho Developer 控制台,然后点击 Zoho CRM 的扩展。
- 选择包含 REST API 函数的扩展,然后点击编辑。
- 从左窗格中选择自定义属性。
- 点击创建按钮。
- 在字段名称和 API 名称字段中输入值,然后点击保存。
此变量在安装脚本中用于存储 REST API 函数的 URL(以下步骤中将说明详细信息)。
- 在左窗格中选择安装操作。
- 点击扩展 - 安装时。
- 在 Deluge 脚本编辑器中,粘贴以下代码片段并点击保存。
m = { "nameSpace" : "<portal_name.extension_namespace>" };
apikeyresp = zoho.crm.invokeConnector("crm.zapikey", m);
zapikey = apikeyresp.get("response");
url = "https://platform.zoho.com/crm/v2/settings/custom_functions/<extension_namespace.function_name>/execute?zapikey=" + zapikey;
m = { "apiname" : "<extension_namespace.variable_name>", "value" : url };
r = zoho.crm.invokeConnector("crm.set", m);
info r;
- 发布包含 REST API 函数的扩展并安装该扩展。
- 登录您的应用程序。
- 转至设置 > 应用市场 > 全部 > 已安装,然后点击扩展名称。
变量“apifunctionurl”的值将显示在扩展详细信息页面的扩展设置部分中。此变量将具有 ZAPI 键值。
以下函数代码片段以 webhook 的形式调用第三方 Twilio REST API 并将关联至应用程序
resp = input.requestMap;
twilioResp = (resp.get("parameters")).toMap();
fromNumber = twilioResp.get("From");
messageContent = twilioResp.get("Body");
LeadRespList = zoho.crm.searchRecords("Leads", "("(Mobile|=|" + fromNumber + ")");
for each LeadRespinLeadRespList
{
LeadId = LeadResp.get("LEADID");
if ((LeadId == null) || (LeadId == ""))
{
LeadId = "";
}
}
ContactRespList = zoho.crm.searchRecords("Contacts", "(Mobile|=|" + fromNumber + ")");
for each ContactRespinContactRespList
{
FinalId = ContactResp.get("CONTACTID");
if ((FinalId == null) || (FinalId == ""))
{
FinalId = "";
}
}
updateMap = { ("twilioext.Incoming_Message_Content") : messageContent, "twilioext.SMS_Texts_Name" : ("Incoming SMS"), "twilioext.Lead" : LeadId, "twilioext.Contact" : FinalId, "twilioext.Direction" : "Inbound" };
m = map();
l = List();
l.add(updateMap);
m.put("module", "twilio.SMS_Texts");
m.put("data", l);
resp = zoho.crm.invokeConnector("crm.create", m);
signalleadResp = zoho.crm.getRecordById("Leads", LeadId.toLong());
Leademail = signalleadResp.get("Email");
if ((Leademail != "") || (Leademail != null))
{
signalMap = map();
signalMap.put("signal_namespace", ("twilioext.incomingsmssignal"));
signalMap.put("email", Leademail);
signalMap.put("subject", ("Incoming SMS"));
signalMap.put("message", messageContent);
actionsList = List();
actionMap = map();
actionMap.put("type", "link");
actionMap.put("display_name", "View Email");
actionMap.put("url", "www.google.com");
actionsList.add(actionMap);
signalMap.put("actions", actionsList);
result = zoho.crm.invokeConnector("raisesignal", signalMap);
info result;
}
signalcontactResp = zoho.crm.getRecordById("Contacts", FinalId.toLong());
Contactemail = signalcontactResp.get("Email");
if ((Contactemail != "") || (Contactemail != null))
{
signalMapx = map();
signalMapx.put("signal_namespace", ("twilioext.incomingsmssignal"));
signalMapx.put("email", Contactemail);
signalMapx.put("subject", ("Incoming SMS"));
signalMapx.put("message", messageContent);
actionsListx = List();
actionMapx = map();
actionMapx.put("type", "link");
actionMapx.put("display_name", "View Email");
actionMapx.put("url", "www.google.com");
actionsListx.add(actionMapx);
signalMapx.put("actions", actionsListx);
resultx = zoho.crm.invokeConnector("raisesignal", signalMapx);
info resultx;
}
调用函数
独立函数是在自定义函数、自定义按钮、相关列表和计划内部调用的,如下所示。
resp = <EXTENSIONNAME>.Copy_Address("Leads", <LEADID>);
“Copy_Address”函数按以下形式生成输出 API 响应:
{"response":"{\"data\":[{\"code\":\"SUCCESS\",\"details\":
{\"Modified_Time\":\"2017-08-29T14:53:08+05:30\",\"Modified_By\":
{\"name\":\"Saranya \",\"id\":\"2641973000000124009\"},
\"Created_Time\":\"2017-08-29T14:28:16+05:30\",
\"id\":\"2641973000000128184\",\"Created_By\":{\"name\":\"Saranya \",
\"id\":\"2641973000000124009\"}},\"message\":\"record
updated\",\"status\":\"success\"}]}","status_code":200}
必要时,可按调用常规函数的形式调用 REST API 函数。
编辑函数
要编辑函数,请执行以下操作:
- 登录 Zoho Developer 控制台,然后选择 Zoho CRM 的扩展。
- 选择与您的函数关联的扩展,然后点击编辑。
- 在左窗格中点击自动化选项,然后点击函数。
- 从列表中选择所需的函数,然后点击编辑图标 [
]。 - 根据需求编辑并更新作出的更改。
删除函数
要删除函数,请执行以下操作:
- 登录 Zoho Developer 控制台帐户,然后选择 Zoho CRM 的扩展。
- 选择与您要删除的函数关联的扩展,然后点击删除。
- 在左窗格中点击自动化选项,然后点击函数。
- 选择您想要删除的函数,然后点击删除图标 [
]。
- 系统不支持在一个函数内部调用另一个函数。
- 系统也不支持为安装操作编写函数。


