首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》20.8.3 客服回复消息回调

关灯直达底部

客服给用户回复的消息、客服人员新增或删除事件,会通过HTTP协议回调给开发者。企业号在用HTTP协议推送时,会打上keep-alive选项。如果企业支持,则保持长链接,此链接根据消息量可以有多个。

注意事项如下。

1)回调时,一个数据包可包含多个消息或事件(多个Item节点)。

2)当回调失败时(连接失败、请求超时等),最大重试间隔为20分钟,最大重试时长为1天。

3)企业在收到数据包时,须回复XML中的PackageId节点值,表示成功接收;否则企业号侧认为回调失败。PackageId企业内唯一。

下述代码是一个客服回复消息示例。


<xml>    <Encrypt><![CDATA[ft7qUWhR9K88yVl7eGlAvb/uy24dLaJhJH+6QPbREAfzKRMrkCrh8UdS1zHXF    0RXKPdLHGGpM8LyDYlmouR9YT/g4OHHkww/pTmo3i7BRyoVnd6AOLREoUmViYG6OIuq8+pxt5Ccvy    F8haiqGFi31m4CIzOeSWLnIxYNk0JIH2aTbpCtNklavQpPq1ZNxihs7aogGi0D2aqnbuxmOZH+/WT    jaDcUUFOo4tAHuOIsgSyfZmQWvCoD/j/P1EEb69UZEiVczk13QHJIjEIFCJ3ogj+qHEQxZmhy9io    MVo/kKQ0dakNSavrNrPwFBuyB24Sw5vpf5s/ZIt6xqSt6OrjUAOJYGfkbL3shrrSXQu059InS7Pv    FqpUUOub99p45BH3znDpXyc7iFjM36a+WoSSxo8AVm/CjBuyIzpyN3rLI0t1PLrdvWPqjkg1ftelZ    fPFUBNS3XJrT8vGY68ElEZ/63si4rJyl4b1OMncSKp57sbiu+c7pBTNCjLLpPhxpt4M5ILWHrSVI6    g2yZgUbBePPOLnVYVnSX6SjUs29E7kHpmpZF0A3CCIsoEhL8AYu/8DNN3jTyZUIv4TcIZzgecZpTjp    av4ARfniOmlRebbWGI2w/AGwE7t6TcZkwAPucSJMKSMDFWFHQKA3TZezyTb6iDNkKI9Rfq/bkY0E0    p+TmicE=]]></Encrypt>    <ToUserName>wx82e2c31215d9a5a7</ToUserName>    <AgentID>32</AgentID>    <AgentType>kf_external</AgentType></xml>  

上述信息解密后的内容如下。其中包含了多个Item节点。


<xml>     <AgentType><![CDATA[kf_external]]></AgentType>      <ToUserName><![CDATA[wx82e2c31215d9a5a7]]></ToUserName>      <ItemCount>1</ItemCount>      <PackageId>429496738357997841</PackageId>          <Item>         <FromUserName><![CDATA[fangbei]]></FromUserName>          <CreateTime>1481034493</CreateTime>          <MsgType><![CDATA[text]]></MsgType>          <Content><![CDATA[67889]]></Content>          <MsgId>6211908899915519244</MsgId>          <Receiver>             <Type>openid</Type>              <Id>oiPuduGV7gJ_MOSfAWpVmhhgXh-U</Id>         </Receiver>     </Item>      <Item>         <FromUserName><![CDATA[fromUser]]></FromUserName>          <CreateTime>1348831860</CreateTime>          <MsgType><![CDATA[image]]></MsgType>          <PicUrl><![CDATA[this is a url]]></PicUrl>          <MediaId><![CDATA[media_id]]></MediaId>          <MsgId>1234567890123456</MsgId>          <Receiver>             <Type>userid</Type>              <Id>lisi</Id>         </Receiver>     </Item>      <Item>         <FromUserName><![CDATA[fromUser]]></FromUserName>          <CreateTime>1348831860</CreateTime>          <MsgType><![CDATA[file]]></MsgType>          <MediaId><![CDATA[media_id]]></MediaId>          <MsgId>1234567890123456</MsgId>          <Receiver>             <Type>userid</Type>              <Id>lisi</Id>         </Receiver>     </Item>      <Item>         <FromUserName><![CDATA[fromUser]]></FromUserName>          <CreateTime>1348831860</CreateTime>          <MsgType><![CDATA[voice]]></MsgType>          <MediaId><![CDATA[media_id]]></MediaId>          <MsgId>1234567890123456</MsgId>          <Receiver>             <Type>userid</Type>              <Id>lisi</Id>         </Receiver>     </Item>      <Item>         <FromUserName><![CDATA[fromUser]]></FromUserName>          <CreateTime>1348831860</CreateTime>          <MsgType><![CDATA[link]]></MsgType>          <Title><![CDATA[TITLE]]></Title>          <Description><![CDATA[DESCRIPTION]]></Description>          <Url><![CDATA[URL]]></Url>          <PicUrl><![CDATA[PIC_URL]]></PicUrl>          <MsgId>1234567890123456</MsgId>          <Receiver>             <Type>userid</Type>              <Id>lisi</Id>         </Receiver>     </Item>      <Item>         <FromUserName><![CDATA[fromUser]]></FromUserName>          <CreateTime>1348831860</CreateTime>          <MsgType><![CDATA[location]]></MsgType>          <Location_X>23.134521</Location_X>          <Location_Y>113.358803</Location_Y>          <Scale>20</Scale>          <Label><![CDATA[位置信息]]></Label>          <MsgId>1234567890123456</MsgId>          <Receiver>             <Type>userid</Type>              <Id>lisi</Id>         </Receiver>     </Item> </xml> 

上述数据的参数说明如表20-38所示。

表20-38 回调接口的参数说明

回调接口取得OpenID及类型、内容之后,再调用服务号客服接口发送给用户,这样就可以完成一个完整的客服闭环流程。服务号开发者向用户发送的客服消息转到企业号后,效果如图20-6所示。

图20-6 客服消息列表