nodejs微信公衆號開發——4.自動回覆各類消息

上一篇文章:nodejs微信公衆號開發——3.封裝消息響應模塊,實現了對消息接口的模塊化處理,方便後期的使用,本篇文章將介紹微信公衆號回覆各類消息的功能實現,包括文本、圖片、語音、視頻、音樂、圖文等。(項目github地:https://github.com/Panfen/wem... )html

注:感受最近localtunnel很不穩定,測試起來比較麻煩,有條件的本身搞個雲服務器吧,我比較偷懶,幾繼續使用localtunnel了。node

1. 被動回覆用戶消息

當用戶發送消息給公衆號時(或某些特定的用戶操做引起的事件推送時),會產生一個POST請求,開發者能夠在響應包(Get)中返回特定XML結構,來對該消息進行響應(現支持回覆文本、圖片、圖文、語音、視頻、音樂)。發送被動響應消息是對微信服務器發過來消息的一次回覆。
開發過程當中若是遇到該公衆號暫時沒法提供服務,請稍後再試的狀況,通常是由兩個緣由形成的:git

  • 開發者在5秒內未回覆任何內容
  • 開發者回覆的數據異常,非xml格式,好比JSON數據

具體的消息規則可參看微信平臺開發者文檔:被動回覆用戶消息github

2. 回覆消息的實現

咱們以前的關注自動回覆是在weixin.js裏面實現的,其餘的消息回覆也寫在這個文件裏面:segmentfault

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連接的。因此咱們下一步的工做就是實現素材管理的接口。微信

相關文章
相關標籤/搜索