附加发行商
想要将应用程序发布到 Vtiger 市场? 通过使用 Publisher 打包您为应用程序所做的所有工作,可以轻松完成此操作。 这是步骤。
第一步
- 从以下位置注册开发者版帐户
点击此处
.
第一步
- 自定义以下内容:
-
配置工作流、流程、自定义字段等。
-
通过使用 API Designer 和 Module Designer 编写自定义代码进行扩展。
第一步
- 使用 Add-on Publisher 打包以下内容。
第一步
- 通过在另一个 Developed Edition 帐户上安装进行测试。
第一步
- 注册 Vtiger 市场并发布以供批准。
第一步
- 您的扩展将在批准后发布。
备注
:您需要注册 Vtiger Marketplace 才能发布扩展。 此帐户不同于开发者版注册。 您可以使用此帐户从任何 Vtiger 开发者帐户构建和发布。
附加发行商
想要将应用程序发布到 Vtiger 市场? 通过使用 Publisher 打包您为应用程序所做的所有工作,可以轻松完成此操作。 这是步骤。
第一步
- 从以下位置注册开发者版帐户
点击此处
.
第一步
- 自定义以下内容:
-
配置工作流、流程、自定义字段等。
-
通过使用 API Designer 和 Module Designer 编写自定义代码进行扩展。
第一步
- 使用 Add-on Publisher 打包以下内容。
第一步
- 通过在另一个 Developed Edition 帐户上安装进行测试。
第一步
- 注册 Vtiger 市场并发布以供批准。
第一步
- 您的扩展将在批准后发布。
备注
:您需要注册 Vtiger Marketplace 才能发布扩展。 此帐户不同于开发者版注册。 您可以使用此帐户从任何 Vtiger 开发者帐户构建和发布。
医生诊所使用 Vtiger CRM 创建、跟踪约会并发送患者提醒。 为此,他正在使用 Vtiger 事件模块,并希望在他诊所的监视器上显示这些约会。 所以当病人走进来时,他们可以看到预约队列。
该诊所有一个内部应用程序,可以存储约会详细信息并连接到监视器以显示它们。 当患者要求预约或安排预约时,CRM 代理将预约提供给事件模块。 此信息也需要传播到内部应用程序。
幸运的是,该应用程序具有可用于商店预约的 REST API。
使用我们的低代码平台,我们有很多方法可以解决这个问题。 让我们看看如何使用
VTAP JavaScript
解决这个问题的事件。
-
在 Vtiger 中创建 API 以将约会发送到内部应用程序。
-
在 Vtiger 中创建 CRM 事件记录时,订阅并收听 VTAP 事件。
-
当 CRM 用户保存事件记录时调用 API。
步骤1:
要从 Vtiger 连接到任何外部应用程序,我们需要从
API 设计器模块
. 这可以使用 Menu > Platform > Api Designer > Create Rest API 来完成。
给个名字
创建_约会
. 并选择事件模块。
API XML结构如下:
-
这是对 URL 的请求后调用。
-
Header 有一个与内部应用程序通信的秘密。
-
参数具有其格式所需的数据。
医生诊所使用 Vtiger CRM 创建、跟踪约会并发送患者提醒。 为此,他正在使用 Vtiger 事件模块,并希望在他诊所的监视器上显示这些约会。 所以当病人走进来时,他们可以看到预约队列。
该诊所有一个内部应用程序,可以存储约会详细信息并连接到监视器以显示它们。 当患者要求预约或安排预约时,CRM 代理将预约提供给事件模块。 此信息也需要传播到内部应用程序。
幸运的是,该应用程序具有可用于商店预约的 REST API。
使用我们的低代码平台,我们有很多方法可以解决这个问题。 让我们看看如何使用
VTAP JavaScript
解决这个问题的事件。
-
在 Vtiger 中创建 API 以将约会发送到内部应用程序。
-
在 Vtiger 中创建 CRM 事件记录时,订阅并收听 VTAP 事件。
-
当 CRM 用户保存事件记录时调用 API。
步骤1:
要从 Vtiger 连接到任何外部应用程序,我们需要从
API 设计器模块
. 这可以使用 Menu > Platform > Api Designer > Create Rest API 来完成。
给个名字
创建_约会
. 并选择事件模块。
API XML结构如下:
-
这是对 URL 的请求后调用。
-
Header 有一个与内部应用程序通信的秘密。
-
参数具有其格式所需的数据。
<url>https://IN-HOUSE-APP-ENDPOINT-FOR-APPOINTMENT-CREATION</url>
<headers>
<header name="secret" value="xxxxx"></header>
</headers>
<parameters>
<parameter name='CONTACT_NAME' value="@contact_name"></parameter>
<parameter name='APPOINTMENT_DATE' value="@app_date"></parameter>
<parameter name='APPOINTMENT_TIME' value="@app_time"></parameter>
<parameter name='LOCATION' value="@location"></parameter>
</parameters>
</rest>
<url>https://IN-HOUSE-APP-ENDPOINT-FOR-APPOINTMENT-CREATION</url>
<headers>
<header name="secret" value="xxxxx"></header>
</headers>
<parameters>
<parameter name='CONTACT_NAME' value="@contact_name"></parameter>
<parameter name='APPOINTMENT_DATE' value="@app_date"></parameter>
<parameter name='APPOINTMENT_TIME' value="@app_time"></parameter>
<parameter name='LOCATION' value="@location"></parameter>
</parameters>
</rest>
添加以上XML后,保存并发布。 这些 API 可以从外部(作为 REST API)调用到 CRM 中,使用
VTAP Javascript API
.
备注
:对于要访问 API 的任何外部应用程序,必须首先从 API Designer > 设置 > 添加域将域列入白名单。 否则系统会因未经授权的域访问而抛出错误。
-------------------------------------------------- ------------------------------
第一步
: 现在,我们需要注册,这样我们才能收听 VTAP 事件。 为此,您需要使用模块设计器。 转到菜单 > 平台 > 模块设计器 > 事件模块并添加 TAP 脚本 > 脚本名称 (SendEvent)。
您需要使用 VTAP.Event.Register 来监听 Record Save 事件(当用户单击 Save 按钮时)。 这里是
名单
收听其他事件。
TAP脚本结构如下:
添加以上XML后,保存并发布。 这些 API 可以从外部(作为 REST API)调用到 CRM 中,使用
VTAP Javascript API
.
备注
:对于要访问 API 的任何外部应用程序,必须首先从 API Designer > 设置 > 添加域将域列入白名单。 否则系统会因未经授权的域访问而抛出错误。
-------------------------------------------------- ------------------------------
第一步
: 现在,我们需要注册,这样我们才能收听 VTAP 事件。 为此,您需要使用模块设计器。 转到菜单 > 平台 > 模块设计器 > 事件模块并添加 TAP 脚本 > 脚本名称 (SendEvent)。
您需要使用 VTAP.Event.Register 来监听 Record Save 事件(当用户单击 Save 按钮时)。 这里是
名单
收听其他事件。
TAP脚本结构如下:
var Events_Component_SendEvent = VTAP.Component.Core.extend({
// created funtion is the entry point for any TAP Script
created(){
// Register for new record
VTAP.Event.Register('RECORD_CREATED',(module,record) => {
if(module == 'Events'){
let contactName = (record.contact_id && record.contact_id[0]) ? record.contact_id[0].label : 'No Name';
}
let params = {
contactName : contactName,
appointment_date : record.date_start,
appointment_time : record.time_start,
location : record.location
}
// Call the API created from API Desginer using VTAP.CustomApi.Post API
VTAP.CustomApi.Post('create_appointment',params,(error,success) => {
if(success){
VTAP.Utility.ShowSuccessNotification():
}
else{
let errorMsg = (error.message) ? error.message : error;
VTAP.Utility.ShowErrorNotification(errorMsg)
}
})
})
}
})
var Events_Component_SendEvent = VTAP.Component.Core.extend({
// created funtion is the entry point for any TAP Script
created(){
// Register for new record
VTAP.Event.Register('RECORD_CREATED',(module,record) => {
if(module == 'Events'){
let contactName = (record.contact_id && record.contact_id[0]) ? record.contact_id[0].label : 'No Name';
}
let params = {
contactName : contactName,
appointment_date : record.date_start,
appointment_time : record.time_start,
location : record.location
}
// Call the API created from API Desginer using VTAP.CustomApi.Post API
VTAP.CustomApi.Post('create_appointment',params,(error,success) => {
if(success){
VTAP.Utility.ShowSuccessNotification():
}
else{
let errorMsg = (error.message) ? error.message : error;
VTAP.Utility.ShowErrorNotification(errorMsg)
}
})
})
}
})