Создание Google Chat Space с учетной записью службыPython

Программы на Python
Anonymous
Создание Google Chat Space с учетной записью службы

Сообщение Anonymous »

Я использую Google Chat API (

Код: Выделить всё

google.apps.chat_v1). Я намерен написать код, который будет:
[list]
[*]Получать данные от Pub/Sub с сообщением и адресом электронной почты
[*]Создайте новое пространство DIRECT_MESSAGE
для этого пользователя, если оно еще не существует
[*]Отправьте пользователю сообщение в чате
[/list]
Отправка сообщений в существующие пространства работает нормально, но я просто не могу придумать, как создать новое пространство.
Вот код настройки, который я тестирую:

Код: Выделить всё

from google.apps import chat_v1
from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/chat.bot',
'https://www.googleapis.com/auth/chat.spaces.create',
'https://www.googleapis.com/auth/chat.memberships']

creds = service_account.Credentials.from_service_account_file('service-account.json')
client = chat_v1.ChatServiceClient(
credentials=creds,
client_options={'scopes': SCOPES },
)

Код: Выделить всё

client.set_up_space
Параметры для этого позволяют определить пространство с элементами любого типа, но все запросы завершаются неудачно, поскольку этот метод не поддерживается в учетных записях служб.
Согласно документации: чтобы создать DM между вызывающим пользователем и вызывающим приложением, установите для Space.singleUserBotDm значение true и не указывайте членство. Но с помощью следующего кода я все равно неудивительно, что получаю ошибку «Не поддерживается»:

Код: Выделить всё

>>> request = chat_v1.SetUpSpaceRequest(space=chat_v1.Space(space_type=chat_v1.Space.SpaceType.DIRECT_MESSAGE, single_user_bot_dm=True))
>>> client.set_up_space(request)
google.api_core.exceptions.PermissionDenied:
403 This method doesn't support service account authentication.
Authenticate with a user account.
Это означает, что мне нужно использовать «приложение для звонков», но я не уверен, что это такое. Я проверил страницу API и сервисов и не увидел никаких других учетных данных, кроме учетных данных OAuth, которые требуют запуска сервера InstalledAppFlow (что невозможно для веб-службы, поскольку она загружает " войдите с помощью Google", как только запустите ее).

Код: Выделить всё

client.create_space
Другой метод говорит, что поддерживает только тип SPACE.

Код: Выделить всё

>>> request = chat_v1.CreateSpaceRequest(space=chat_v1.Space(space_type=chat_v1.Space.SpaceType.SPACE, display_name='Test Space'))
>>> client.create_space(request)
google.api_core.exceptions.InvalidArgument:
400 Missing or malformed resource name in the request.
Make sure the customer id resource name follows this format: customers/{customer}'

Код: Выделить всё

CreateSpaceRequest
only занимает пробел в качестве аргумента, поэтому я даже не уверен, как его использовать. Поиск соответствующего кода на GitHub не помог.

На данный момент я немного застрял в том, что делать дальше. Буду признателен за некоторые советы.
После этого я увидел, что на странице Chat Auth написано, что «аутентификация приложения» не поддерживается при создании пространств, но документация противоречит этому, говоря, что вызывающее приложение может создать DM для пользователя, поэтому я совсем не уверен, что здесь возможно, а что нет.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ce-account

Вернуться в «Python»