詳解nodejs微信公眾號開發(fā)——4.自動回復(fù)各種消息
上一篇文章:nodejs微信公眾號開發(fā)——3.封裝消息響應(yīng)模塊,實現(xiàn)了對消息接口的模塊化處理,方便后期的使用,本篇文章將介紹微信公眾號回復(fù)各種消息的功能實現(xiàn),包括文本、圖片、語音、視頻、音樂、圖文等。
注
:感覺最近localtunnel很不穩(wěn)定,測試起來比較麻煩,有條件的自己搞個云服務(wù)器吧,我比較偷懶,幾繼續(xù)使用localtunnel了。
1. 被動回復(fù)用戶消息
當(dāng)用戶發(fā)送消息給公眾號時(或某些特定的用戶操作引發(fā)的事件推送時),會產(chǎn)生一個POST請求,開發(fā)者可以在響應(yīng)包(Get)中返回特定XML結(jié)構(gòu),來對該消息進行響應(yīng)(現(xiàn)支持回復(fù)文本、圖片、圖文、語音、視頻、音樂)。發(fā)送被動響應(yīng)消息是對微信服務(wù)器發(fā)過來消息的一次回復(fù)。
開發(fā)過程中如果遇到該公眾號暫時無法提供服務(wù),請稍后再試
的情況,一般是由兩個原因造成的:
- 開發(fā)者在5秒內(nèi)未回復(fù)任何內(nèi)容
- 開發(fā)者回復(fù)的數(shù)據(jù)異常,非xml格式,比如JSON數(shù)據(jù)
具體的消息規(guī)則可參看微信平臺開發(fā)者文檔:被動回復(fù)用戶消息
2. 回復(fù)消息的實現(xiàn)
我們之前的關(guān)注自動回復(fù)是在weixin.js
里面實現(xiàn)的,其他的消息回復(fù)也寫在這個文件里面:
if(message.MsgType === 'event'){ if(message.Event === 'subscribe'){ if(message.EventKey) { console.log('掃描二維碼關(guān)注:'+ message.EventKey +' '+ message.ticket); } this.body = '終于等到你,還好我沒放棄'; }else if(message.Event === 'unsubscribe'){ this.body = ''; console.log(message.FromUserName + ' 悄悄地走了...'); }else if(message.Event === 'LOCATION'){ this.body = '您上報的地理位置是:'+ message.Latitude + ',' + message.Longitude; }else if(message.Event === 'CLICK'){ this.body = '您點擊了菜單:'+ message.EventKey; }else if(message.Event === 'SCAN'){ this.body = '關(guān)注后掃描二維碼:'+ message.Ticket; } } else if(message.MsgType === 'text'){ var content = message.Content; var reply = '你說的話:“' + content + '”,我聽不懂呀'; if(content === '1'){ reply = '金剛:骷髏島'; } else if(content === '2'){ reply = { type:'image', mediaId:'http://tu.23juqing.com/d/file/html/gndy/dyzz/2017-04-09/da9c7a64ab7df196d08b4b327ef248f2.jpg' } } else if(content === '3'){ reply = [{ title:'金剛.骷髏島', description:'南太平洋上的神秘島嶼——骷髏島。史上最大金剛與骷髏蜥蜴的較量。', picUrl:'http://tu.23juqing.com/d/file/html/gndy/dyzz/2017-04-09/da9c7a64ab7df196d08b4b327ef248f2.jpg', url:'http://www.piaohua.com/html/dongzuo/2017/0409/31921.html' //可下載觀看喔 }]; } // ... 其他回復(fù)類型 this.body = reply; }
測試效果如圖:
3.說明:
發(fā)現(xiàn)輸入數(shù)字2并沒有回復(fù)相應(yīng)的圖片,是不是很奇怪?我們查看一下文檔:
文檔中說明了MediaId屬性是通過素材管理接口上傳多媒體文件,得到的id,而不是我們直接給的網(wǎng)上圖片的url鏈接。在圖文消息中,是可以直接使用url鏈接的。所以我們下一步的工作就是實現(xiàn)素材管理的接口。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
NodeJS?基于?Dapr?構(gòu)建云原生微服務(wù)應(yīng)用快速入門教程
Dapr?是一個可移植的、事件驅(qū)動的運行時,它使任何開發(fā)人員能夠輕松構(gòu)建出彈性的、無狀態(tài)和有狀態(tài)的應(yīng)用程序,并可運行在云平臺或邊緣計算中,它同時也支持多種編程語言和開發(fā)框架,本文重點介紹NodeJS云原生微服務(wù)應(yīng)用,感興趣的朋友一起看看吧2022-07-0730分鐘用Node.js構(gòu)建一個API服務(wù)器的步驟詳解
這篇文章主要介紹了30分鐘用Node.js構(gòu)建一個API服務(wù)器的步驟詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05node使用querystring內(nèi)置模塊解決分頁返回數(shù)據(jù)太多導(dǎo)致json.parse()解析報錯問題
這篇文章主要介紹了node使用querystring內(nèi)置模塊解決分頁返回數(shù)據(jù)太多導(dǎo)致json.parse()解析報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09Nest.js參數(shù)校驗和自定義返回數(shù)據(jù)格式詳解
這篇文章主要給大家介紹了關(guān)于Nest.js參數(shù)校驗和自定義返回數(shù)據(jù)格式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03