微信公众平台--3.普通消息交互(发送与接收)
微信是一個聊天工具,實(shí)現(xiàn)消息交互是一個很基礎(chǔ)且重要的功能,在公眾號中,用戶關(guān)注后,可以給公眾號發(fā)消息,公眾號可以通過將消息轉(zhuǎn)發(fā)給客服接待或者是直接根據(jù)用戶發(fā)送的消息回復(fù)用戶。微信提供的文檔其實(shí)挺清楚的,但是初次看還是覺得亂亂的,到開發(fā)的差不多了反倒是覺得文檔清晰了。
一旦配置了開發(fā)者URL,很多消息都會發(fā)送到那個url上去處理,所以對于有些消息最好都處理一下,不處理要返回空串
(微信服務(wù)器在5秒內(nèi)收不到響應(yīng)就會斷掉連接,并且重新發(fā)起請求,總共重試三次。當(dāng)無法保證5秒內(nèi)處理并且回復(fù),可以回復(fù)空串,微信服務(wù)器不會對此做任何處理,且不會重試)
?
當(dāng)普通用戶向公眾號發(fā)消息時,微信服務(wù)器將POST消息的XML數(shù)據(jù)包到開發(fā)者填寫的URL。
?
消息包括:文本(text)、圖片(image)、語音(voice)、視頻(video)、小視頻(shortvideo)、地址位置(location)、鏈接(url)?7個類型
?
<xml><ToUserName><![CDATA[toUser]]></ToUserName> 開發(fā)者微信號<FromUserName><![CDATA[fromUser]]></FromUserName> 發(fā)送方賬號(一個OpenID)<CreateTime>1348831860</CreateTime> 消息創(chuàng)建時間(整型)<MsgType><![CDATA[text]]></MsgType> 消息類型text<Content><![CDATA[this is a test]]></Content> 文本消息內(nèi)容<MsgId>1234567890123456</MsgId> 消息id,64位整型</xml>?
?
post過去的數(shù)據(jù)類型都是類似于上面的xml數(shù)據(jù)包,PHP語言注意不能用$_POST接收的,其他語言要用相應(yīng)的方法去接受讀取消息。
通過解析上面的數(shù)據(jù)包就可以知道消息的類型和內(nèi)容了,然后可以在響應(yīng)包(Get)中返回特定的XML結(jié)構(gòu),來對該消息進(jìn)行響應(yīng)(現(xiàn)支持回復(fù)文本、圖片、圖文、語音、視頻、音樂)。
?
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> 接收方賬號 <FromUserName><![CDATA[fromUser]]></FromUserName> 開發(fā)者微信號 <CreateTime>12345678</CreateTime> 消息創(chuàng)建時間 <MsgType><![CDATA[text]]></MsgType> text <Content><![CDATA[你好]]></Content> 回復(fù)的消息內(nèi)容,能夠換行 </xml>?
以上是直接類似于自動回復(fù)的實(shí)現(xiàn),還可以將消息轉(zhuǎn)發(fā)給客服。
做法需要開發(fā)者在響應(yīng)包中返回MsgType為transfer_customer_service的消息,微信服務(wù)器收到響應(yīng)后會把當(dāng)次發(fā)送的消息轉(zhuǎn)發(fā)至多客服系統(tǒng),消息被轉(zhuǎn)發(fā)到多客服以后,會被自動分配給一個在線的客服帳號,您也可以在返回transfer_customer_service消息時,在XML中附上TransInfo信息指定分配給某個客服帳號。
轉(zhuǎn)發(fā)給多客服需要返回如下:
<xml><ToUserName><![CDATA[touser]]></ToUserName><FromUserName><![CDATA[fromuser]]></FromUserName><CreateTime>1399197672</CreateTime><MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>轉(zhuǎn)發(fā)給指定客戶需要返回如下:
<xml><ToUserName><![CDATA[touser]]></ToUserName><FromUserName><![CDATA[fromuser]]></FromUserName><CreateTime>1399197672</CreateTime><MsgType><![CDATA[transfer_customer_service]]></MsgType><TransInfo><KfAccount><![CDATA[test1@test]]></KfAccount></TransInfo></xml>用戶被客服接入以后,客服關(guān)閉會話以前,處于會話過程中時,用戶發(fā)送的消息均會被直接轉(zhuǎn)發(fā)至客服系統(tǒng)。當(dāng)會話超過2小時客服沒有關(guān)閉時,微信服務(wù)器會自動停止轉(zhuǎn)發(fā)至多客服,而將消息恢復(fù)發(fā)送至開發(fā)者填寫的url上。用戶在等待隊(duì)列中時,用戶發(fā)送的消息仍然會被推送至開發(fā)者填寫的url上。
?
轉(zhuǎn)載于:https://www.cnblogs.com/wyzs/p/5163189.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的微信公众平台--3.普通消息交互(发送与接收)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重构手法(一)之重新组织函数
- 下一篇: 边框和背景