Свяжите приложение чата с другими сервисами и инструментами

Хотя приложения эффективны сами по себе, они часто работают совместно с другими системами и требуют сопутствующих приложений для подключения учетных записей, авторизации доступа к данным, отображения дополнительных данных или настройки пользовательских настроек.

Запросить конфигурацию приложения

В дополнение к представлению URL-адресов как части обычного ответа, приложения могут конфиденциально предоставлять пользователю URL-адрес конфигурации в ответ на сообщение.

Вернуть URL-адрес конфигурации

Если для выполнения запроса требуется дополнительная настройка, которую нельзя выполнить непосредственно в приложении, верните ответ в следующем виде:

{
  "actionResponse": {
    "type": "REQUEST_CONFIG",
    "url": "<your-config-URL>"
  }
}

Это говорит Google Chat представить пользователю личное приглашение со ссылкой для посещения предоставленного URL-адреса конфигурации для аутентификации, авторизации или настройки. Ответ запроса-конфигурации несовместим с обычным ответным сообщением. Любой текст, карточки или другие атрибуты игнорируются.

Приложение предлагает пользователю указать URL-адрес конфигурации.

Каждое событие вашего приложения также включает параметр configCompleteRedirectUrl . Этот URL-адрес должен быть закодирован в URL-адресе вашей конфигурации, который будет использоваться после завершения процесса. Перенаправление на этот URL сигнализирует Google Chat, что запрос конфигурации был выполнен.

Когда ваше приложение запускается, поток может зависеть от конкретного полученного сообщения. В ответ на сообщение типа @app help приложение должно ответить сообщением, не требуя дополнительной настройки.

Когда пользователь успешно перенаправляется на configCompleteRedirectUrl , указанный в исходном сообщении, Google Chat выполняет следующие шаги:

  1. Стереть подсказку, которая отображалась для инициирующего пользователя
  2. Преобразуйте исходное сообщение в общедоступное, чтобы оно было видно другим участникам пространства.
  3. Отправить исходное сообщение в то же приложение во второй раз

Посещение configCompleteRedirectUrl влияет только на одно пользовательское сообщение. Если пользователь пытался отправить сообщение приложению несколько раз и в результате получил несколько подсказок, щелчок по определенной подсказке и завершение процесса аутентификации/настройки влияет только на это конкретное сообщение/подсказку. Другие сообщения и подсказки остаются без изменений.

Когда событие повторно отправляется таким образом, оно обычно должно быть идентично исходному событию; однако в некоторых ситуациях события могут отличаться. Например, когда в сообщении упоминаются и приложение A, и приложение B, пользователь сможет редактировать текст сообщения, если приложение A отвечает обычным сообщением перед аутентификацией в приложении B. В этом случае приложение B получит отредактированный текст сообщения. после того, как пользователь завершит аутентификацию.

Идентифицировать пользователя в сообщениях приложения

Каждое сообщение, отправляемое в ваше приложение, включает личность пользователя, взаимодействующего с приложением.

Пример фрагмента JSON ниже показывает ожидаемый формат удостоверения пользователя в сообщении для вашего приложения.

{
  ...,
  "user": {
    "name": "users/12345678901234567890",
    "displayName": "Sasha",
    "avatarUrl": "https://lh3.googleusercontent.com/.../photo.jpg",
    "email": "sasha@example.com"
  }
}

Используйте значение свойства users.name в качестве основного идентификатора пользователя. Значение представляет собой стабильный и уникальный идентификатор для каждого пользователя.

Идентифицировать пользователя чата за пределами Google Chat

В некоторых случаях, например при запросе авторизации OAuth для API, ваше приложение должно ссылаться на URL-адрес за пределами Google Chat, сохраняя при этом идентификацию пользователя. Лучший способ идентифицировать пользователя в таких случаях — защитить целевое приложение с помощью Google Sign-in .

Используйте токен удостоверения , выданный во время входа, чтобы получить идентификатор пользователя. sub содержит уникальный идентификатор пользователя и может быть сопоставлена ​​с идентификатором из Google Chat.

Хотя два идентификатора не совсем идентичны, их легко подделать. Чтобы привести значение sub к имени пользователя Google Chat, добавьте к значению "users/" в начале. Например, значение утверждения 123 эквивалентно имени пользователя users/123 в сообщениях для вашего приложения Chat.

Полный пример

Приложение MyProfile демонстрирует, как использовать ответ REQUEST_CONFIG для инициации настройки приложения и использует токен удостоверения из ответа Google Sign-in для идентификации пользователя.