Google Hangouts Чат бот для отправки DM через входящий webhook?

Можно ли настроить этого простого бота, используя входящий веб-крючок, но отправить сообщение в виде DM (а не @mention) конкретному пользователю (-ям)?
Я думаю, нет. Но тогда как мне этого добиться?

Прямо сейчас, сообщение просто отправляется в комнату, в которой был добавлен бот, и я не вижу ничего на DM в документации по обмену сообщениями.

В настоящее время вы можете достичь этого очень легко в Slack, настроив так называемого пользователя бота и используя егоchat.postMessage но я бы хотел сделать это в чате Google Hangouts.

from httplib2 import Http
from json import dumps

#
# Hangouts Chat incoming webhook quickstart
#
def main():
    url = '<INCOMING-WEBHOOK-URL>'
    bot_message = {
        'text' : 'Hello from Python script!'}

    message_headers = { 'Content-Type': 'application/json; charset=UTF-8'}

    http_obj = Http()

    response = http_obj.request(
        uri=url,
        method='POST',
        headers=message_headers,
        body=dumps(bot_message),
    )

    print(response)

if __name__ == '__main__':
    main()

1 ответ

На данный момент вам понадобится их Space ID или URL-адрес веб-крючка для того, чтобы DM лично отправлял пользователю информацию о том, используете ли вы веб-крючок (как вы это сделали) или REST API. Если у вас нет этого Space ID/Webhook, вы не можете отправить сообщение пользователю. Один из способов получить его - запросить у пользователя spaceID и сохранить его. В любом случае, Google API не предоставил способ получить другой идентификатор пространства, отличный от текущего, о котором вы говорите. Это означает, что бот может сообщать только пользователям, с которыми он взаимодействовал в какой-то момент.

Текущее значение идентификатора пространства можно получить из события JSON (event['space']['name']), а затем с помощью messages.create отправить новое сообщение пользователю.

service.spaces().messages().create( parent = spaceName, body = response).execute()

ИЛИ его можно получить по https://chat.google.com/dm/ -> идентификатор пробела здесь <---

Google не выпустил ни одного способа создания вашего собственного spaceID для конкретного пользователя.

РЕДАКТИРОВАТЬ: Для того, чтобы получить URL-адрес webhook. Увидеть ниже:

затем скопируйте и вставьте URL-адрес webhook в приведенный выше код.

ВНИМАНИЕ. При необходимости этот URL-адрес веб-крючка может быть изготовлен с использованием обычного URL-адреса для чата Google с указанным выше идентификатором пространства, ключом и токеном доступа в следующем формате: https://chat.googleapis.com/v1/spaces/<пробел ID>/messages?key=A<ключ идет сюда> &token=<токен доступа здесь> Для получения информации о том, как получить ключ и токен доступа, ознакомьтесь с приведенной здесь документацией: https://developers.google.com/identity/protocols/OAuth2

Другие вопросы по тегам