如何为我的Telegram机器人设置Webhook而不是轮询(Polling)?

追云逐月追云逐月06月16日1365

我现在是做Telegram营销网站的,以前的机器人都用轮询,听说webhook更稳定,求大佬教教我怎么设置webhook,在线等!

3 个回答

针婉娜
针婉娜回答于 06 月 16 日
最佳答案

设置webhook比轮询稳定很多,适合你们的高频营销场景。

第一步,需要一个公网的URL,比如用Heroku/阿里云等部署。

第二步,在Telegram BotFather中发送/setwebhook命令,然后是你的服务地址。

第三步,保证你服务器支持POST请求,并返回200给Telegram。

需要注意的:

1. Webhook是单向通信,有消息才会触发,不是轮询一直询问

2. url必须带token参数,如https://xxx.com/path?token=123:abc

3. 不要忽略update_id,避免漏消息

目前大多数正规项目都是webhook了,建议直接迁移。

南香巧
南香巧回答于 06 月 16 日

1. 先到Telegram官方文档中看看webhook的设置步骤,文档中步骤非常详细。

2. 服务器必须支持https协议。

3. 设置webhook的地址要带上token,地址格式是https://yourdomain.com/yourpath?secret_token=xxx。

4. 本地测试正常上线,记得要定时给webhook发getUpdates清空队列。

5. 推荐nginx反向代理+防火墙,防止被攻击。不会的随时来问。

印秀婉
印秀婉回答于 06 月 17 日

设置Webhook并不难,主要分为三个步骤:

1. 先到你的服务器开个端口,确保能公网访问。建议使用Nginx做反向代理。

2. 通过`setWebhook`接口绑定域名地址,例如`https://你域名/secret-path`,Secret Token记得一起带过去。

3. 最后写一个接收post请求的处理程序,把Telegram发过来的消息体解析出来就可以了。

注意只有备案的域名支持Webhook,服务器必须24小时在线。Webhook相对于轮询延迟更小,断线也不会丢失消息,适合营销等高并发场景。现在普遍都用这个了。

您的答案