我在这个API的帮助下开发了一个电报机器人,我试着用web钩子方法实现它,首先我用getUpdated方法尝试了我的机器人,它工作起来很有魅力,但是当我将它更新为web钩子时,它似乎不起作用。
我使用烧瓶实现了web钩子,完全遵循这个例子,除了ssl证书和IP,因为我有一个https域,所以我没有使用IP和自签名证书,而是使用了域。
然后我用邮递员测试了我的网络钩子,并用我从api.telegram.org获得的数据发送请求,它也同样有效,但是当我在电报应用程序中向我的机器人发送消息时,我在服务器上没有收到消息,就好像电报不像它应该发送的那样发送消息。
编辑:这里我把我的代码做了更多的澄清。
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)发布于 2017-09-12 06:12:11
我认为你应该使用域名或真正的IP地址。
您的示例链接中有一点评论:
在某些VPS中,您可能需要在这里放置IP addr。
如果您在本地主机上进行开发,您可以使用一些类似于ngrok.io的
https://stackoverflow.com/questions/45885895
复制相似问题