安排操作
我怎样才能...
有时,您可能希望扩展在安装或升级后立即运行自定义脚本。例如,您可能希望创建样本数据、向 CRM 用户或外部系统发送有关安装的电子邮件通知,或者启动批处理操作以使用大量数据填充新字段。此任务无法在自定义函数或工作流规则的帮助下完成。为帮助您完成此任务,Zoho Developer 允许您将安装后脚本与您的扩展捆绑到一起。
安装后脚本是要在安装或更新扩展后立即执行的一些代码小片段或命令。
创建安装后脚本
要向扩展添加安装后脚本,请执行以下操作:
- 登录 Zoho Developer 控制台,然后点击 Zoho CRM 的扩展。
- 选择您要修改的扩展,然后点击编辑。
- 在左窗格中选择安装操作。
- 选择扩展,然后点击安装时。
- 在 deluge 脚本编辑器中,编写所需代码。
- 如果要测试代码,请点击保存并执行,否则只需点击保存。
注
- 对于每个扩展,只能编写一个安装后脚本。
- 安装后脚本将在安装或更新扩展时自动触发。
- 此脚本只能触发一次。
InstallParamMap 变量
installParamMap 变量只能与安装后脚本配合使用以从 Zoho CRM 中获取以下数据:
- 机构 ID - 安装了扩展的 Zoho CRM 帐户的独有机构 ID。用于获取机构 ID 的语法为:
<variable_name>= input.installParamMap.get("organizationId");
- 安装者 ID - 安装扩展的用户的唯一 ID。用于获取安装者 ID 的语法为:
<variable_name>= input.installParamMap.get("installerId");
- IsInstall - 它用于检查该扩展是首次安装还是升级。此任务的语法为:
<variable_name>= input.installParamMap.get("isInstall");
- PreviousVersion - 表示更新时该扩展的先前版本的值。用于获取先前版本号的语法为:
<variable_name>= input.installParamMap.get("previousVersion");
示例
请考虑以下场景:安装扩展的用户希望通过电子邮件向 CRM 系统中的所有其他用户发送有关安装的提醒。可在简单的安装后脚本的帮助下完成此任务。
orgid = input.installParamMap.get("organizationId");
installerid = input.installParamMap.get("installerId");
isInstall = input.installParamMap.get("isInstall");
pversion = input.installParamMap.get("previousVersion");
sendmail
(
To : zoho.adminuserid
From : zoho.adminuserid
Subject : "Post Install script executed"
Message : "Installation details ---> OrgId = " + orgid + " : Installer Id = " + installerid + " : is Install = " + isInstall + " : previous version = " + pversion
)
执行此脚本时,系统会向 CRM 系统的管理员发送一封电子邮件,其中包含扩展的详细信息和安装扩展的用户。
同样,您可使用安装后脚本执行任何操作。
创建卸载后脚本
要创建卸载后脚本,请执行以下操作:
- 登录 Zoho Developer 控制台,然后点击 Zoho CRM 的扩展。
- 选择您要修改的扩展,然后点击编辑。
- 在左窗格中选择安装操作。
- 选择扩展,然后点击卸载时。
- 在 deluge 脚本编辑器中,编写所需代码。
- 如果要测试代码,请点击保存并执行,否则只需点击保存。
- 再次发布扩展以使此更改生效。
为连接器创建授权时脚本
有时您可能想要在对连接器授权后立即运行定制脚本。例如,您可能想要注册 webhook 或创建用户。这些目标无法使用自定义函数或工作流规则完成。为帮助您完成此目标,Zoho Developer 允许您创建附加脚本,此脚本将在对连接器授权后执行。
授权后脚本是要在对连接器授权后执行的代码小片段或命令。
要对连接器添加授权后脚本,请执行以下操作:
- 在 Zoho Developer 控制台主页中点击 Zoho CRM 的扩展。
- 选择连接器关联至的扩展。
- 在左窗格中点击安装操作。
- 选择连接器,然后点击授权时。
- 选择要在其中添加授权脚本的连接器。
- 在 Deluge 脚本编辑器中编写所需代码。
- 如果要测试代码,请点击执行,否则只需点击保存至连接器。
注
- 对于每个连接器,只能编写一个授权后脚本。
- 授权后脚本将在对连接器授权时自动触发。
- 每次对连接器授权时,都会触发此脚本。
示例
考虑以下场景:用户想要注册 webhook 以在外部系统中安排(创建)预约时通知 CRM 系统。如果收到通知这一事件与 CRM 系统中的任何用户操作或输入无关,那么可以通过添加连接器的授权后脚本来触发。因此,在 CRM 系统中使用具有该连接器的扩展时,系统将创建该 webhook。 同样,您可通过对连接器使用授权后脚本执行任何操作。
apiresponse = zoho.crm.invokeConnector("crm.zapikey", getmap);
zapikey = apiresponse.get("response");
crm_signal_webhook_url = "https://platform.zoho.com/crm/v2/settings/custom_function/acuityschedulingext.createevent/execute?zapikey=" + zapikey;
scheduledMap = { "triggerEvent" : "appointment.scheduled", ("targetUrl") : crm_signal_webhook_url };
response = zoho.crm.invokeConnector("acuityschedulingext.acuityscheduler.regsiterwebhook", scheduledMap);
info response;
webhookid = response.get("id");
setResp = zoho.crm.invokeConnector("crm.set", { "apiname" : "acuityschedulingext.webhookid", "value" : webhookid });
要注册 webhook,需要定义可展示为 REST API 的 deluge 函数。定义并保存此函数 (createevent) 后,系统将生成 REST API URL。此 URL (https://platform.zoho.com/crm/v2/settings/custom_functions/acuityscheduling .createevent) 是必须提供给第三方应用程序的 Webhook URL。此函数的代码如下所示:
appointmentId = resp.get("id");
getsingleappointmentMap = { "id" : appointmentId };
response = zoho.crm.invokeConnector(("acuityschedulingext.acuityscheduler.getsingleappointment"), getsingleappointmentMap);
responseMap = (response.get("response")).toMap();
fName = responseMap.get("firstName");
lName = responseMap.get("lastName");
mobile = responseMap.get("phone");
email = responseMap.get("email");
eventName = responseMap.get("type");
createContactMap = { "First_Name" : fName, "Last_Name" : lName, "Mobile" : mobile, "Email" : email };
m = map();
l = List();
l.add(createContactMap);
m.put("module", "Contacts");
m.put("data", l);
contactResp = zoho.crm.invokeConnector("crm.create", m);
info contactResp;
newContactResp = (contactResp.get("response")).toMap();
newDataMap = (newContactResp.get("data")).toMap();
contactId = newDataMap.get("id");
createEventMap = { "Event_Title" : eventName, "Who_Id" : contactId, "All_day" : false, "Start_DateTime" : ("2017-09-08T15:58:00+05:30"), "End_DateTime" : ("2017-09-08T15:58:00+06:30") };
mapp = map();
lapp = List();
lapp.add(createEventMap);
mapp.put("module", "Events");
mapp.put("data", lapp);
EventResp = zoho.crm.invokeConnector("crm.create", mapp);
info EventResp;
注
有关注册 webhook 的更多详细信息,请参阅有关自定义销售信号的指南。
在以上示例中,成功创建 webhook 后,每当在第三方应用程序中创建新预约时,系统会在联系人和活动模块中添加新记录。新创建的 webhook 的 ID 设置为机构变量,以便该 ID 的值在后续阶段全局可用。要设置机构变量,请遵循以下步骤:
- 在左窗格中点击扩展设置。
- 点击创建。
- 按如下所示输入值:
- 点击保存。
成功创建 webhook 后,将获取以下响应:
为连接器创建撤销时脚本
撤销连接器的授权后,可能需要废弃与该连接器相关联的工作流/操作。例如,您可能想要禁止用户发送邮件/短信。这些目标无法在自定义函数或工作流规则的帮助下完成。为帮助您实现此目标,Zoho Developer 允许您添加脚本(代码片段或命令),此脚本将在撤销连接器的授权时执行。
要添加连接器的撤销授权后脚本,请执行以下操作:
- 在 Zoho Developer 控制台主页中点击 Zoho CRM 的扩展。
- 选择连接器关联至的扩展。
- 在左窗格中点击安装操作。
- 选择连接器,然后点击撤销时。
- 选择您想要在其中添加脚本的连接器,此脚本将在撤销连接器的授权后执行。
- 在 Deluge 脚本编辑器中编写所需代码。
- 如果要测试代码,请点击执行,否则只需点击保存至连接器。
注
- 对于每个连接器,只能编写一个连接器撤销后脚本。
- 连接器撤销后脚本将在撤销对连接器的授权时自动触发。
- 每次撤销对连接器的授权时,都会触发此脚本。
示例
撤销对连接器的授权时,系统会删除所注册 webhook。
m = { "id" : webhookid };
resp = zoho.crm.invokeConnector("acuityschedulingext.acuityscheduler.deletewebhook", m);
m = { "apiname" : "acuityscheduling.webhookid", "value" : 0 };
setOrgVar = zoho.crm.invokeConnector("crm.set", m);
在采购时执行脚本
通过使用安装操作 - 采购时,您可在最终用户购买扩展时执行某些活动。您可以使用该脚本启用扩展中的某些功能、通知用户升级等等。
以下屏幕快照展示采购扩展时的屏幕 - 直接采购以及试用期之后的采购(可通过导航至设置 > 应用市场 > 全部 > 已安装并点击立即购买完成)。
要对扩展添加采购时脚本,请执行以下操作:
- 登录 Zoho Developer 控制台,然后点击 Zoho CRM 的扩展。
- 选择您要修改的扩展,然后点击编辑。
- 在左窗格中点击安装操作。
- 选择扩展,然后点击采购时。
- 在 deluge 脚本编辑器中,编写所需代码。
- 如果要测试代码,请点击保存并执行,否则只需点击保存。
注
- 此功能仅适用于付费扩展。
UpgradeMap 变量
upgradeMap 变量对采购时脚本可用,并可用于从 Zoho CRM 获取以下参数值:
- 机构 ID - 安装了扩展的 Zoho CRM 帐户的独有机构 ID。用于获取机构 ID 的语法为:
<variable_name>= input.installParamMap.get("organizationId");
- 安装者 ID - 安装扩展的用户的唯一 ID。用于获取安装者 ID 的语法为:
<variable_name>= input.installParamMap.get("installerId");
示例
考虑以下场景:您的 Creator 应用程序会跟踪扩展的升级和降级的数目。每当发生升级时,您可向此应用程序发布数据。
count = 0;
resp = getUrl("https://creator.zoho.com/api/json/sales-commissions/view/All_Commissions?authtoken=21XXXXe&scope=creatorapi&raw=true");
l = list();
l = resp.get("Commissions");
for each ele in l
{
uMap = ele.toMap();
Upgrade_count = uMap.get("Upgrade_Count");
Extension_Name = uMap.get("Extension_Name");
ID = uMap.get("ID");
if(Extension_Name == "acuityschext")
{
count = Upgrade_count + 1;
myMap = Map();
myMap.put("authtoken","21XXXXe");
myMap.put("scope","creatorapi");
myMap.put("Upgrade_Count",count);
myMap.put("criteria","Extension_Name=acuityschext");
resp = postUrl("https://creator.zoho.com/api/zoho_latha36/json/sales-commissions/form/Commissions/record/update",myMap);
info resp;
}
}
在方案降级时执行脚本
通过使用安装操作 - 方案降级时,您可创建并执行脚本,以在最终用户的扩展定价方案降级时执行操作。
付费扩展的最终用户可降级至免费版本。可通过两种方式进行:
- 因为最终用户未付款,扩展自动降级为免费版本。
- 最终用户选择放弃扩展的付费版本。在 CRM 应用程序中,最终用户通过在扩展详细信息页面中选择取消订阅(转至设置 > 应用市场 > 全部 > 已安装并选择所需扩展)完成此操作(请参阅以下屏幕快照)。
发生以下两种场景中的任何一种时,您可能需要执行某些操作。根据您是要禁用扩展中的某些功能、通知用户降级、发送调查链接以获取反馈、发送升级提醒等等,情况可能不同。
要对扩展添加方案降级脚本,请执行以下操作:
- 登录 Zoho Developer 控制台,然后点击 Zoho CRM 的扩展。
- 选择您要修改的扩展,然后点击编辑。
- 在左窗格中点击安装操作。
- 选择扩展,然后点击方案降级时。
- 在 deluge 脚本编辑器中,编写所需代码。
- 如果要测试代码,请点击保存并执行,否则只需点击保存。
注
- 此功能仅适用于付费扩展。
DowngradeMap 变量
downgradeMap 变量对方案降级脚本可用,并可用于从 Zoho CRM 获取以下参数值:
- 机构 ID - 安装了扩展的 Zoho CRM 帐户的独有机构 ID。用于获取机构 ID 的语法为:
<variable_name>= input.installParamMap.get("organizationId");
- 安装者 ID - 安装扩展的用户的唯一 ID。用于获取安装者 ID 的语法为:
<variable_name>= input.installParamMap.get("installerId");
示例
可向对扩展降级的用户发送调查链接。此调查可用于捕获有关用户选择退出扩展的付费版本的原因的详细信息。
sendmail
[
from :zoho.adminuserid
to :zoho.loginuserid
subject :"Extension Survey"
message :"Hi, we would like to know the reason why you downgraded the extension to a free version. Please respond to the survey and help us improve.
https://survey.zohopublic.com/zs/g1B3gM"
]