我之前用的是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接收和發送,導致我開始得到的正文是空的情況。記住這個坑就行了。
作為個人開發者,微信官方賬號,唯壹開放的對話功能就是接收消息,接收事件推送,接收語音識別結果(暫時不知道什麽鬼),自動回復這些界面。
壹些有趣的界面,比如獲取用戶列表、獲取用戶地理位置、物資管理、微信支付、分享界面等。,還沒有為個體經營者開發。