【发布时间】:2020-12-04 01:45:08
【问题描述】:
我正在开发一个聊天机器人,它会根据用户的问题返回特定的信息。获取此信息的过程可能需要几秒钟,我想确保用户知道这一点。
因此,我使用来自 stackoverflow question 的建议,并通过服务帐户通过 REST API 返回第一条消息。
第二条机器人消息然后通过正常实现。我正在使用来自 basic bot here 的模板,部署到 Google Cloud App Engine。
这是我的代码的 sn-p:
@app.route("/", methods=["POST"])
def home_post():
"""Respond to POST requests to this endpoint.
All requests sent to this endpoint from Hangouts Chat are POST
requests.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
"credentials.json", scopes=SCOPES
)
http = httplib2.Http()
chat = discovery.build("chat", "v1", http=credentials.authorize(http))
event_data = request.get_json()
thread = event_data["message"]["thread"]
message = {"text": "Thanks for your question! Let me check :)", "thread": thread}
chat.spaces().messages().create(
parent=event_data["space"]["name"], body=message
).execute()
# doing something to find information requested by user
return json.jsonify({"text": "Here is my answer :)"})
一切都按预期工作,除了聊天中的第一条消息被放置在初始机器人提及之前,第二条消息通过之后(如录音或屏幕截图所示)。
录音:https://www.loom.com/share/c37472b703184965ad9ee649cb9f17bc
为什么会这样?我该怎么做才能确保订单保持不变?
谢谢!
【问题讨论】:
-
请注意,这仅适用于房间。直接在 DM 中向机器人发送消息时,消息的顺序是正确的。
标签: python-3.x hangouts-chat hangouts-api google-chat