Я работаю над чат-ботом, который будет возвращать определенную информацию на основе вопроса пользователя. Процесс получения этой информации, скорее всего, займет пару секунд, и я хочу убедиться, что пользователь об этом знает.
Поэтому я использую предложение из этого вопроса о переполнении стека, и вернуть первое сообщение через 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
Почему это происходит? Что я могу сделать, чтобы порядок остался прежним?
Спасибо!