使用webhook创建Telegram Bot时遇到问题 .
目前我这样做了:
-
我有一个 Cloud ,IP地址为xxx.xxx.xxx.xxx,没有域名
-
我在Java应用程序内的JKS文件中创建了证书(我已按照https://core.telegram.org/bots/self-signed的说明)
-
我的证书是自签名的,我使用IP地址xxx.xxx.xxx.xxx作为我的CN
-
我将其导出到公钥证书,以便稍后在'setWebhook'命令参数中使用
-
我执行此命令:curl -F“url = https://xxx.xxx.xxx.xxx " -F " certificate=@my-pem-file.pem”https://api.telegram.org/botXXX:XXX/setWebhook
-
我运行我的僵尸网络引擎
-
我尝试在浏览器中调用URL,地址为:https://xxx.xxx.xxx.xxx(GET方法),浏览器'add exception'后我的自签名证书正常工作'works fine'表示浏览器可以识别公共证书,并且可以显示正确的响应
-
我尝试从https://core.telegram.org/bots/webhooks#testing-your-bot-with-updates跟踪测试脚本,例如:
curl --tlsv1 -v -k -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"update_id":10000,"message":{ "date":1441645532,"chat":{"last_name":"Test Lastname","id":1111111,"first_name":"Test","username":"Test"},"message_id":1365,"from":{"last_name":"Test Lastname","id":1111111,"first_name":"Test","username":"Test"},"text":"/start"}}' "https://xxx.xxx.xxx.xxx"
它工作正常 .
- 我确信'setWebhook'的API中的参数'url'和'certificate'工作正常,因为当我将'getWebhookInfo'的API称为Telegram时,它回答:
{ "ok": true, "result": { "url": "https://xxx.xxx.xxx.xxx", "has_custom_certificate": true, "pending_update_count": 25, "last_error_date": 1484557151, "last_error_message": "Connection timed out", "max_connections": 40 } }
- 我尝试向我的机器人发送任何消息,但我的内部应用程序日志中没有显示任何消息,当我调用'getWebhookInfo'的API时它始终显示相同,它说“ Connection timed out ”
我的证书怎么办?
1 回答
我上周遇到了同样的问题,webhooks工作并停止了(超时错误) . 结果是因为俄罗斯的电报被封锁了 . 我的服务器不是在俄罗斯,而是在荷兰,但在服务器更改后,一切正常 .