跳转到内容
无痕工具库 无痕工具库

JivoChat Chat API 详解:全渠道客服消息接口使用指南

Chat API 让你能够处理来自任意渠道的客户请求,无论是移动应用、桌面应用,还是网站上完全自定义的聊天窗口。客服在 JivoChat 应用中接收这些会话的方式与其他渠道完全相同。

此集成使用 Webhooks 机制。JivoChat 提供一个端点用于接收渠道状态和传输客户消息;而在被集成系统一侧,也需要有一个端点用于将客服的回复传输给客户。

JivoChat 端点包含一个随机字符串以防止暴力破解攻击,同时还包含渠道标识符 JIVO_PUBLIC_ID。

要生成你专属的 JivoChat 端点,请登录 JivoChat 网页应用 或我们的某个桌面应用,然后前往 管理(Manage) -> 添加渠道(Add Channels) -> Chat API。

点击连接 Chat API(Connect chat API)。

输入渠道名称、你的 webhook 服务器 URL,选择是否启用分块传输编码(chunked encoding)选项,选择哪些客服将负责接收你所创建渠道的会话,完成后点击添加渠道(Add channel)。

现在你专属的 JivoChat 端点 URL 已生成,可以使用了。

完成!接下来你只需查看我们下方的其余说明,了解如何使用生成的端点即可。

总体工作原理

集成的主要工作流程

title JivoSite-Webhooks Channel

Customer API->JivoSite: Channel Status HTTP GET
JivoSite->Customer API: Online (1)
Customer API->User: Show custom chat window
User->Customer API: Type User Message
Customer API->JivoSite: User Message HTTP POST
JivoSite->Agent: User Message
Agent->JivoSite: Agent Message
JivoSite->Customer API: Agent Message HTTP POST
Customer API->User: Draw Agent Message

协议说明

Customer API->JivoSite: 聊天状态

GET https://wh.jivosite.com/<some random string>/JIVO_PUBLIC_ID/status

标准响应为 200 OK,响应体为一个整数: 0 - 聊天不可用。客服离线,或聊天窗口已从网站上移除 1 - 聊天可用。客服在线

如果 JivoSite 中不存在 JIVO_PUBLIC_ID 对应的渠道,服务器将返回状态为 404 的 HTTP 响应。

如果响应异常,建议立即通知我们。

Customer API->JivoSite: 用户消息

POST https://wh.jivosite.com/<some random string>/JIVO_PUBLIC_ID
{
"sender" :
{
"id" : "12345",
"name" : "John Doe",
"photo" : "https://example.com/photo.jpg",
"url" : "https://ya.ru/simple/page.html",
"phone" : "12345678901",
"email" : "john@doe.сom",
"invite" : "Hello! Can I help you?"
},
"message" :
{
"type" : "text",
"id" : "customer_message_id",
"text" : "User Message Text"
}
}

sender.id(必填,字符串或整数)客户在 Customer API 中的标识符。如果该字段为空或缺失,消息将不会被传输。

sender.name, phone, email(可选字段,字符串)如果 JivoSite 收到这些字段,会将收到的信息展示给客服。如果没有收到,会话中客户的信息将显示为“匿名(Anonymous)”。这些值可以在会话过程中更新。

sender.photo(可选)客户头像图片链接。链接应以 “http: //” 或 “https: //” 开头。推荐图片尺寸为 128 * 128 px,格式为 png | jpg | gif。应用程序会尝试显示这些图片,但不保证显示效果完全正确。

sender.invite(可选)邀请文本。其功能类似于聊天窗口中“以客服身份发送邀请”(触发器动作)的功能。邀请的展示逻辑由 Customer API 一侧的会话实现,而邀请文本可以发送到 sender.invite 字段,客服将能看到它并了解客户是在什么背景下发起咨询的。

message.id(消息标识符)消息在 Customer API 中的标识符。除日志外,它不会在任何地方显示。它将在下一版本中用于送达/已读通知。

message.type(必填)常量 “text”。暂不支持其他消息类型,但未来将会支持。

message.text(type == text 时必填)客户消息字符串,最多 1000 个字符。如果超过 1000 个字符,我们将截断该消息。

标准响应为 200 OK。如果响应代码不是 200,建议立即通知我们。

如果 JivoSite 中不存在 JIVO_PUBLIC_ID 对应的渠道,服务器将返回状态为 404 的 HTTP 响应。

JivoSite->Customer API: 客服消息

POST <Customer API HTTPS-endpoint URL>/JIVO_PUBLIC_ID
{
"sender" : {
"name" : "Agent Name",
"photo" : "Agent Photo URL"
},
"recipient" : {
"id" : "12345"
},
"message" : {
"type" : "text",
"id" : "jivo_message_id",
"text" : "Agent Message Text"
}
}

sender.name(客服姓名)发送该消息的客服姓名。

sender.photo(图片链接)客服头像。

recipient.id(客户标识符)客户在 Customer API 中的标识符。我们会从收到的消息中获取该值,并将其原样传回。

message.id(消息标识符)消息在 JivoSite 中的标识符。将来会用于送达/已读通知。

标准响应为 200 OK。

响应体为 JSON 格式:

{
"result" : "ok"
}

或

{
"error" :
{
"code" : <error code>,
"message" : "<human-readable error message>"
}
}

错误信息将显示在 JivoSite 的会话中,供客服查看。根据错误代码的不同,它也可能不显示。

消息输入状态通知

要通知消息输入状态,可使用带有类型标识的消息: type: “typein” - 开始输入消息。 type: “typeout” - 结束输入消息。 该类型消息中的其他字段将被忽略。

此机制在两个方向上的工作方式完全相同:从 JivoSite 到 Customer API,以及从 Customer API 到 JivoSite。

多媒体消息

多媒体消息的传输方式与文本消息相同,但它们具有特殊的 type 值和附加字段。下方列出了每种受支持的媒体类型所需的字段构成及 type 字段的值。

type 字段值必填的附加字段类型
videofile, file_name, file_size视频
audiofile, file_name, file_size音频
voicefile, file_name, file_size语音消息
photofile, file_name, file_size图片
stickerfile, file_name, file_size贴纸
documentfile, file_name, file_size文件(文件链接)
locationlatitude, longitude地理位置

多媒体消息的可选字段如下:

多媒体消息字段说明
string filehttp(s) 文件 url
string thumbhttp(s) 缩略图 url(w320px)
string emoji可用 unicode 字符替代媒体内容
number file_size文件大小(字节),正整数
string file_name用户自定义文件名
number duration时长(秒),正整数
number width宽度(像素),正整数
number height高度(像素),正整数
string text文本消息或评论
string performer作者(作曲者、表演者等)
string title标题
number latitude纬度(实数)
number longitude经度(实数)

消息重发

事件以 http(s) 请求的形式发送到 Customer API 服务器,每 3 秒发送一次,共发送 3 次,直到收到有效的成功响应为止。这给了服务器 6 秒的时间来更新软件,这在大多数情况下已经足够。如果服务器不可用,将在 9 秒后返回错误事件。这些默认设置可以让你快速收到发送方的响应。如果发生超时或 Customer API 错误,客服将在会话中看到一条错误消息。

Chunked 请求

JivoSite 向 Customer API 发送请求时,既可以包含 Content-Length 字段,也可以使用 Chunked 编码。