【发布时间】:2017-06-03 19:35:33
【问题描述】:
我在使用 webhook 创建 Telegram Bot 时遇到问题。
目前我已经这样做了:
- 我有一个云,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 方法),并且在浏览器向我的自签名证书“添加异常”后它工作正常 “工作正常”意味着浏览器可以识别公共证书,并且可以在我开发时显示正确的响应
-
我尝试遵循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' 可以正常工作,因为当我向 Telegram 调用 'getWebhookInfo' 的 API 时,它会回复:
{ “好的”:是的, “结果”: { "url": "https://xxx.xxx.xxx.xxx", “has_custom_certificate”:是的, “pending_update_count”:25, “last_error_date”:1484557151, "last_error_message": "连接超时", “最大连接数”:40 } }
我尝试向我的机器人发送任何消息,但我的内部应用程序日志中没有显示任何消息,当我调用“getWebhookInfo”的 API 时,它总是显示相同,它说“连接超时"
我应该在我的证书中做什么?
【问题讨论】:
-
我使用cloudflare.com而不是自定义证书,但电报只接受有效证书,我的意思是当您在浏览器中添加异常以继续页面时,是主要问题
-
编译 Webhook 很复杂。我建议你阅读下面的帖子(也许对你有帮助):stackoverflow.com/questions/39420903/…
标签: ssl-certificate webhooks telegram telegram-bot