溫馨提示×

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

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

nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人

發(fā)布時(shí)間:2022-01-19 09:28:13 來(lái)源:億速云 閱讀:144 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹了nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

這種方式的數(shù)據(jù)流程圖如下:

nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人

  1. 用戶在公眾號(hào)內(nèi)向公眾號(hào)發(fā)送消息

  2. 微信服務(wù)器在接收到用戶發(fā)送消息之后,將消息通過(guò)開(kāi)發(fā)者提供的接口發(fā)送給開(kāi)發(fā)者服務(wù)器

  3. 開(kāi)發(fā)者服務(wù)器接收到消息之后,進(jìn)行相關(guān)的業(yè)務(wù)處理之后,將處理結(jié)果返回給微信服務(wù)器

  4. 微信服務(wù)器再通過(guò)消息的形式將開(kāi)發(fā)者服務(wù)器返回的內(nèi)容展示給用戶

原理了解后就開(kāi)始干活了,本案例以測(cè)試號(hào)為例。

第一步:用express搭建一個(gè)本地服務(wù),并且設(shè)置兩個(gè)接口,分別用來(lái)驗(yàn)證接口配置信息接收微信服務(wù)器轉(zhuǎn)發(fā)的用戶信息。接口核心代碼如下:

nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人

可以看到接口路徑都為"/",只是請(qǐng)求方式不同,分別打印請(qǐng)求參數(shù),不做響應(yīng)處理,后面會(huì)設(shè)置。

為了方便記憶將get請(qǐng)求的接口命名為1號(hào)接口,post請(qǐng)求接口命名為2號(hào)接口。

2號(hào)接口因?yàn)橐邮誼ml格式的數(shù)據(jù),所以只能用data事件和end事件獲取請(qǐng)求數(shù)據(jù)。

第二步:通過(guò)ngrok將本地express服務(wù)暴露到外網(wǎng),具體實(shí)現(xiàn)方法參照這篇文章分享一個(gè)內(nèi)網(wǎng)穿透工具ngrok。

第三步:打開(kāi)測(cè)試號(hào)接口配置信息頁(yè)面,如圖:

nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人

打印結(jié)果如下:

可以看到我們得到了請(qǐng)求參數(shù),按照官方文檔的要求:配置接口返回echostr說(shuō)明接口調(diào)通。并且我們這里只是做測(cè)試,省略了加密解密的過(guò)程,將1號(hào)接口改成如下代碼:

nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人

代碼相對(duì)于剛開(kāi)始的設(shè)置,只是添加了一句響應(yīng),重啟本地服務(wù),再次點(diǎn)擊提交按鈕,正確結(jié)果如下:

nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人

第四步:用手機(jī)向測(cè)試公眾號(hào)發(fā)送一條信息,查看2號(hào)接口的打印數(shù)據(jù),如圖:

nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人

可以看到這里接收到的數(shù)據(jù)是xml格式的,并且連續(xù)打印了三次,這里要注意一下,因?yàn)槲覀兊拇a中2號(hào)路由接收到數(shù)據(jù)后,并未響應(yīng)任何信息,微信在五秒之后會(huì)繼續(xù)發(fā)送同樣的請(qǐng)求,一共發(fā)送三次。只有接口返回信息之后,微信服務(wù)器就不會(huì)重復(fù)發(fā)送信息了。

言歸正傳,我們需要將xml格式的數(shù)據(jù)轉(zhuǎn)換為js對(duì)象,這里需要用到了一個(gè)叫做xml2js的npm包,具體使用方式大家去查看官方文檔,很簡(jiǎn)單。將xml2js集成到項(xiàng)目中代碼如下:

nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人

此時(shí)再用手機(jī)向測(cè)試公眾號(hào)發(fā)送信息,打印結(jié)果為:

nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人

拿到格式為js對(duì)象的數(shù)據(jù)后,我們就可以根據(jù)具體的數(shù)據(jù)信息,設(shè)置返回信息了。但是返回的數(shù)據(jù)也要轉(zhuǎn)換成xml格式,這里用到了xml2js的另外一個(gè)方法。一個(gè)完整的2號(hào)接口,接收請(qǐng)求-響應(yīng)數(shù)據(jù)的代碼如下:

nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人

此時(shí)向微信測(cè)試號(hào)發(fā)送一條信息,看看是否有回應(yīng)。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“nodejs如何開(kāi)發(fā)一個(gè)微信聊天機(jī)器人”這篇文章對(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