我目前正在关注this tutorial。 -使用Python教程#3的电报机器人:创建机器人和Webhook |项目
我已经使用以下python代码设置了Flask服务器:
from flask import Flask
from flask import request
from flask import Response
import json
app = Flask(__name__)
@app.route('/', methods=['POST', 'GET'])
def index():
if request.method == 'POST':
print(request)
message = request.json()
with open('telegram_request.json', 'w', encoding='utf-8') as filename:
json.dump(message, filename, ensure_ascii=False, indent=4)
# prevents telegram from spamming
return Response('Ok', status=200)
else:
return """
<h1> Flask Server </h1>
<h2> Up and running </h2>
"""
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8443)
我将端口转发到路由器中的端口[[8443,以使服务器对外界可见(教程中的隧道步骤)。
域名“myprivatedomain.com:8443
”现在重定向/引用到已设置的烧瓶服务器。第三步
{“ ok”:true,“ result”:true,“ description”:“已设置Webhook”}
现在
没有错误。
After在聊天中发送消息,弹出以下错误:代码400,消息HTTP / 0.9请求类型错误(“像\ x00 \ x03这样的随机字节值”)
代码400,消息错误的请求语法(“像\ x00 \ x03这样的随机字节值”)代码400,消息错误的请求版本(“像\ x00 \ x03这样的随机字节值”)
我想
根据本教程,您可以在Telegram发出POST请求时编写一个.json文件(请参见示例:
我尝试添加:
ssl_context='adhoc'
to
app.run(debug=True, host='0.0.0.0', port=8443)
建立连接HTTPS。
虽然使用此ssl_context,也无法加载主页。首选输出
[当用户在电报聊天中发送消息时-> Python保存消息对象的.json文件。
ssl_context='adhoc'
可能适用于测试应用程序,但我也有一种直觉,即电报需要一个VALID SSL证书,而不仅仅是一个即席(或自签名的)证书。请注意视频中URL左侧的锁,并且缺少使用无效或自签名证书时会出现的安全警告。
要确保SSL正常运行,请将ssl_context
设置为adhoc
,启动应用程序,然后浏览至https://myprivatedomain.com:8443/index
。如果您可以浏览到它,那么当然,在获得有效证书后,Telegram也将能够浏览到它。
一旦有了有效的SSL证书和密钥文件,就可以将ssl_context
参数传递给app.run
,并带有证书文件路径和密钥文件("/path/to/fullchain.pem", "/path/to/privkey.pem")
的路径的元组>
您的完整运行功能应如下所示
app.run(debug=True, host='0.0.0.0', port=8443, ssl_context=("/path/to/fullchain.pem", "/path/to/privkey.pem"))
或者,您可以使用Apache或Nginx通过SSL保护您的网站,并反向代理您的漫游器。这些选项通常会在最终产品中使用,因此我了解您是否现在不想与它们混在一起,但是无论如何都是一个好习惯。
希望有帮助。