微信小程式API 接收訊息和事件


接收訊息和事件


在頁面中使用 <contact-button/> 可以顯示進入客服會話按鈕。

當使用者在客服會話發送訊息(或進行某些特定的使用者操作引發的事件推送時),微信伺服器會將訊息(或事件)的封包(JSON或XML格式)POST請求開發者填寫的URL。開發者收到請求後可以使用發送客服訊息介面進行非同步回覆。

微信伺服器在將使用者的消息發給小程式的開發者伺服器位址(開發設定處配置)後,微信伺服器在五秒內收不到回應會斷掉連接,並且重新發起請求,總共重試三次,如果在偵錯中,發現用戶無法收到回應的訊息,可以檢查是否訊息處理逾時。關於重試的消息排重,有msgid的消息推薦使用msgid排重。事件類型訊息推薦使用FromUserName + CreateTime 排重。

伺服器收到請求如果#不需要轉發到客服工具#,必須做出下述回复,這樣微信伺服器才不會對此作任何處理,並且不會發起重試,否則,將出現嚴重的錯誤提示。詳見以下說明:

1、直接回复success(推荐方式)
2、直接回复空串(指字节长度为0的空字符串,而不是结构体中content字段的内容为空)

一旦遇到以下情況,微信都會在小程式會話中,向使用者下發系統提示「該小程式客服暫時無法提供服務,請稍後再試」:

1、开发者在5秒内未回复任何内容
2、开发者回复了异常数据

如果開發者希望把訊息或事件轉送到客服工具,請參考轉送訊息到客服工具。客服工具存取請參考客服工具使用說明

如果開發者希望增強安全性,可以在開發者中心處開啟訊息加密,這樣,用戶發給小程式的訊息以及小程式被動回覆用戶訊息都會繼續加密,詳見訊息加解密說明。

各訊息類型的推送JSON、XML封包結構如下。

文字訊息

使用者在客服工作階段中傳送文字訊息時將產生以下封包:

XML 格式

<xml>
   <ToUserName><![CDATA[toUser]]></ToUserName>
   <FromUserName><![CDATA[fromUser]]></FromUserName>
   <CreateTime>1482048670</CreateTime>
   <MsgType><![CDATA[text]]></MsgType>
   <Content><![CDATA[this is a test]]></Content>
   <MsgId>1234567890123456</MsgId>
</xml>

JSON  格式

{
    "ToUserName": "toUser",
    "FromUserName": "fromUser",
    "CreateTime": 1482048670,
    "MsgType": "text",
    "Content": "this is a test",
    "MsgId": 1234567890123456
}

參數說明

201609261355055576.pngQQ截图20170208152517.png

圖片訊息

使用者在客服工作階段中傳送圖片訊息時會產生以下資料包:

XML 格式

<xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1482048670</CreateTime>
      <MsgType><![CDATA[image]]></MsgType>
      <PicUrl><![CDATA[this is a url]]></PicUrl>
      <MediaId><![CDATA[media_id]]></MediaId>
      <MsgId>1234567890123456</MsgId>
</xml>

JSON  格式

{
    "ToUserName": "toUser",
    "FromUserName": "fromUser",
    "CreateTime": 1482048670,
    "MsgType": "image",
    "PicUrl": "this is a url",
    "MediaId": "media_id",
    "MsgId": 1234567890123456
}

參數說明

QQ截图20170208152543.png

進入會話事件

用戶在小程序「客服會話按鈕」進入客服會話時將產生以下資料包:

XML 格式

<xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>  
    <FromUserName><![CDATA[fromUser]]></FromUserName>  
    <CreateTime>1482048670</CreateTime>  
    <MsgType><![CDATA[event]]></MsgType>  
    <Event><![CDATA[user_enter_tempsession]]></Event>  
    <SessionFrom><![CDATA[sessionFrom]]></SessionFrom> 
</xml>

JSON 格式

{
    "ToUserName": "toUser",
    "FromUserName": "fromUser",
    "CreateTime": 1482048670,
    "MsgType": "event",
    "Event": "user_enter_tempsession",
    "SessionFrom": "sessionFrom"
}

參數說明

QQ截图20170208152556.png

##轉送訊息到客服工具

#如果開發者希望訊息被轉發到客服工具處理,請依照下述結構回傳回應包。回應包的資料格式(XML或JSON)需要與設定的接收訊息資料格式一致。

XML 格式
<xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>1482048670</CreateTime>
    <MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>
JSON 格式
{
    "ToUserName": "toUser",
    "FromUserName": "fromUser",
    "CreateTime": 1482048670,
    "MsgType": "transfer_customer_service",
}
參數說明

QQ截图20170208152611.png