讀古今文學網 > 微信公眾平台開發:從零基礎到ThinkPHP5高性能框架實踐 > 20.8.3 客服回復消息回調 >

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 客服消息列表