如何回应电报机器人Webhook请求?相同的请求正在反复出现

时间:2016-12-03 12:27:44

标签: javascript node.js webhooks telegram telegram-bot

我正在尝试使用官方电报bot api与nodejs建立电报机器人(用于学习目的)。我设置了一个webhook到heroku。 我可以回复请求,但一段时间后,相同的请求会在一段时间后再次发出。获得相同请求是否正常,或者我没有回复即将发出的请求。当我调用getwebhookinfo方法时,它显示pending_update_count,但是我的代码确实响应了来自webhook的所有请求。 我用它来回复即将到来的请求

var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var config = require('./lib/config');
var request = require('request');
var port = process.env.PORT || 3000;
var reply_url = "https://api.telegram.org/bot"+config.bot_token;
app.use(bodyParser.json());
app.get('/',function(req,res) {
    res.send("Working");
request({
    url: "https://api.telegram.org/bot"+config.bot_token+'/getMe',
    json : true
}, (err,res,body)=>{
    console.log(body);
});
});
app.post('/'+config.bot_token , (req,res)=>{
    var body = req.body;
    console.log(body);
    console.log(body.message.entities);

    request.post((reply_url+'/sendMessage'),{form:{chat_id:body.message.chat.id,text:"POST REPLY SUCCESS",reply_to_message_id:body.message.message_id}});
});

app.listen(port, () =>
{
    console.log("Server is Started at - "+port);
});

1 个答案:

答案 0 :(得分:2)

尝试在API函数的回调函数中添加next(req,res,next)并在执行res.status(201).send('Working')后调用next()函数。

类似适用于其他POST API('/'+ config.bot_token);在/ sendMessage API的成功和错误回调中,调用res.status()。send()然后调用next();

在使用express.js

时,始终将next()作为标准做法