微信公眾號被動消息回復(fù)原理解析
背景:某分廠需要實(shí)時查詢工件堆放的位置,要求快速便捷,因此設(shè)計了采用微信公眾號被動回復(fù)信息的方案。
技術(shù)實(shí)現(xiàn):開發(fā)者服務(wù)器--基于Angular2框架的已發(fā)布網(wǎng)站,編程語言為Python,后臺存儲數(shù)據(jù)庫為Mysql;
微信服務(wù)器--微信公眾號,此業(yè)務(wù)只是處理微信客戶端發(fā)送的文本信息,且不使用公眾號的其他功能,因此不需要認(rèn)證公眾號;
微信客戶端--關(guān)注公眾號的微信使用者,即粉絲。
當(dāng)粉絲給公眾號發(fā)送特定的消息時,微信公眾號自動回復(fù)相應(yīng)內(nèi)容,而其背后的實(shí)現(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ā)送給微信客戶端,這樣客戶端接收到信息了。
注意事項(xiàng): 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ù)帶空格的消息,因?yàn)闀霈F(xiàn)不能正?;貜?fù)的現(xiàn)象。
總結(jié)
以上所述是小編給大家介紹的微信公眾號被動消息回復(fù)原理解析,希望對大家啊有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
欄 目:C#教程
下一篇:unity實(shí)現(xiàn)鼠標(biāo)拖住3D物體
本文標(biāo)題:微信公眾號被動消息回復(fù)原理解析
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/4715.html
您可能感興趣的文章
- 01-10微信開放平臺之網(wǎng)站授權(quán)微信登錄功能
- 01-10C#身份證號碼驗(yàn)證是否正確
- 01-10C#修改IIS站點(diǎn)framework版本號的方法
- 01-10C#獲取U盤序列號的方法
- 01-10C#有效防止同一賬號多次登錄(附三種方法)
- 01-10C#微信開發(fā)(服務(wù)器配置)
- 01-10使用C#寫了一個可以推算火車票身份證號碼的小程序
- 01-10基于C#實(shí)現(xiàn)手機(jī)號碼歸屬地接口調(diào)用
- 01-10C#解析json字符串總是多出雙引號的原因分析及解決辦法
- 01-10C#微信公眾平臺開發(fā)之高級群發(fā)接口


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法