构建 GoToMeeting 扩展
GoToMeeting 扩展允许用户在加入 Zoho CRM 后安排会议、邀请用户以及跟踪会议。通过 GoToMeeting,您可以使用高清视频会议和屏幕共享。安装此扩展程序后,您可以在一个位置跟踪会议。此指南包含以下主题。
ZohoCRM 的 GoToMeeting 扩展
此扩展允许用户主持会议或参加其他用户主持的会议。此扩展由 ZohoCRM 的第三方扩展创建,以便 ZohoCRM 用户可主持或参加会议。开发者可使用 Zoho Developer 控制台构建此扩展。基本上,开发者需要知道 GoToMeeting 遵循的用户身份验证类型。
ZohoCRM 的 GoToMeeting 扩展是通过使用连接器的 OAuth2.0 类型的身份验证构建的。连接器 API 是使用相应扩展创建和添加的,并已发布。
要创建连接器,请执行以下步骤:
- 导航至 Zoho Developer 控制台,点击 CRM 连接器的访问控制台。
- 在左窗格的连接器页签中点击创建连接器按钮。
- 填写必需信息。
- 连接器名称:GoToMeeting
- 描述:创建连接器以便在线开会。
- 服务名称:GoToMeeting
- 注册 URL:https://www.gotomeeting.com/
- 请求令牌 URL:https://api.citrixonline.com/oauth/authorize
- 访问令牌 URL:https://api.citrixonline.com/oauth/access_token
- 点击保存。
- 要获取客户 ID 和客户密钥,请访问以下 URL:https://developer.citrixonline.com/how-get-access-token-and-organizer-key。
- 在 GoToMeeting 凭证页面中,填写通过以上步骤获取的客户 ID 和客户密钥。
- 重定向 URL:https://platform.zoho.com/auth/conns/newcon/redirect
- 点击保存。
这将创建名为 GoToMeeting 的连接器。通过使用此连接器,可构建各种 API 以创建、更新和删除会议。创建连接器 API 后,每当更新客户凭证时,每次必须使用 GoToMeeting 连接器页面中的对连接器授权或对连接器重新授权按钮对连接器授权或重新授权。
创建会议
创建会议连接器 API 允许开发者使用所需信息安排会议,以主持会议。某些令牌在用于创建这类会议的请求正文中作为参数传递。使用以下步骤设置“创建会议”连接器。
- 在 Zoho Developer 控制台中,点击 CRM 连接器。
- 选择 GoToMeeting 连接器(位于左窗格中)。可在本文的先前章节中找到有关创建此连接器的指示信息。
- 提供以下信息:
- 指定连接器 API 名称:创建会议
- 选择方法类型:启用选项按钮 POST
- 指定 URL:https://api.citrixonline.com/G2M/rest/meetings
- 指定标题字段:Content-Type : application/json
- 请求正文:{ "subject": "${subject}", "starttime": "${start_time_unix_format}", "endtime": "${end_time_in_unix_format}", "passwordrequired":"${passwordrequired}", "conferencecallinfo": "${conferencecallinfo}", "timezonekey": "${timezonekey}" , "meetingtype": "${type}" }
- 点击创建。
- 点击执行。
- 按下文所示输入令牌的输入值,然后点击设置并执行。

以下 API 响应是使用所生成会议 ID 创建的。

删除会议
“删除会议”连接器 API 将根据会议 ID 值删除所安排会议。会议 ID 将作为参数传递至 API,以删除相应会议信息。使用以下步骤创建此 API:
- 在 Zoho Developer 控制台中,点击 CRM 连接器。
- 选择 GoToMeeting 连接器(位于左窗格中)。可在本文的先前章节中找到有关创建此连接器的指示信息。
- 填写必需信息。
- 指定连接器 API 名称:删除会议
- 选择方法类型:启用选项按钮 DELETE
- 指定 URL:https://api.citrixonline.com/G2M/rest/meetings
- 指定标题字段:Content-Type : application/json
- 点击创建。
- 按下图中所示输入会议 ID 后,点击执行。

