上一篇最后接入图灵机器人,发现现在已经没有免费版可供实验了。寻找良久,发现天行机器人还在免费试用,果断试一下
一、注册申请免费接口
网址:https://www.tianapi.com/
注册账号后进入管理控制台

绑定邮箱后验证即可申请机器人接口
接口有许多,可以选择https://www.tianapi.com/apiview/140中选择开通。
二、接口信息
进入接口管理https://www.tianapi.com/gethttp/47,根据接口文档跟参数对上文的js文件进行修改。
```java
var express = require('express');
var app = express();
var http = require('http');
var sha1 = require('sha1');
var xml2js = require('xml2js');
var querystring = require('querystring');
process.env.PORT = '80';
function checkSignature(req) {
// 获取校验参数
var signature = req.query.signature;
var timestamp = req.query.timestamp;
var nonce = req.query.nonce;
// 此处为实验分配了一个 token,也可以修改为自己的 token
var token = '8S713eqK';
// 按照字典排序
var params = [token, timestamp, nonce];
params.sort();
// 连接
var str = sha1(params.join(""));
// 返回签名是否一致
return str == signature;
}
// 接入验证
app.get('/', function(req, res) {
// 签名成功
if (checkSignature(req)) {
res.send(200, req.query.echostr);
} else {
res.send(200, 'fail');
}
});
function handler(req, res) {
let buf = '';
// 获取XML内容
req.setEncoding('utf8');
req.on('data', function(chunk) {
buf += chunk;
});
// 内容接收完毕
req.on('end', function() {
xml2js.parseString(buf, function(err, json) {
if (err) {
err.status = 400;
} else {
req.body = json;
}
});
let data = req.body.xml;
var msg = {
"toUserName" : data.FromUserName[0],
"fromUserName" : data.ToUserName[0],
"createTime" : data.CreateTime[0],
"msgType" : data.MsgType[0],
"content" : data.Content[0],
"msgId" : data.MsgId[0]
};
request(msg, req, res)
});
}
function request(data, req, res) {
var msg = {
**"key":'276c4c3ad3233c0b2f72a48386390ca5', // 可以填入自己申请的机器人的apiKey
"question": robot,
"uniqueid": a36586d752193ea6**
};
var text = querystring.stringify(msg);
var options = {
**hostname: 'http://api.tianapi.com',
path: '/txapi/robot/index',**
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
};
var requestObj = http.request(options, function (response) {
var result = '';
response.setEncoding('utf8');
response.on('data', function (chunk) {
result += chunk;
});
response.on('end',function() {
try{
var obj = JSON.parse(result);
}
catch(e){
data.content = e.message;
echo(data, res);
return;
}
data.content = obj.text;
echo(data, res);
})
});
requestObj.on('error', function (e) {
console.log('problem with request: ' + e.message);
data.content = e.message;
echo(data, res);
});
requestObj.write(text);
requestObj.end();
}
function echo(data, res) {
var time = Math.round(new Date().getTime() / 1000);
var output = "" +
"<xml>" +
"<ToUserName><![CDATA[" + data.toUserName + "]]></ToUserName>" +
"<FromUserName><![CDATA[" + data.fromUserName + "]]></FromUserName>" +
"<CreateTime>" + time + "</CreateTime>" +
"<MsgType><![CDATA[" + data.msgType + "]]></MsgType>" +
"<Content><![CDATA[" + data.content + "]]></Content>" +
"</xml>";
res.type('xml');
res.send(output);
}
// Start
app.post('/', function(req, res) {
handler(req, res);
});
module.exports = app;
然后重启npm,发现报错如下:

经过重新从头步骤安装解压bpm可以解决此问题,但调试微信公众号仍然没有回复,怀疑是接口文档js文件还有没有弄对的地方。
4万+

被折叠的 条评论
为什么被折叠?



