电报webhook似乎不适用于python API

问题描述:

我正在用this API的帮助开发一个电报机器人,我试图用webhook方法来实现它,首先我用getUpdated方法尝试了我的机器人,它像一个魅力,但是当我将它更新为webhook时,它似乎不起作用。电报webhook似乎不适用于python API

我使用烧瓶实现webhook,完全遵循this example,除了ssl证书和IP之外,因为我有https域,所以不是使用IP和自签名证书,而是使用我的域。

然后我用postman测试了我的webhook,并用从api.telegram.org获得的数据发送了请求,并且它再次运行,但是当我在Telegram应用程序中向我的机器人发送消息时,服务器,看起来像电报不会像它应该发送的消息。

编辑:下面我把我的代码更多的澄清

WEBHOOK_HOST = 'mywebsite.com' 
WEBHOOK_PORT = '8443' 
WEBHOOK_LISTEN = '0.0.0.0' 

WEBHOOK_SSL_CERT = "/etc/letsencrypt/live/mywebsite.com/cert.pem" 
WEBHOOK_PRIV_CERT = "/etc/letsencrypt/live/mywebsite.com/privkey.pem" 

WEBHOOK_URL_BASE = "https://%s:%s" % (WEBHOOK_HOST, WEBHOOK_PORT) 
WEBHOOK_URL_PATH = "/%s/" % (TOKEN.get_token()) 

router = flask.Flask(__name__) 

@router.route('/', methods=['GET', 'HEAD']) 
def index(): 
    return 'OK' 

@router.route(WEBHOOK_URL_PATH, methods=['POST']) 
def webhook(): 
    if flask.request.headers.get('content-type') == 'application/json': 
     json_string = flask.request.json 
     print json_string["message"]["text"] # here I should get the text of message 
     return '' 
    else: 
     flask.abort(403) 


bot.remove_webhook() 
time.sleep(3) 

bot.set_webhook(url=WEBHOOK_URL_BASE+WEBHOOK_URL_PATH,certificate=open(WEBHOOK_SSL_CERT, 'r')) 

router.run(host=WEBHOOK_LISTEN, port=int(WEBHOOK_PORT), ssl_context=(WEBHOOK_SSL_CERT, WEBHOOK_PRIV_CERT), debug=True) 
+0

是的,我知道,这并不回答你的问题,但无论如何:也许你想考虑使用[这个python包装](https://github.com/python-telegram-bot/python-telegram-bot )?它支持最新的Telegram API(你的包装器没有),并且有一个非常好的Telegram组,你可以获得即时帮助,并且它更常用于你使用的包装器。只是说... – Endogen

+0

@Endogen我也会尝试这个包装,谢谢。你可以给我你提到的电报组的链接吗? –

我想你用前人的精力域名或真实IP地址。

从你的榜样链接有点评论:

在某些VPS您可能需要,如果你在本地主机上开发把这里的IP地址

,您可以使用somesing像ngrok.io

+0

好吧,我不得不说,如果我没有提到,我正在从我的服务器开发我的机器人数字海洋,我有一个VPS,我有一个HTTPS域名,所以我发送我的请求到我的域名和我的烧瓶服务器收到它们 –

+0

你使用的是调试模式吗?如果没有,尝试。网址和端口是否正确?例如, 也尝试通过'netstat'扫描连接。 注:你使用自签名的SSL? – dzNET