當前位置:編程學習大全網 - 編程語言 - 開發微信微信官方賬號【3】接收消息。

開發微信微信官方賬號【3】接收消息。

當壹個普通的微信用戶向微信官方賬號發送消息時,微信服務器將POST消息的XML數據包發送到開發者填寫的URL,於是我們之前設置的驗證服務器是否是我們的URL就成為了服務器與微信之間唯壹的接口,但這次它使用的是POST而不是GET,它發送的是XML,並且要求我們回復XML。

我之前用的是body-parser,但是我嘗試直接用req.body來獲取對應的數據包,因為body-parser只解析json格式的req.body,所以對於xml格式,req.body解析後就成了空對象。

通過百度查詢,我們找到了兩個xml轉換模塊,壹個是xml2js,壹個是express-xml-bodyparser。

這兩個模塊都可以將xml轉換成js對象。因為我使用express框架,只需要在請求中調用轉換,所以我選擇後者。如果想在其他地方使用轉換或者前端框架沒有express,那麽前者是更好的選擇。

然後在路線中調用:

& ltpre & gt& lt代碼& gt

var XML parser = require(' express-XML-body parser ');

App.post('您設置的微信官方賬號URL ',XML parser ({trim: false,explicitarray: false}),function (req,res) {

console . log(req . body);

})

& lt/code & gt;& lt/pre & gt;

要返回xml格式,需要事先在res中將Content-Type設置為application/xml。

& ltpre & gt& lt代碼& gt

var XML parser = require(' express-XML-body parser ');

App.post('您設置的微信官方賬號URL ',XML parser ({trim: false,explicitarray: false}),function (req,res) {

console . log(req . body);

data = ' & ltxml & gt& ltToUserName & gtchenjsh36 & lt/touser name & gt;& lt/XML & gt;';

res.writeHead(200,{ ' Content-Type ':' application/XML ' });

res.end(數據);

})

& lt/code & gt;& lt/pre & gt;

嗯,有了接收普通消息的接口,可以實現很多有趣的功能,比如問答機器人、詞典翻譯等。網上也有很多已經實現的模塊供妳直接調用。

作者調用了壹個免費開源的問答機器人,它提供了相應的接口。作者解析微信服務器發來的數據包後,提取內容轉發給問答機器人,得到回復後再轉發給微信服務器。具體轉發方法請參考以上格式,然後簡單實現壹個智能機器人(本來想自己實現壹個,發現人工智能太弱了。。。)

遇到的坑:壹開始直接轉發內容,發現問答機器人很不智能。就在早上,看到壹個前端老師的課程ppt,裏面只是講了字符集和字符編碼的內容。這是壹個巧合。我意識到可能是中文編碼不足導致的問題,用encodeURI解決了這個bug。機器人立刻變得聰明起來!我要感謝給我發ppt的導師T T。

實現消息接收和回復的主要坑是我之前沒有接觸過xml接收和發送,導致我開始得到的正文是空的情況。記住這個坑就行了。

作為個人開發者,微信官方賬號,唯壹開放的對話功能就是接收消息,接收事件推送,接收語音識別結果(暫時不知道什麽鬼),自動回復這些界面。

壹些有趣的界面,比如獲取用戶列表、獲取用戶地理位置、物資管理、微信支付、分享界面等。,還沒有為個體經營者開發。

  • 上一篇:好聽的純音樂鋼琴曲
  • 下一篇:建東職業技術學院無人機專業就業前景怎麽樣?有無人機考證培訓嗎?
  • copyright 2024編程學習大全網