微信多客服系统开发
1.客服增删改查
https://api.weixin.qq.com/customservice/kfaccount/add?access_token=ACCESS_TOKEN
更新客服类似
https://api.weixin.qq.com/customservice/kfaccount/update?access_token=ACCESS_TOKEN
post提交的数据格式如下:
{ "kf_account" : "test1@test", "nickname" : "客服1", "password" : "96e79218965eb72c92a549dd5a330112" }
从上面可以看到,没有对客服进行分组什么的概念,所以如果用到分组功能的话,需要在本地去存储上自己添加的所有客服,并且对客服进行分组,通过获取到列表后,再根据本地的规则对客服进行排序分组即可。
修改客服头像
http://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT
删除客服账号
https://api.weixin.qq.com/customservice/kfaccount/del?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT
2.获取客服列表
https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=ACCESS_TOKEN
通过该列表可以请求到所有的客服列表。
3.获取在线客服列表
用户想要选择客服进行咨询,这时候肯定是想选择有效的在线客服去咨询
https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token=ACCESS_TOKEN
获取的结果大致如下:
{ "kf_online_list": [ { "kf_account": "test1@test", "status": 1, "kf_id": "1001", "auto_accept": 0, "accepted_case": 1 }, { "kf_account": "test2@test", // 完整客服账号,格式为:账号前缀@公众号微信号 "status": 1, // 客服在线状态 1:pc在线,2:手机在线。若pc和手机同时在线则为 1+2=3 "kf_id": "1002", // 客服工号 "auto_accept": 0, // 客服设置的最大自动接入数 "accepted_case": 2// 客服当前正在接待的会话数 } ] }
4.创建会话
该接口为多客服的客服工号创建会话,将某个客户直接指定给客服工号接待,需要注意此接口不会受客服自动接入数以及自动接入开关限制。只能为在线的客服(PC客户端在线,或者已绑定多客服助手)创建会话。
https://api.weixin.qq.com/customservice/kfsession/create?access_token=ACCESS_TOKEN
POST数据示例如下: { "kf_account" : "test1@test", "openid" : "OPENID", "text" : "这是一段附加信息" //附加信息,文本会展示在客服人员的多客服客户端 }
当创建会话成功的时候会有事件推送到服务器上:
<xml> <ToUserName><![CDATA[touser]]></ToUserName> <FromUserName><![CDATA[fromuser]]></FromUserName> <CreateTime>1399197672</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[kf_create_session]]></Event> <KfAccount><![CDATA[test1@test]]></KfAccount> </xml>
可以根据这个去通知用户某个客服正在为其服务等通知消息。
5.获取客户会话状态 和 获取未接入的会话列表
当用户会话创建成功后,如果客服当前接待人数较多,则不会马上接入,而是进入了会话列表中。服务器可以定时的查看该用户的会话状态来为客户提供提供更友好的服务。
https://api.weixin.qq.com/customservice/kfsession/getsession?access_token=ACCESS_TOKEN&openid=OPENID
返回数据示例(正确时的JSON返回结果): { "createtime" : 123456789,// 会话接入的时间 "errcode" : 0, "errmsg" : "ok", "kf_account" : "test1@test"// 正在接待的客服,为空表示没有人在接待 }
获取未接入的会话列表
https://api.weixin.qq.com/customservice/kfsession/getwaitcase?access_token=ACCESS_TOKEN
开发者可以通过本接口获取当前正在等待队列中的会话列表,此接口最多返回最早进入队列的100个未接入会话。
返回数据示例(正确时的JSON返回结果): { "count" : 150, // 未接入会话数量,可能会大于下面的数目 "waitcaselist" : [ // 未接入会话列表,最多返回100条数据 { "createtime" : 123456789, // 用户来访时间,UNIX时间戳 "kf_account" : "test1@test",// 指定接待的客服,为空表示未指定客服 "openid" : "OPENID" // 客户openid }, { "createtime" : 123456789, "kf_account" : "", "openid" : "OPENID" } ] }
6. 获取指定客服的会话状态
https://api.weixin.qq.com/customservice/kfsession/getsessionlist?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT
开发者可以通过本接口获取某个客服正在接待的会话列表。
返回数据示例(正确时的JSON返回结果): { "sessionlist" : [ // 会话列表 { "createtime" : 123456789, // 会话创建时间,UNIX时间戳 "openid" : "OPENID" // 客户openid }, { "createtime" : 123456789, "openid" : "OPENID" } ] }
可以通过获取到该客服的会话状态信息,制定一个可靠的算法去估算出一个等待用户接入需要等待的时间,并且通知到客户。
7.转接会话
这个不能通过接口来实现,但是在客户端或者网页上可以实现。
当客服无法解决问题转接到其他客服手里或者由于其他原因需要转接的时候,会有事件推送到服务器上
<xml> <ToUserName><![CDATA[touser]]></ToUserName> <FromUserName><![CDATA[fromuser]]></FromUserName> <CreateTime>1399197672</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[kf_switch_session]]></Event> <FromKfAccount><![CDATA[test1@test]]></FromKfAccount> <ToKfAccount><![CDATA[test2@test]]></ToKfAccount> </xml>
8.关闭会话
当一个会话完成或者用户不愿意等待的时候,最好手动去关闭一个会话,否则这个会话在有效时间内总是存在的。
https://api.weixin.qq.com/customservice/kfsession/close?access_token=ACCESS_TOKEN
POST数据示例如下: { "kf_account" : "test1@test", "openid" : "OPENID", "text" : "这是一段附加信息" // 附加信息,文本会展示在客服人员的多客服客户端 }
会话关闭后,会有事件消息推送到服务器上:
<xml> <ToUserName><![CDATA[touser]]></ToUserName> <FromUserName><![CDATA[fromuser]]></FromUserName> <CreateTime>1399197672</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[kf_close_session]]></Event> <KfAccount><![CDATA[test1@test]]></KfAccount> </xml>
这是对多客服开发的一个简单的总结,还不完善,很多有待思考补充。