溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nodejs微信公眾號(hào)開(kāi)發(fā)之如何實(shí)現(xiàn)自動(dòng)回復(fù)各種消息

發(fā)布時(shí)間:2021-08-12 10:19:11 來(lái)源:億速云 閱讀:172 作者:小新 欄目:web開(kāi)發(fā)

這篇文章主要介紹了nodejs微信公眾號(hào)開(kāi)發(fā)之如何實(shí)現(xiàn)自動(dòng)回復(fù)各種消息,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1. 被動(dòng)回復(fù)用戶消息

當(dāng)用戶發(fā)送消息給公眾號(hào)時(shí)(或某些特定的用戶操作引發(fā)的事件推送時(shí)),會(huì)產(chǎn)生一個(gè)POST請(qǐng)求,開(kāi)發(fā)者可以在響應(yīng)包(Get)中返回特定XML結(jié)構(gòu),來(lái)對(duì)該消息進(jìn)行響應(yīng)(現(xiàn)支持回復(fù)文本、圖片、圖文、語(yǔ)音、視頻、音樂(lè))。發(fā)送被動(dòng)響應(yīng)消息是對(duì)微信服務(wù)器發(fā)過(guò)來(lái)消息的一次回復(fù)。

開(kāi)發(fā)過(guò)程中如果遇到該公眾號(hào)暫時(shí)無(wú)法提供服務(wù),請(qǐng)稍后再試的情況,一般是由兩個(gè)原因造成的:

  1. 開(kāi)發(fā)者在5秒內(nèi)未回復(fù)任何內(nèi)容

  2. 開(kāi)發(fā)者回復(fù)的數(shù)據(jù)異常,非xml格式,比如JSON數(shù)據(jù)

具體的消息規(guī)則可參看微信平臺(tái)開(kāi)發(fā)者文檔:被動(dòng)回復(fù)用戶消息

2. 回復(fù)消息的實(shí)現(xiàn)

我們之前的關(guān)注自動(dòng)回復(fù)是在weixin.js里面實(shí)現(xiàn)的,其他的消息回復(fù)也寫(xiě)在這個(gè)文件里面:

if(message.MsgType === 'event'){
  if(message.Event === 'subscribe'){
    if(message.EventKey) {
      console.log('掃描二維碼關(guān)注:'+ message.EventKey +' '+ message.ticket);
    }
    this.body = '終于等到你,還好我沒(méi)放棄';
  }else if(message.Event === 'unsubscribe'){
    this.body = '';
    console.log(message.FromUserName + ' 悄悄地走了...');
  }else if(message.Event === 'LOCATION'){
    this.body = '您上報(bào)的地理位置是:'+ message.Latitude + ',' + message.Longitude;
  }else if(message.Event === 'CLICK'){
    this.body = '您點(diǎn)擊了菜單:'+ message.EventKey;
  }else if(message.Event === 'SCAN'){
    this.body = '關(guān)注后掃描二維碼:'+ message.Ticket;
  }
}
else if(message.MsgType === 'text'){
  var content = message.Content;
  var reply = '你說(shuō)的話:“' + content + '”,我聽(tīng)不懂呀';
  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;
}

測(cè)試效果如圖:

nodejs微信公眾號(hào)開(kāi)發(fā)之如何實(shí)現(xiàn)自動(dòng)回復(fù)各種消息

3.說(shuō)明:

發(fā)現(xiàn)輸入數(shù)字2并沒(méi)有回復(fù)相應(yīng)的圖片,是不是很奇怪?我們查看一下文檔:

nodejs微信公眾號(hào)開(kāi)發(fā)之如何實(shí)現(xiàn)自動(dòng)回復(fù)各種消息

文檔中說(shuō)明了MediaId屬性是通過(guò)素材管理接口上傳多媒體文件,得到的id,而不是我們直接給的網(wǎng)上圖片的url鏈接。在圖文消息中,是可以直接使用url鏈接的。所以我們下一步的工作就是實(shí)現(xiàn)素材管理的接口。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“nodejs微信公眾號(hào)開(kāi)發(fā)之如何實(shí)現(xiàn)自動(dòng)回復(fù)各種消息”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI