如何从Telegram频道接收数据到webhook?

时间:2016-02-09 06:48:37

标签: node.js telegram telegram-bot

我已使用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时,我发现机器人中没有任何内容。

这里有什么问题,以及如何解决?

1 个答案:

答案 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)