微信公眾號被動消息回復(fù)原理解析
背景:某分廠需要實時查詢工件堆放的位置,要求快速便捷,因此設(shè)計了采用微信公眾號被動回復(fù)信息的方案。
技術(shù)實現(xiàn):開發(fā)者服務(wù)器--基于Angular2框架的已發(fā)布網(wǎng)站,編程語言為Python,后臺存儲數(shù)據(jù)庫為Mysql;
微信服務(wù)器--微信公眾號,此業(yè)務(wù)只是處理微信客戶端發(fā)送的文本信息,且不使用公眾號的其他功能,因此不需要認證公眾號;
微信客戶端--關(guān)注公眾號的微信使用者,即粉絲。
當粉絲給公眾號發(fā)送特定的消息時,微信公眾號自動回復(fù)相應(yīng)內(nèi)容,而其背后的實現(xiàn)原理可由下圖所示:

由上圖可知,粉絲(微信客戶端)向公眾號(微信服務(wù)器)發(fā)送消息后,公眾號馬上將消息報文轉(zhuǎn)發(fā)給綁定的網(wǎng)站(開發(fā)者服務(wù)器),此時消息
傳送到了開發(fā)者的系統(tǒng)里。然后系統(tǒng)解析消息報文,得到消息內(nèi)容,再根據(jù)消息內(nèi)容,從業(yè)務(wù)數(shù)據(jù)庫中得到返回的消息文本,最終將消息文本包裝
成回復(fù)的消息報文(xml),返回給公眾號,公眾號再發(fā)送給請求的粉絲。
消息報文: 微信服務(wù)器轉(zhuǎn)發(fā)的消息報文格式如下:
<xml>
<ToUserName>![DATA[toUser]]</ToUserName> // 接收消息方,開發(fā)者微信號(公眾號AppID)
<FromUserName>![DATA[fromUser]]</FromUserName> //發(fā)送方賬號(OpenId)
<CreateTime>12356548575</CreateTime> //消息創(chuàng)建時間
<MsgType>![DATA[text]]</MsgType> //消息類型,text代表文本類型
<Content>![DATA[?18-546]]</Content> //消息內(nèi)容,本例為 ?18-546
<MsgId>1234567890123456</MsgId> //消息ID
</xml>
開發(fā)者服務(wù)器通過解析轉(zhuǎn)發(fā)的消息報文,得到發(fā)送方賬號(回復(fù)消息用)和消息內(nèi)容,然后通過一系列業(yè)務(wù)處理,生成回復(fù)消息報文,格式如下:
<xml>
<ToUserName>![DATA[userName]]</ToUserName> //接收消息方,微信客戶端賬號(OpenId)
<FromUserName>![DATA[fromUser]]</FromUserName> // 發(fā)送方賬號,(公眾號AppID)
<CreateTime>456251484</CreateTime> //消息創(chuàng)建時間
<MsgType>![DATA[text]]</MsgType> //回復(fù)的消息類型,text代表文本消息
<Content>![[[18-546]的工作臺位為[車體新廠房3號]]]</Content> //回復(fù)的消息內(nèi)容,本例為[18-546]的工作臺位為[車體新廠房3號]
</xml>
微信服務(wù)器接收到回復(fù)的消息報文后,通過解析,將內(nèi)容發(fā)送給微信客戶端,這樣客戶端接收到信息了。
注意事項: 1、開發(fā)服務(wù)器自接收到轉(zhuǎn)發(fā)的消息后,需要再5秒內(nèi)給予回復(fù),超過時間,則自動回復(fù)錯誤提示消息"該公眾號提供的服務(wù)出現(xiàn)故障,請稍后再試",
因此,業(yè)務(wù)處理時間最好不要大于5秒鐘;
2、回復(fù)消息內(nèi)容應(yīng)遵從公眾號信息內(nèi)容的設(shè)定,最好不要回復(fù)帶空格的消息,因為會出現(xiàn)不能正常回復(fù)的現(xiàn)象。
總結(jié)
以上所述是小編給大家介紹的微信公眾號被動消息回復(fù)原理解析,希望對大家啊有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
相關(guān)文章
C#ComboBox控件“設(shè)置 DataSource 屬性后無法修改項集合”的解決方法
這篇文章主要介紹了C#ComboBox控件“設(shè)置 DataSource 屬性后無法修改項集合”的解決方法 ,需要的朋友可以參考下2019-04-04
Win10下C# DateTime出現(xiàn)星期幾問題的解決方法
這篇文章主要介紹了Win10下C# DateTime出現(xiàn)星期幾問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10
c#使用簡單工廠模式實現(xiàn)生成html文件的封裝類分享
這篇文章主要介紹了運用了簡單工廠模式實現(xiàn)頁面靜態(tài)化封裝類,思路比較簡單,大家可根據(jù)自己的思路再擴展此類2014-01-01

