3CX 整合中国地区的 ZOHO CRM 报错如何解决?

简介

虽然 ZOHO CRM 是经过 3CX 支持的 CRM,但是按照 3CX 的官方文档对接后会对接失败,报错如下所示:

那么本篇文档将介绍如何解决该问题,成功对接 ZOHO 中国的 CRM 系统。

错误原因

首先我们需要查找报错的原因,我发现在 refresh token 的时候,在 ZOHO 回复的信息当中,3CX 会读取其中两个值,一个是 access token,另一个是 api domain。

  • access token: 在与 CRM 对接过程中,access token 相当于是通向 CRM 的密钥。有了它才能 3CX 才可以与 CRM 进行 HTTP 对接。
  • api domain: ZOHO 在全球有好几个数据中心,不同地区的 ZOHO CRM 数据中心使用不同的 api domain 以区分。我们的 api 请求就是需要向这个 api domain 发起。

由于 ZOHO 不同地区的 api domain 不同,所以在 3CX 在执行 refresh token 这一步骤的时候会根据 ZOHO 返回的 api domain 来发起 API 响应。问题就出在这个 api domain 上。

笔者在查阅 ZOHO 中国的网站信息后发现,ZOHO 中国的 api domain 应为 https://www.zohoapis.com.cn而非 https://api.zoho.com.cn

所以这就是 ZOHO 中国发给我们的响应错误。我们已经跟 ZOHO 中国反馈了该问题,等他们修复后就可以直接使用 3CX 原版的 CRM 整合。

解决方式

那么现在要如何对接 3CX 与 ZOHO 中国的 CRM 对接呢。

我们通过修改模板来暂时解决这个问题。修改模板的时候建议使用支持语法高亮的文本编辑器操作,这边笔者使用的是 visual studio code。

  • 进入 3CX 网页管理界面 – 设置 – CRM 集成 – 服务器端 – 选择 ZOHO – 显示模板。
  • 将模板复制一份,在本地新建一个 zohocn.xml 文件,将模板拷贝进去并保存。
  • 我们需要修改第 2 行的 Name,3CX 中显示的 CRM 名称就是读取的这个参数,在这里我修改为 ZohoCN,以便和原有的 CRM 区分。

    也可以修改 Country 参数和 Version 参数。Country 参数在该模板中没有作用。Version 版本大于原有版本才可以在 3CX 中替换原有模板。

  • 45 和 46 行的意思是从 ZOHO 响应的信息中获取 access_token 和 api_domain 参数,我们这边不需要获取 api_domain 参数,直接删除 46 行即可。
  • 将所有的 [ApiDomain] 替换成 https://www.zohoapis.com.cn。总共有 6 处,vs code 中可以使用下方的方式全部替换。 

到此我们就修改完成了。保存文件并上传到 3CX 中。

上传完成后即可在下列菜单中看到我们刚才创建的 ZohoCN 了。

关于 Zoho CRM 和 3CX 对接的文档可以查看 Zoho CRM 对接

对接完毕后再让我们测试一下,发现已经没有报错了。