上一篇文章:nodejs微信公眾號開發――3.封裝消息響應模塊,實現了對消息接口的模塊化處理,方便后期的使用,本篇文章將介紹微信公眾號回復各種消息的功能實現,包括文本、圖片、語音、視頻、音樂、圖文等。
注:感覺最近localtunnel很不穩定,測試起來比較麻煩,有條件的自己搞個云服務器吧,我比較偷懶,幾繼續使用localtunnel了。
1. 被動回復用戶消息
當用戶發送消息給公眾號時(或某些特定的用戶操作引發的事件推送時),會產生一個POST請求,開發者可以在響應包(Get)中返回特定XML結構,來對該消息進行響應(現支持回復文本、圖片、圖文、語音、視頻、音樂)。發送被動響應消息是對微信服務器發過來消息的一次回復。
開發過程中如果遇到該公眾號暫時無法提供服務,請稍后再試的情況,一般是由兩個原因造成的:
具體的消息規則可參看微信平臺開發者文檔:被動回復用戶消息
2. 回復消息的實現
我們之前的關注自動回復是在weixin.js里面實現的,其他的消息回復也寫在這個文件里面:
if(message.MsgType === 'event'){ if(message.Event === 'subscribe'){ if(message.EventKey) { console.log('掃描二維碼關注:'+ 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 = '關注后掃描二維碼:'+ 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' //可下載觀看喔 }]; } // ... 其他回復類型 this.body = reply;}測試效果如圖:

3.說明:
發現輸入數字2并沒有回復相應的圖片,是不是很奇怪?我們查看一下文檔:

文檔中說明了MediaId屬性是通過素材管理接口上傳多媒體文件,得到的id,而不是我們直接給的網上圖片的url鏈接。在圖文消息中,是可以直接使用url鏈接的。所以我們下一步的工作就是實現素材管理的接口。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答