JivoChat CRM API 集成开发指南
将 JivoChat 与 CRM 系统集成的目的,是把 JivoChat 的数据保存到你 CRM 的线索/客户模块中,同时在 JivoChat 客服端应用(即 JivoChat 用户接收客户聊天的应用)中展示最新的信息(例如访客联系方式、线索详情、账户余额等)。
要启用集成,你只需在想激活集成的渠道设置中填入你的 CRM 或服务器的 Endpoint URL。填入后,我们会自动开始向该指定 URL 发送 Webhook,其中包含该渠道所有新会话的完整信息。
要填入接收 Webhook 的 URL,请打开 JivoChat 网页应用 或我们的桌面应用,进入“管理”→“渠道”→“设置”(位于渠道名称下方)。

接下来,进入“开发者集成设置”菜单,启用“启用 Webhooks”选项,并在“Webhooks Endpoint URL”字段中填入你的 Endpoint URL。

大功告成!从现在起,JivoChat 会自动将所有新会话的 Webhook 发送到指定的 URL。
JivoChat 系统在以下情况下会向指定 URL 发送 HTTP POST 请求:
- chat_accepted - 客服在应用中接受了聊天请求
- client_updated - 访客的联系数据已更新(由访客自行提供,或由客服编辑)
- chat_assigned - 聊天已关联到 CRM
- chat_finished - 聊天已结束(对话由客服在应用中点击“x”结束,或在访客离开网站后超时自动结束)
- chat_assigned - 客服点击“关联到 CRM”并粘贴链接,手动将访客关联到客户的 CRM 记录
- offline_message - 在客服离线期间,访客发送了离线消息
传输哪些数据
你可以参考我们的文档:https://www.jivochat.com/docs/
JivoChat 发送的主要数据:
- 聊天 ID
- 姓名、电子邮箱和电话号码
- 客户 ID - 注意:我们通过 cookie 而非 IP 识别访客
- 备注 - 在应用中你可以为访客设置备注

- 与客户聊天的客服的 ID、登录名和姓名 - 你可以利用这些信息在 CRM 中创建线索或客户账户。如果聊天在客服之间转接,你将收到包含所有客服数据的数组。
- 带时间戳的全部聊天消息
JivoChat 可以接收你的 CRM 系统返回的以下数据:
- 如果客户/线索所填写的邮箱或电话已存在于 JivoChat 系统中,可返回其完整联系信息。例如,访客在聊天中提供了邮箱,你的 CRM 可以返回该访客的姓名、电话号码和备注,并自动填充到 JivoChat 的联系信息字段中。
- 任何自定义数据,例如访客的余额、当前许可证、任何其他信息,以及 CRM 中其账户页面的链接:

- 我们会发送许多详细信息,例如访问来源、IP、城市、当前页面等。你可以将 JivoChat 访客详情页中的任何数据发送到你的 CRM。例如:如果用户已登录网站,或者发送了某个 ID(如 Google Analytics 用户 ID),可以通过 jivo_api.setUserToken 方法发送这些信息 - 按照下面的方式调用即可:
function jivo_onLoadCallback(){ jivo_api.setUserToken("a link | id | any data");}JivoChat 不会处理 user_token,也不会在任何地方显示它,只会将其所有数据原样传输给你的 CRM。
如何在服务器端接收 JivoChat 的数据
JivoChat 的 Webhook 请求是向指定 URL 发送的 HTTP POST 请求。请求体是一个 JSON 对象,包含你可以在文档中查看的所有数据。下面是一个 PHP 示例,演示如何接收请求并保存到日志文件中:
<?php$fp = fopen('/request.log', 'a');fwrite($fp, file_get_contents('php://input'));fclose($fp); ?>当然,这并不意味着你应该用文本文件来保存所有数据。这只是一个示例,可用于验证其工作方式以及请求的具体格式。接下来你应该解析这些数据,将其存入你的数据库,查找线索记录等等。之后,你的 CRM 应按照文档中的说明,在对象中返回客户数据。你可以直接使用 PHP 中的 echo 之类的函数,无需任何额外的 HTTP 头。
返回内容示例如下:
{"result":"ok","custom_data":[{"title":"Answer","content":"42"},{"title":"Last chat","content":"27 Sep 2016 19:37:12"}],"contact_info":{"name":"John Doe","phone":"+79500123567","email":"johny1337@jivoteam.com","description":"Visitor comment"},"enable_assign":true,"crm_link":"http:\/\/mycrm.ru\/user\/1"}在浏览器中的效果:

集成应该实现什么功能?
以下是用户对 CRM 系统集成通常的期望。
当你的 CRM 收到 JivoChat 系统的请求时(无论是发生 chat_accepted 还是 chat_updated 事件),它应该在 CRM 中查找该客户。如果存在具有指定联系信息的客户,你的 CRM 应将该客户的完整数据回填到 JivoChat,并插入一个指向 CRM 中该客户档案的链接。如果该客户在你的 CRM 中不存在,则应根据 JivoChat 传给 CRM 的已知数据,自动为其创建新的客户/线索账户。
线索记录的创建
- 有些 CRM 系统不仅有线索名称,还有线索标题。可以写成类似 JivoChat #18 - Tom Clifton 的形式
- 非常重要的一点是分配负责人。最好将 JivoChat 登录名与 CRM 登录名相同的客服分配为负责人,或分配给某个默认人员。
- 指定线索来源:JivoChat。这有助于查找来自聊天的线索。
- 显示访问来源和聊天开始的页面。JivoChat 不会在 Webhook 中发送这些信息,但如果可能,请使用 setUserToken。CRM 和聊天用户都想知道线索来自哪个渠道。如果能获取并显示 utm 标记就再好不过了。
- 添加关于访客的描述或备注,方便负责人或其他工作人员使用。
- 有些 CRM 系统要求填写某些字段才能添加线索。请检查这些字段为空时会发生什么。
- 收到离线消息时,CRM 系统应创建一个任务或邮件,并指定负责经理来处理该请求。或者直接添加一条线索。
- 将对话内容保存到线索记录中,可保存在备注(Notes)或动态(feed)中。
请留意数据的优先级。哪些数据会被记录或删除?如果用户在聊天中主动提供了自己的信息,给出了邮箱 A 和电话 B,而 CRM 中已存在一个邮箱为 A、电话为 C 的线索,应该保存哪个号码,旧的还是新的?如果 CRM 中有备用电话和备用邮箱字段,可能会更理想。