微信小程式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 }
參數說明
圖片訊息
使用者在客服工作階段中傳送圖片訊息時會產生以下資料包:
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 }
參數說明
進入會話事件
用戶在小程序「客服會話按鈕」進入客服會話時將產生以下資料包:
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" }
參數說明
##轉送訊息到客服工具#如果開發者希望訊息被轉發到客服工具處理,請依照下述結構回傳回應包。回應包的資料格式(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",
}
參數說明