快速學習nodejs系列:微信公衆號開發三之消息管理與回覆消息

消息管理
微信公衆號開發中,最重要的一個業務,我認爲是消息管理。由於用戶與公衆號的交互的開始是經過公衆對話窗口,無論是用戶關注、取消關注、發送文字、圖片等、點擊菜單欄都會造成對應的消息。具體官方文檔:https://mp.weixin.qq.com/wiki...npm

咱們服務器收到微信服務器的消息類型有2類:
1.接收普通消息
2.接收事件推送
注意:微信服務器將POST消息的XML數據包到開發者填寫的URL上,要求咱們服務器要在5秒內回覆(回覆的格式也是xml),微信服務器在五秒內收不到響應會斷掉鏈接,而且從新發起請求,總共重試三次。假如咱們服務器沒法保證在五秒內處理並回復,能夠直接回復空串(或success),微信服務器不會對此做任何處理,而且不會發起重試。但咱們服務器沒有5秒內或者回復了非法的數據,微信會在公衆號會話中,向用戶下發系統提示「該公衆號暫時沒法提供服務,請稍後再試「。服務器

xml的通常格式:
clipboard.png微信

報錯:
clipboard.pngide

下面咱們先來看看接收普通消息
普通消息包括的類型:
1.文本消息 //MsgType=text
2.圖片消息 //MsgType=image
3.語音 //MsgType=voice
4.視頻消息 //MsgType=voice
5.小視頻消息 //MsgType=shortvideo
6.地理位置消息 //MsgType=location
7.連接消息 //MsgType=link函數

微信服務器post過來的xml格式和各個字段的含義(以文本消息爲例,其餘消息的字段也差很少,都是經過:MsgType來區分不一樣的類型)post

clipboard.png

ToUserName 開發者公衆號的微信號
FromUserName 發送者帳號(這個帳號,是用戶的微信號加密而來,通常被稱爲openid)
CreateTime 時間戳
MsgType 消息類型
Content 內容測試

事件推送
事件推送的類型:加密

clipboard.png

數據格式與普通消息的很是類似,MsgType都是event,事件推送經過Event字段來區分事件類型:subscribe(訂閱)、unsubscribe(取消訂閱)、
掃描帶參數二維碼事件(subscribe用戶未關注時,進行關注後的事件推送;SCAN用戶已關注時的事件推送)、LOCATION 上報地理位置事件、自定義菜單事件(CLICK 點擊菜單拉取消息時的事件推送;VIEW 點擊菜單跳轉連接時的事件推送)spa

clipboard.png

咱們接收到微信服務器發送過來的數據,那咱們怎樣回覆呢?
被動回覆:3d

clipboard.png

回覆的數據格式也是xml,以回覆文本消息爲例,下面是xml數據。

clipboard.png

ToUserName 接收方賬號(咱們收到的openid)
FromUserName 開發者微信號
CreateTime 消息時間戳
MsgType 回覆的消息類型
Content 回覆的內容

實戰例子:
1.用戶關注公衆號時,給用戶發送歡迎語
2.收到各類普通消息,簡單回覆文本
3.npm install xml2js ,利用xml2js把xml解析成js對象
xml to js object:

clipboard.png

關鍵代碼:
1.自定義獲取xml數據函數

clipboard.png

2.業務邏輯

clipboard.png

結果:

沒有作回覆的時候,能夠看到微信推了3次數據,3次後公衆號提示報錯信息:
在公衆號會話框中發送文字:「測試」
clipboard.png

咱們服務器收到微信3次的推送
clipboard.png

正常加上回復邏輯後:
掃碼關注時,提示:歡迎關注

clipboard.png

發送文字、圖片

clipboard.png

消息管理-消息回覆,咱們就講到這裏。下一節,講微信公衆號接口的調用。

相關文章
相關標籤/搜索