执行时,系统将创建空响应,显示会议信息已被删除。
更新会议
“更新会议”连接器将根据所生成会议 ID 修改会议信息。会议 ID 将作为参数传递至 API,以更新相应会议信息。使用以下步骤创建此 API:
- 在 Zoho Developer 控制台中,点击 CRM 连接器。
- 选择 GoToMeeting 连接器(位于左窗格中)。可在本文的先前章节中找到有关创建此连接器的指示信息。
- 提供以下信息:
- 指定连接器 API 名称:更新会议
- 选择方法类型:启用选项按钮 PUT
- 指定 URL:https://api.citrixonline.com/G2M/rest/meetings
- 指定标题字段:Content-Type : application/json
- 请求正文:{ "subject": "${subject}", "starttime": "${start_time_unix_format}", "endtime": "${end_time_in_unix_format}", "passwordrequired":"${passwordrequired}", "conferencecallinfo": "${conferencecallinfo}", "timezonekey": "${timezonekey}" , "meetingtype": "${type}" }
- 点击创建。
- 点击执行。
- 输入要对其更新会议信息的会议 ID(如以下所示),然后点击设置并执行。

执行时,系统将使用所更新的相应会议 ID 的会话详细信息创建空响应。
即将到来的会议
“即将到来的会议”连接器将显示安排在稍后日期的即将到来的会议的详细信息的列表。使用以下步骤创建此 API。
- 在 Zoho Developer 控制台中,点击 CRM 连接器。
- 在连接器页面中,选择已通过先前步骤创建的 GoToMeeting 连接器(位于左窗格中)。
- 提供以下信息:
- 指定连接器 API 名称:即将到来的会议
- 选择方法类型:启用选项按钮 GET
- 指定 URL:https://api.citrixonline.com/G2M/rest/meetings
- 指定标题字段:Content-Type : application/json
- 点击创建。
- 点击执行。
这将生成以下 API 响应,所有即将到来的会议的详细信息将作为响应返回。

扩展定义过程
本节讨论 Zoho Developer 控制台的“定制”页签和“自动化”页签。连接器将添加至新扩展,您可测试其功能。
创建新的扩展
- 登录 Zoho Developer 控制台,然后点击为 Zoho CRM 构建扩展。
- 点击创建扩展。
- 在创建扩展页面中填写以下信息。
- 扩展名称:GoToMeeting
- 独有名称空间:GoToMeeting(选择独有名称空间,之后不能更改)
- 简短描述:用于安排和重新安排会议。
- 点击创建。
新扩展将显示在 Zoho Developer 控制台的扩展页面中。
添加连接器
- 在 Zoho Developer 控制台的 GoToMeeting 扩展中,点击左窗格中的 CRM 连接器。
- 点击添加连接器按钮。名为添加连接器的对话框将打开。
- 从下拉列表中选择 GoToMeeting 连接器,然后点击添加。
GoToMeeting 连接器将添加至扩展。可通过点击查看所有 API 来查看连接器 API。
创建自定义按钮
在“线索”、“联系人”和“客户”模块中创建名为“安排会议”的自定义按钮以创建会议。
- 在 Zoho Developer 控制台中,点击定制。
- 选择链接和按钮页签。
- 点击创建新按钮。
- 提供以下详细信息:
- 您要在哪个模块中创建新按钮? - 选择联系人
- 您要对按钮指定什么名称? - 输入安排会议
- 您要将按钮放在什么位置? - 选择列表视图页面
- 您希望按钮执行什么操作? - 选择调用 URL
- 在构造 URL 中,输入 https://crm.zoho.com/crm/gotomeeting/createmeeting?module=Contacts&rec_id=${Contacts.Contact Id}&rec_name=${Contacts.Email}
- 您希望在什么位置显示按钮操作的内容? - 选择新窗口
- 点击保存。
重复相同步骤以将安排会议按钮放在线索和客户模块中(通过构造相应 URL 信息)。
在“活动”模块中创建自定义字段
- 在 Zoho Developer 控制台中,在左窗格中点击定制。
- 选择字段页签。
- 从模块列表中选择活动,然后点击新建自定义字段。
- 在活动中创建以下自定义字段:创建自定义字段

