该集成方式主要针对有开发者的公众号集成,需要涉及到服务端程序的集成,因此需要首先将公众号设置为开发者模式,微信会将粉丝发送的信息及事件推送到设定的服务器地址上。
注意:使用微信回调模式集成需要先开通环信即时通讯云的“实时消息回调”功能。
回调模式集成包含如下步骤:
环信即时通讯云(IM)系统为移动客服系统与第三方服务器对接提供消息通道。采用回调模式集成时,需要先将IM系统与客服系统关联,具体方式为:在IM系统创建应用,将该应用绑定到客服系统中,形成一个APP关联。在移动客服系统,您可以快速创建一个这样的关联,并登录到IM后台管理该关联对应的应用。
步骤如下:
1. 打开环信移动客服,进入“管理员模式 > 渠道管理 > 手机APP”。
2. 点击“添加APP关联”按钮,创建APP关联。支持两种方式:快速创建、关联IM账号。
创建APP关联后,可以查看关联的APP信息,包括关联名称、AppKey、ClientId、ClientSecret等。对于快速创建的关联,您还可以点击“直接登录IM关联后台”,查看更多相关信息。
3. 点击“直接登录IM关联后台”,点击刚创建的应用,选择“IM用户→注册IM用户”,注册两个IM用户。例如:kefu001、kefu001_callback。
4. 返回移动客服系统,修改该“快速创建的关联”的基本信息,例如,将关联名称改为“微信公众号”,将IM服务号(及对应密码)改为“kefu001”及其密码,并保存。
1. 使用APP的ClientId和ClientSecret获取APP管理员Token,并记录下来。
详情请参考:获取APP管理员token。
2. 联系环信技术支持,开通实时消息回调。
需要向环信提供如下配置信息:
详情请参考:实时消息回调。
注:开通实时消息回调后,代表IM系统与第三方服务器成功关联起来。
在开发者中心设置的第三方服务器接收到微信推送过来的粉丝消息后,根据需要有选择的将消息发送给环信指定的API,环信会将该粉丝消息发送给客服人员,坐席回复后环信会将消息推送给第三方提供的API(符合环信格式),由第三方将客服人员回复消息发送给终端的粉丝用户。
投递到环信的消息格式及API使用方式可以参见发送消息,需要额外注意的只有消息格式的变化,需要在消息的扩展信息中添加上至少如下信息:
目前支持文本消息、图片消息、语音消息类型。
文本消息:
{ "target_type":"users",
"target":["kefu001"], //在环信移动客服中设置的关联IM账号
"msg":{
"type":"txt",
"msg":"这里是微信粉丝发送给公众号的文本信息"
},
"from":"kefu001_callback", //用于开通实时消息回调功能的IM账号
"ext" : {
"weichat":{
"visitor":{
"source" : "weixin", //来源渠道微信,固定值
"msgId" : "0c9a31ed-430b-4edf-9aaf-6029f2674534", //消息id
"openid": "oAGnbt89fTgfzOlybTmAh_7s3Z_g",
"mp":"gh_9856dc55a1ea", //微信公众号ID
"userNickname":"微信粉丝昵称",
}
}
}
}
图片消息:
{ "target_type":"users",
"target":["kefu001"], //在环信移动客服中设置的关联IM账号
"msg":{
"type":"img", //固定值
"filename":"name.jpg", //任意指定
"secret":"secretsecretsecretsecret", //任意指定,具体作用可见官网API文档
"url":"https://pic1.ooopic.com/uploadfilepic/sheji.jpg" //微信粉丝发送的图片url
},
"from":"kefu001_callback", //用于开通实时消息回调功能的IM账号
"ext" : {
"weichat":{
"visitor":{
"source" : "weixin", //固定值
"msgId" : "0c9a31ed-430b-4edf-9aaf-6029f2674534", //微信消息id
"openid": "oAGnbt89fTgfzOlybTmAh_7s3Z_g",
"mp":"gh_9856dc55a1ea", //公众号ID
"userNickname":"微信粉丝昵称", //粉丝昵称
}
}
}
}
语音消息:
{ "target_type":"users",
"target":["kefu001"], //在环信移动客服中设置的关联IM账号
"msg":{
"type":"audio", //固定值
"filename":"xsxuzhl20150810T182551.amr", //任意指定
"secret":"secretsecretsecretsecret", //根据需要指定,具体作用可见官网API文档
"url":"https://a1.easemob.com/easemob-demo/chatdemoui/chatfiles/yyueywueywhdsh" //微信粉丝发送的语音url,这里以把音频文件上传到环信服务器为例
},
"from":"kefu001_callback", //用于开通实时消息回调功能的IM账号
"ext" : {
"weichat":{
"visitor":{
"source" : "weixin", //固定值
"msgId" : "0c9a31ed-430b-4edf-9aaf-6029f2674534", //微信消息id
"openid": "oAGnbt89fTgfzOlybTmAh_7s3Z_g",
"mp":"gh_9856dc55a1ea", //公众号ID
"userNickname":"微信粉丝昵称", //粉丝昵称
}
}
}
}
说明:
目前环信移动客服系统只支持播放MP3格式的语音消息。使用回调模式投递语音消息到环信时,可以使用以下两种方式:
公众号开发者提供回调服务给环信,环信会将客服人员回复的消息发送给提供的服务上,回调的地址集成时可联系环信处理。
目前仅支持文本消息和图片消息类型。
环信回调到消息内容如下:
文本消息:
{
"timestamp": 1438837020808,
"chat_type": "chat",
"from": "kefu001", //在环信移动客服中设置的关联IM账号
"to": "kefu001_callback", //用于开通实时消息回调功能的IM账号
"payload": {
"bodies": [
{
"msg": "座席回复的消息",
"type": "txt"
}
],
"ext": {
"weichat": {
"visitor": {
"mp": "gh_9898dc96a1ea",
"openid": "oAGnbt89fTgfzOlybTmAh_7s3Z_g",
"userNickname": "微信粉丝昵称",
"source": "weixin"
}
}
}
},
"msg_id": "91363492593926564",
"callId": "easemob-demo#app_91363492593926564",
"eventType": "chat",
"security": "1d9b3a27574989826a034f02ece89161" //回调签名,见环信回调签名认证方式
}
图片消息:
{
"timestamp": 1438837366089,
"chat_type": "chat",
"from": "kefu001", //在环信移动客服中设置的关联IM账号
"to": "kefu001_callback", //用于开通实时消息回调功能的IM账号
"payload": {
"bodies": [
{
"filename": "8899a801f289.jpg",
"size": {
"width": 750,
"height": 500
},
"secret": "",
"type": "img",
"url": "https://a1.easemob.com/easemob-demo/xuzhengli/chatfiles/5bd56cb0-3bf8-11e5-b668-431280c88f48" //坐席回复的图片地址
}
],
"ext": {
"weichat": {
"visitor": {
"mp": "gh_9898dc86a1ea",
"openid": "oAGnbt89fTgfzOlybTmAh_7s3Z_g",
"userNickname": "微信粉丝昵称",
"source": "weixin"
}
}
}
},
"msg_id": "91364975632712188",
"callId": "easemob-demo#xuzhengli_91364975632712188",
"eventType": "chat",
"security": "27db399e77d4f422e50f5b529820ef64"
}
第三方服务器收到回调消息后,需要给环信服务器发送响应消息。响应内容不能超过1000个字符。
响应消息示例:
{
"callId":"",//与环信推送的一致
"accept":"true",//表明接受了此推送
"reason":"",//可选,accept为false时使用
"security":""//签名。格式如下: MD5(callId+约定的key+"true"),约定key为654321
}
注意:第三方服务器收到回调消息后的响应内容不能超过1000个字符,如果连续发送超长消息会导致回调接口被封禁。接收回调消息的第三方服务器需要保证回调接口高并发下的可用性,如果接收回调消息时出现504错误等,页面会因为响应消息过长而停止回调。