我已使用node.js / express将电报webhook设置为mybot
:
app.get('/hook', function (req, res) {
url='https://api.telegram.org/bot17xxxxx/setwebhook?url=https://example.com/hook'
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
}
response.emit('close');
});
});
当我获得https://example.com/hook
时,我可以收到我的机器人控制台:
{"ok":true,"result":true,"description":"Webhook was set"}
现在我想接收来自机器人的数据,以便当用户访问https://telegram.me/mybot?start=xyz
并按/start
时,机器人应该在xyz
的帖子中收到/hook
(至少那是我对程序的理解)
以下是我必须接收帖子的路线:
app.post("/hook", function(req, res) {
console.log(body);
});
但是当用户在浏览器中访问https://telegram.me/mybot?start=xyz
并按/start
时,我发现机器人中没有任何内容。
这里有什么问题,以及如何解决?
答案 0 :(得分:0)
数据来自https://example.com/hook上的 req.body 。所以你需要使用(req.body)
app.post("/hook", function(req, res) {
console.log(req.body);
});
会有类似的东西
{"update_id":1111111111,"message":{"message_id":2222,"from":{"id":333333333333,"is_bot":false,"first_name":"Username","last_name":"Lastname","username":"username","language_code":"en},"chat":{"id":1111111111,"first_name":"Username","last_name":"Lastname","username":"username","type":"private"},"date":1518592199,"text":"xyz"}}
如果您不使用bodyParser bodyParser middleware之类的内容,您可以解析它
见简单的例子。 正文中的所有信息和文本
中的文字body=JSON.parse(req.body)
text=body.message.text
console.log(body)
console.log(text)