我正在开发一个聊天机器人,它将根据用户的问题返回某些信息。获取此信息的过程可能需要几秒钟,我想确保用户知道这一点。
因此,我使用此stackoverflow question中的建议,并通过服务帐户通过 REST API 返回第一条消息。
然后,第二条机器人消息通过正常实现。我在这里使用基本机器人的模板,部署到 Google Cloud App Engine。
这是我的代码片段:
@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
为什么会这样?我能做些什么来确保订单保持不变?
谢谢!