函数

函数

我怎样才能...

函数是用户定义类型的例程,每当调用时执行一组特定操作。它们在 Zoho Developer 中定义为使用 Deluge 脚本编写的独立函数,不依赖于任何模块。所以,可在任何工作流中调用这些函数以实现指定功能。

返回类型和自变量

  • 可将受支持数据类型的单个或多个自变量作为参数传递至函数。
  • 函数可返回具有某个受支持数据类型的值。
  • 受支持数据类型为:整数、浮点、字符串、布尔值、日期、映射和列表。

函数类型

Zoho Developer 中的函数分类为常规函数和 REST API 函数。

创建函数

常规函数

这些函数是在其他工作流自定义函数、自定义按钮、相关列表和计划中调用的。

要创建函数,请执行以下操作:

  1. 登录 Zoho Developer 控制台,然后点击 Zoho CRM 的扩展
  2. 选择要为其创建函数的扩展,然后点击编辑
  3. 在左窗格中点击自动化,然后点击函数
  4. 函数页面中点击创建函数
  5. 创建函数页面中,填写以下详细信息:
    • 函数名称
    • 作为 REST API 调用 - 对于常规函数,请选择“否”,对于 REST API 函数,请选择“是”。
    • 选择函数的返回类型
    • 点击“添加自变量”(如果存在),然后指定自变量名称和类型。
  6. 点击保存

下面给出 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 键的值:

  • 自定义函数
  • 安装脚本
使用自定义函数
  1. 发布包含 REST API 函数的扩展并安装该扩展。
  2. 登录您的应用程序。
  3. 转至设置 > 自动化 > 操作,然后选择函数页签。
  4. 点击配置函数按钮。
  5. 点击编写自己的函数链接。
  6. 在 Deluge 脚本编辑器中,粘贴以下代码片段并点击保存并执行脚本
     

    m = {"nameSpace" : "<portal_name.extension_namespace>"};

    apikeyresp = zoho.crm.invokeConnector("crm.zapikey",m);

    zapikey = apikeyresp.get("response");

    info zapikey;

  7. 该 ZAPI 键将显示在日志消息中。
使用安装脚本
  1. 登录 Zoho Developer 控制台,然后点击 Zoho CRM 的扩展
  2. 选择包含 REST API 函数的扩展,然后点击编辑
  3. 从左窗格中选择自定义属性
  4. 点击创建按钮。
  5. 字段名称API 名称字段中输入值,然后点击保存
    此变量在安装脚本中用于存储 REST API 函数的 URL(以下步骤中将说明详细信息)。
  6. 在左窗格中选择安装操作
  7. 点击扩展 - 安装时
  8. 在 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;

  9. 发布包含 REST API 函数的扩展并安装该扩展。
  10. 登录您的应用程序。
  11. 转至设置 > 应用市场 > 全部 > 已安装,然后点击扩展名称。
    变量“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 函数。

编辑函数

要编辑函数,请执行以下操作:

  1. 登录 Zoho Developer 控制台,然后选择 Zoho CRM 的扩展
  2. 选择与您的函数关联的扩展,然后点击编辑
  3. 在左窗格中点击自动化选项,然后点击函数
  4. 从列表中选择所需的函数,然后点击编辑图标 []。
  5. 根据需求编辑并更新作出的更改。

删除函数

要删除函数,请执行以下操作:

  1. 登录 Zoho Developer 控制台帐户,然后选择 Zoho CRM 的扩展
  2. 选择与您要删除的函数关联的扩展,然后点击删除
  3. 在左窗格中点击自动化选项,然后点击函数
  4. 选择您想要删除的函数,然后点击删除图标 []。
  •  系统不支持在一个函数内部调用另一个函数。
  • 系统也不支持为安装操作编写函数。

还没有找到您需要的内容?

请发送邮件给我们:support@zohocorp.com.cn