2016-02-09 37 views
3

我设置了一个电报如何使用Node.js网络挂接到mybot /快递:如何从电报通道接收数据到webhook?

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

是否example.com具有SSL连接的自签名证书(HTTPS)?如果是这样,您需要正确配置webhook:https://core.telegram.org/bots/self-signed – iuri

回答

0

数据进入req.body on https://example.com/hook。因此,你需要用(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)