用于删除会议的工作流
- 在 Zoho Developer 控制台中,点击左窗格中的自动化,然后选择工作流。
- 选择规则页签,然后点击创建规则按钮
- 按如下所示填写详细信息:
基本信息
- 模块:活动
- 规则名称:删除会议
- 描述:使用会议 ID 删除会议
- 点击下一步
规则触发器
- 执行依据:选择记录操作
- 选择删除,然后点击下一步
规则条件
- 从相应列表框中选择会议 ID 和非空。
- 点击下一步
操作
在即时操作下,
- 导航至调用自定义函数,然后点击 +
在函数编辑器部分下
- 工作流自定义函数:选择活动时,在所提供文本框中输入 DeleteMeeting。
在编辑器区域中写入 Deluge 脚本中给定的以下自定义函数,然后点击保存并关联按钮。
gmeetingId = input.event.get("gotomeeting4.Meeting_ID");
deleteResp ={"meetingId": gmeetingId.toLong()};
respMap=zoho.crm.invokeConnector("Gotomeeting.gotomeeting.deletemeeting", deleteResp);}- 点击执行,输入通过先前步骤创建的活动 ID 和会议 ID,然后选择提交。
这将生成显示会议信息的空响应(指示相应会议已被删除)。要进行测试,请先执行“删除会议”连接器,然后执行“即将到来的会议”连接器,最后检查该会议详细信息是否已从所安排会议列表中删除。
用于更新会议的工作流
- 在 Zoho Developer 控制台中,点击左窗格中的自动化,然后选择工作流。
- 选择规则页签,然后点击创建规则按钮
- 按如下所示填写详细信息:
基本信息
- 模块:活动
- 规则名称:更新会议
- 描述:使用会议 ID 更新会议信息
- 点击下一步
规则触发器
- 执行依据:选择记录操作
- 选择编辑,然后点击下一步
规则条件
- 从相应列表框中选择会议 ID 和非空。
- 点击下一步
操作
在即时操作下
- 导航至调用自定义函数,然后点击 +
在函数编辑器区域中
- 工作流自定义函数:选择活动时,在所提供文本框中输入 UpdateMeeting。
在编辑器区域中写入 Deluge 脚本中给定的以下自定义函数,然后点击保存并关联按钮。
getEventID = input.event.get("Events.ID");
getRecordInfo = zoho.crm.getRecordById("Events",( getEventID).toLong());
meetingId =(getRecordInfo).get("Meeting ID");if((meetingId !=null)&&(meetingId !="")){
joinURL =(getRecordInfo).get("Meeting Join URL");
callInformation =(getRecordInfo).get("Meeting Call Information");
startTime =(getRecordInfo).get("Start DateTime");
endTime =(getRecordInfo).get("End DateTime");
subject =(getRecordInfo).get("Subject");
meetingType =(getRecordInfo).get("Meeting Type");
a = startTime.toTime();Time= a.toString("yyyy-MM-dd'T'hh:mm:ss'Z'","Etc/UTC");
b = endTime.toTime();Time1= b.toString("yyyy-MM-dd'T'hh:mm:ss'Z'","Etc/UTC");
passwordrequired =(getRecordInfo).get("Password Required");
timeZone =(getRecordInfo).get("Time Zone");
meetingAudioType =(getRecordInfo).get("Meeting Audio Type");if(meetingAudioType =="VoIP Only"){
conferencecallinfo ="VoIP";}elseif(meetingAudioType =="Conference Only"){
conferencecallinfo ="Hybrid";}elseif(meetingAudioType =="Both"){
conferencecallinfo ="Free";}elseif(meetingAudioType =="Private"){
conferencecallinfo ="Private";}
updateResp ={"meetingId": meetingId.toLong(),"subject": subject,"start_time_unix_format":Time,"end_time_in_unix_format":Time1,"passwordrequired":passwordrequired,"conferencecallinfo": conferencecallinfo,"timezonekey": timeZone,"type": meetingType };
respMap = zoho.crm.invokeConnector("Gotomeeting.gotomeeting.updatemeeting", updateResp);
info respMap;}Map=zoho.crm.invokeConnector("Gotomeeting.gotomeeting.deletemeeting", deleteResp);- 点击执行。
- 输入通过先前步骤创建的活动 ID 和会议 ID,然后选择提交。
这将生成带有所更新会议详细信息的响应。要进行测试,请先执行“更新会议”连接器,然后执行“即将到来的会议”连接器,最后查找对应相应会议 ID 的所更新会议详细信息。




