這篇文章主要介紹了nodejs如何開發(fā)一個微信聊天機器人,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為旺蒼企業(yè)提供專業(yè)的成都網(wǎng)站建設、網(wǎng)站制作,旺蒼網(wǎng)站改版等技術服務。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
這種方式的數(shù)據(jù)流程圖如下:
用戶在公眾號內(nèi)向公眾號發(fā)送消息
微信服務器在接收到用戶發(fā)送消息之后,將消息通過開發(fā)者提供的接口發(fā)送給開發(fā)者服務器
開發(fā)者服務器接收到消息之后,進行相關的業(yè)務處理之后,將處理結果返回給微信服務器
微信服務器再通過消息的形式將開發(fā)者服務器返回的內(nèi)容展示給用戶
原理了解后就開始干活了,本案例以測試號為例。
第一步:用express搭建一個本地服務,并且設置兩個接口,分別用來驗證接口配置信息和接收微信服務器轉發(fā)的用戶信息。接口核心代碼如下:
可以看到接口路徑都為"/",只是請求方式不同,分別打印請求參數(shù),不做響應處理,后面會設置。
為了方便記憶將get請求的接口命名為1號接口,post請求接口命名為2號接口。
2號接口因為要接收xml格式的數(shù)據(jù),所以只能用data事件和end事件獲取請求數(shù)據(jù)。
第二步:通過ngrok將本地express服務暴露到外網(wǎng),具體實現(xiàn)方法參照這篇文章分享一個內(nèi)網(wǎng)穿透工具ngrok。
第三步:打開測試號接口配置信息頁面,如圖:
打印結果如下:
可以看到我們得到了請求參數(shù),按照官方文檔的要求:配置接口返回echostr說明接口調通。并且我們這里只是做測試,省略了加密解密的過程,將1號接口改成如下代碼:
代碼相對于剛開始的設置,只是添加了一句響應,重啟本地服務,再次點擊提交按鈕,正確結果如下:
第四步:用手機向測試公眾號發(fā)送一條信息,查看2號接口的打印數(shù)據(jù),如圖:
可以看到這里接收到的數(shù)據(jù)是xml格式的,并且連續(xù)打印了三次,這里要注意一下,因為我們的代碼中2號路由接收到數(shù)據(jù)后,并未響應任何信息,微信在五秒之后會繼續(xù)發(fā)送同樣的請求,一共發(fā)送三次。只有接口返回信息之后,微信服務器就不會重復發(fā)送信息了。
言歸正傳,我們需要將xml格式的數(shù)據(jù)轉換為js對象,這里需要用到了一個叫做xml2js的npm包,具體使用方式大家去查看官方文檔,很簡單。將xml2js集成到項目中代碼如下:
此時再用手機向測試公眾號發(fā)送信息,打印結果為:
拿到格式為js對象的數(shù)據(jù)后,我們就可以根據(jù)具體的數(shù)據(jù)信息,設置返回信息了。但是返回的數(shù)據(jù)也要轉換成xml格式,這里用到了xml2js的另外一個方法。一個完整的2號接口,接收請求-響應數(shù)據(jù)的代碼如下:
此時向微信測試號發(fā)送一條信息,看看是否有回應。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“nodejs如何開發(fā)一個微信聊天機器人”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!
本文題目:nodejs如何開發(fā)一個微信聊天機器人
本文鏈接:http://www.chinadenli.net/article30/iepsso.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、微信小程序、全網(wǎng)營銷推廣、網(wǎng)站導航、移動網(wǎng)站建設、自適應網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)