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

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

