nodejs微信开发之自动回复的实现

2020-06-17 05:51:39易采站长站整理

'</xml>';
res.end(resMsg);
});

只需要将header的content-type设置为xml,返回一个xml的响应,那么公众号就会相应的回复一个消息,这里回复的消息是文本格式。(mac的微信一年没更新了–)

如上图,发送消息则会回复一个内容一样的消息,一个简单的自动回复就实现了。

图灵机器人

这个接口的使用十分简单,get请求链接,记得带上apikey的头,然后就会返回响应的内容。我这里请求使用的是nodejs request库。


const request = require('request');
const config = require('../../config');

function getTuringResponse(info) {
if(typeof info !== 'string') {
info = info.toString();
}
var options = {
method:'GET',
url: 'http://apis.baidu.com/turing/turing/turing?key=879a6cb3afb84dbf4fc84a1df2ab7319&info='+info,
headers: {
'apikey': config.turingKey
}
};
return new Promise((resolve, reject) => {
request(options, function (err, res, body) {
if (res) {
resolve(body);
} else {
reject(err);
}
});
})
}

module.exports = getTuringResponse;

使用promise处理异步返回的结果,避免多次回调,记得把apikey设置为header内容。

公众号机器人

好了,上面是二者分开的讲的,如果看到这应该知道一个聊天机器人的实现是非常简单的了。就是将接口响应的内容返回给用户(?如果不是非要自己实现聊天机器人的话。。。),后台这里也就相当于一个跳板。

turingRobot.js


const request = require('request');
const config = require('../../config');

function getTuringResponse(info) {
if(typeof info !== 'string') {
info = info.toString();
}
var options = {
method:'GET',
url: 'http://apis.baidu.com/turing/turing/turing?key=879a6cb3afb84dbf4fc84a1df2ab7319&info='+info,
headers: {
'apikey': config.turingKey
}
};
return new Promise((resolve, reject) => {
request(options, function (err, res, body) {
if (res) {
resolve(body);
} else {
reject(err);
}
});
})
}

module.exports = getTuringResponse;

这部分代码很简单了,就是将图灵机器人的接口响应消息返回出来。下面要做的就是将消息返回给用户,这里有一点需要注意的是对于发出的响应,该接口不能直接响应中文字符串,需要进行urlencode。


//autoReply.js
const request = require('request');

function autoReply(requestData, info) {