微信公众号多客服开发介绍

非开发者模式:如果公众号没有处于开发者模式,则只需要单纯的在 微信公众号后台进行设置就可以启用多客服功能

开发者模式:
用户发送消息时的2种情况:
         普通微信用户向公众号发消息时,微信服务器会先将消息POST到开发者填写的url上。
         开发者响应包有两种(普通消息响应包,带有启动多客服指令的包)
         如果希望将消息转发到多客服系统,需要开发者在响应包中返回MsgType为transfer_customer_service的消息,微信服务器收到响应后会把当次发送的消息以及之后一段            时间(2小时内)转发至多客服系统(系统会自动将用户分配给某个客服,也可指定客服)。
        交互的数据通过post,数据放在XML中
多客服流程如下:

1)用户发消息 

2)微信服务器接收并发送至开发者服务器(根据填写的url)      

3)开发者服务器处理信息并判断是否触发多客服           

4)  如果启用多客服返回一个MsgType为transfer_customer_service的消息给微信服务器     

5)   微信服务器将当前的信息以及该用户之后一段时间内(2个小时后自动断开,中间若客服关闭会话也断开) 

6) 信息转发至多客服系统  ,客服同该用户交流          

注意:多客服系统自动将该用户分配给某一在线客服(但也可以指定某一客服,需要在响应的的信息包中加上指定的客服信息,但如果该客服不在线,该消息不会转给其他客服,所以需要提前获取客服信息,通过get请求获取客服数据(json格式)

http请求方式: GET
https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token=ACCESS_TOKEN

返回说明

返回数据示例(正确时的JSON返回结果):
{
   "kf_online_list": [
       {
           "kf_account": "test1@test", 
           "status": 1, 
           "kf_id": "1001", 
           "auto_accept": 0, 
           "accepted_case": 1
       },
       {
           "kf_account": "test2@test", 
           "status": 1, 
           "kf_id": "1002", 
           "auto_accept": 0, 
           "accepted_case": 2
       }
   ]
}
多客服微信服务器和开发者服务器之间交互的3种数据包:
用户发送消息时微信服务器发给开发者的数据包:
<xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>              //开发者微信号
 <FromUserName><![CDATA[fromUser]]></FromUserName>       //发消息用户的openid
 <CreateTime>1348831860</CreateTime>                       //消息创建时间
 <MsgType><![CDATA[text]]></MsgType>                  //消息类型
 <Content><![CDATA[this is a test]]></Content>       //消息内容
 <MsgId>1234567890123456</MsgId>                           //消息id
 </xml>
开发者服务器返回数据的2种情况(普通,多客服)
1)启用多客服系统时返回给微信服务器的数据包:

<xml>
     <ToUserName><![CDATA[touser]]></ToUserName>         //发消息用户的openid
     <FromUserName><![CDATA[fromuser]]></FromUserName>  //开发者微信号
     <CreateTime>1399197672</CreateTime>                   //消息创建时间
     <MsgType><![CDATA[transfer_customer_service]]></MsgType>
 </xml>
2)普通情况开发者服务器返回给微信服务器的数据包:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>             //发消息用户的openid
<FromUserName><![CDATA[fromUser]]></FromUserName>         //开发者微信号
<CreateTime>12345678</CreateTime>                           //消息创建时间
<MsgType><![CDATA[text]]></MsgType>            //消息类型
<Content><![CDATA[你好]]></Content>              //消息内容

</xml>

//回复多客服消息例子
        private function transmitService($object)
       {
        $xmlTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>";
        $result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time());
        return $result;
}
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值