2016-02-09 5 views
3

Я поставил Телеграмма webhook к mybot с помощью Node.js/экспресс:Как получать данные с канала Telegram на 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 на 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) 
Смежные вопросы