【发布时间】:2018-07-04 05:14:30
【问题描述】:
我正在使用 Facebook Messenger 及其发送 API。我还使用 ngrok 作为服务器来处理流量。几天前我的聊天机器人工作得很好,但现在经过一些调试后,似乎 Messenger 在用户的每一个输入下,都非常快速地一个接一个地发送多个帖子请求。我想到是否可能是延迟问题,因为我的聊天机器人响应确实需要一段时间来处理。由于所有请求,我的聊天机器人需要很长时间,但过了一段时间它确实设法以 200 响应回答所有请求。如果是这样,我如何让 Messenger 不发送多个 Post 请求并淹没我的 ngrok webhook?如果是其他问题,我该如何处理?
这是监听请求的代码:
@app.route("/webhook", methods=['GET','POST'])
def listen():
"""This is the main function flask uses to
listen at the `/webhook` endpoint"""
if request.method == 'GET':
return verify_webhook(request)
if request.method == 'POST':
payload = request.get_json()
print(payload)
event = payload['entry'][0]['messaging']
for x in event:
if is_user_message(x):
text = x['message']['text']
sender_id = x['sender']['id']
respond(sender_id, text)
return "ok", 200
【问题讨论】:
-
一种与 Messenger 无关的可能解决方案是使用多处理来响应消息,同时立即发送 200 回复
-
我宁愿不经历那个。这不会增加响应时间吗? Messenger Graph API 是否存在某种超时,使其重新发送请求?有没有办法增加超时时间?
标签: python-3.x rest flask http-post facebook-messenger-bot