Получать и отвечать на действия пользователей

На этой странице описано, как ваше приложение Google Chat может получать и реагировать на действия пользователя, также известные как события взаимодействия с приложением Google Chat .

На этой странице описано, как сделать следующее:

  • Настройте приложение чата для получения событий взаимодействия.
  • Обработайте событие взаимодействия в своей инфраструктуре.
  • При необходимости реагируйте на события взаимодействия.

Предварительные условия

Приложение Google Chat с интерактивными функциями. Чтобы создать интерактивное приложение чата, выполните одно из следующих кратких руководств в зависимости от архитектуры приложения , которую вы хотите использовать:

Типы событий взаимодействия

Событие взаимодействия с приложением Google Chat представляет собой любое действие, которое пользователь предпринимает для вызова приложения Chat или взаимодействия с ним, например @упоминание приложения Chat или добавление его в пространство.

Когда пользователи взаимодействуют с приложением Chat, Google Chat отправляет приложению Chat событие взаимодействия, представленное как тип Event в Chat API. Приложение чата может использовать это событие для обработки взаимодействия и, при необходимости, ответить сообщением.

Для каждого типа взаимодействия с пользователем Google Chat отправляет разные типы событий взаимодействия, которые помогают вашему приложению Chat обрабатывать каждый тип событий соответствующим образом. Тип события взаимодействия представлен с помощью объекта eventType .

Например, Google Chat использует тип события ADDED_TO_SPACE для любого взаимодействия, когда пользователь добавляет приложение Chat в пространство, чтобы приложение Chat могло немедленно ответить приветственным сообщением в пространстве .

Приложение чата отправляет приветственное сообщение.
Рисунок 1. Когда пользователь добавляет приложение Chat в пространство, приложение Chat получает событие взаимодействия ADDED_TO_SPACE , которое приложение Chat обрабатывает для отправки приветственного сообщения в пространство.

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

Взаимодействие с пользователем eventType Типичный ответ из приложения Chat
Пользователь вызывает приложение чата, @упомянув его или используя косую черту. MESSAGE Приложение Chat отвечает в зависимости от содержания сообщения. Например, приложение Chat отвечает на команду /about сообщением, объясняющим задачи, которые может выполнять приложение Chat.
Пользователь добавляет приложение Chat в пространство. ADDED_TO_SPACE Приложение Chat отправляет вводное сообщение , в котором объясняется, что оно делает и как пользователи в пространстве могут с ним взаимодействовать.
Пользователь удаляет приложение Chat из пространства. REMOVED_FROM_SPACE Приложение Chat удаляет все входящие уведомления, настроенные для этого пространства (например, удаление веб-перехватчика ), и очищает всю внутреннюю память.
Пользователь нажимает кнопку на карточке в сообщении, диалоговом окне или на домашней странице приложения Chat. CARD_CLICKED Приложение «Чат» либо обрабатывает и сохраняет любые данные, отправленные пользователем, либо возвращает другую карту.
Пользователь открывает домашнюю страницу приложения «Чат», щелкнув вкладку «Главная» в сообщении 1:1. APP_HOME Приложение «Чат» возвращает статическую или интерактивную карточку с главной страницы.
Пользователь отправляет форму с главной страницы приложения Chat. SUBMIT_FORM Приложение «Чат» либо обрабатывает и сохраняет любые данные, отправленные пользователем, либо возвращает другую карту.

Чтобы просмотреть все поддерживаемые события взаимодействия, обратитесь к справочной документации EventType .

События взаимодействия из диалогов

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

  • Для isDialogEvent установлено значение true .
  • DialogEventType уточняет, вызывает ли взаимодействие открытие диалогового окна, отправляет ли информация из диалогового окна или закрывает диалоговое окно.

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

Взаимодействие пользователя с диалогом Тип события диалога Типичный ответ
Пользователь запускает запрос диалога. Например, они используют косую черту или нажимают кнопку в сообщении. REQUEST_DIALOG Приложение «Чат» открывает диалоговое окно.
Пользователь отправляет информацию в диалоговом окне, нажав кнопку. SUBMIT_DIALOG Приложение чата либо переходит к другому диалоговому окну, либо закрывает его для завершения взаимодействия.
Пользователь выходит или закрывает диалоговое окно перед отправкой информации. CANCEL_DIALOG При желании приложение «Чат» может ответить новым сообщением или обновить сообщение или карточку, с которой пользователь открыл диалог.

Дополнительную информацию см. в разделе Открытие интерактивных диалогов .

Получать события взаимодействия с приложением Chat

В этом разделе описывается, как получать и обрабатывать события взаимодействия для вашего приложения Chat.

Настройте приложение чата для получения событий взаимодействия.

Не все приложения чата являются интерактивными. Например, входящие веб-перехватчики могут отправлять только исходящие сообщения и не могут отвечать пользователям. Если вы создаете интерактивное приложение чата, вам необходимо выбрать конечную точку, которая позволит вашему приложению чата получать, обрабатывать и реагировать на события взаимодействия. Дополнительные сведения о разработке приложения Chat см. в разделе Архитектура реализации приложений Chat .

Для каждой интерактивной функции, которую вы хотите создать, вам необходимо обновить конфигурацию в Chat API, чтобы Google Chat мог отправлять связанные события взаимодействия в ваше приложение Chat:

  1. В консоли Google Cloud перейдите на страницу Chat API и нажмите страницу конфигурации :

    Перейдите на страницу конфигурации API чата.

  2. В разделе «Интерактивные функции » просмотрите настройки и обновите их в зависимости от функций, которые вы хотите создать:

    Поле Описание
    Функциональность Необходимый. Набор полей, определяющих, как приложение Chat может взаимодействовать с пользователями:
    • Получайте сообщения 1:1 . Пользователи могут находить приложение Chat и отправлять ему сообщения прямо в Google Chat.
    • Присоединяйтесь к группам и групповым беседам . Пользователи могут добавлять приложение Chat в группы и групповые беседы.
    Настройки подключения Необходимый. Конечная точка для приложения Chat, которая может быть одной из следующих:
    • URL-адрес конечной точки HTTP : конечная точка HTTPS, на которой размещается реализация приложения Chat.
    • Apps Script : идентификатор развертывания проекта Apps Script, реализующего приложение Chat.
    • Название темы Cloud Pub/Sub : тема Pub/Sub, на которую приложение Chat подписывается в качестве конечной точки.
    • Dialogflow : регистрирует приложение Chat с интеграцией Dialogflow. Дополнительные сведения см. в разделе Создание приложения Google Chat Dialogflow, понимающего естественный язык .
    Слэш-команды Необязательный. Команды, которые могут быть доступны пользователям в Google Chat. Позволяет пользователям видеть основные действия вашего приложения Chat в Google Chat и выбирать конкретное действие, с которым они хотят взаимодействовать. Дополнительные сведения см. в разделе «Реагирование на команды с косой чертой в приложении чата» .
    Предварительный просмотр ссылок Необязательный. Шаблоны URL-адресов, которые приложение Chat распознает и предоставляет дополнительный контент, когда пользователи отправляют ссылки. Дополнительную информацию см. в разделе Ссылки для предварительного просмотра .
    Видимость Необязательный. До пяти человек или одна или несколько групп Google, которые могут просматривать и устанавливать ваше приложение Chat. Используйте это поле, чтобы протестировать приложение Chat или поделиться им со своей командой. Дополнительные сведения см. в разделе Тестирование интерактивных функций .
  3. Нажмите Сохранить . Когда вы сохраняете конфигурацию приложения Chat, оно становится доступным указанным пользователям в вашей организации Google Workspace.

Ваше приложение Chat теперь настроено на получение событий взаимодействия из Google Chat.

Обработка повторных HTTP-вызовов в вашу службу

Если запрос HTTPS к вашей службе завершается неудачей (например, из-за тайм-аута, временного сбоя сети или кода состояния HTTPS, отличного от 2xx), Google Chat может повторить попытку доставки несколько раз в течение нескольких минут (но это не гарантируется). В результате в определенных ситуациях приложение чата может получать одно и то же сообщение несколько раз. Если запрос завершается успешно, но возвращает недопустимые полезные данные сообщения, Google Chat не повторяет запрос.

Обрабатывать или реагировать на события взаимодействия

В этом разделе объясняется, как приложения Google Chat могут обрабатывать события взаимодействия и реагировать на них.

После того как ваше приложение Chat получит событие взаимодействия от Google Chat, оно может отреагировать разными способами. Во многих случаях интерактивные приложения чата отвечают пользователю сообщением. Приложение Google Chat также может искать некоторую информацию из источника данных, записывать информацию о событиях взаимодействия или что-то еще. Такое поведение обработки, по сути, и определяет приложение Google Chat.

Чтобы ответить синхронно, приложение Chat должно ответить в течение 30 секунд, а ответ должен быть опубликован в том месте, где произошло взаимодействие. В противном случае приложение Chat может ответить асинхронно.

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

На следующей диаграмме показано, как приложение Google Chat обычно обрабатывает различные типы событий взаимодействия или реагирует на них.

Архитектура обработки событий взаимодействия приложениями Google Chat.

Отвечайте в режиме реального времени

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

Чтобы ответить в режиме реального времени, приложение Chat должно вернуть объект Message . Чтобы ответить сообщением в пространстве, объект Message может содержать объекты text , cardsV2 и accessoryWidgets . Для использования с другими типами ответов см. следующие руководства:

Ответить сообщением

В этом примере ваше приложение чата создает и отправляет текстовое сообщение всякий раз, когда оно добавляется в пространство. Дополнительные сведения о рекомендациях по адаптации пользователей см. в разделе Знакомство пользователей с вашим приложением чата .

Чтобы отправить текстовое сообщение, когда пользователь добавляет ваше приложение Chat в пространство, ваше приложение Chat реагирует на событие взаимодействия ADDED_TO_SPACE . Чтобы ответить на события взаимодействия ADDED_TO_SPACE текстовым сообщением, используйте следующий код:

Node.js

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} req The event object from Chat API.
 * @param {Object} res The response object from the Chat app. An onboarding message that
 * introduces the app and helps people get started with it.
 */
exports.onMessage = function onMessage(req, res) {
  if (req.method === 'GET' || !req.body.message) {
    res.send(
      'Hello! This function is meant to be used in a Google Chat space.');
  }

  // Send an onboarding message when added to a Chat space
  if (req.body.type === 'ADDED_TO_SPACE') {
    res.json({
      'text': 'Hi, Cymbal at your service. I help you manage your calendar
      from Google Chat. Take a look at your schedule today by typing
      `/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To
      learn what else I can do, type `/help`.'
    });
  }
};

Скрипт приложений

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} event The event object from Chat API.
 * @return {Object} Response from the Chat app. An onboarding message that
 * introduces the app and helps people get started with it.
 */
function onAddToSpace(event) {

  return {
    'text': 'Hi, Cymbal at your service. I help you manage your calendar
    from Google Chat. Take a look at your schedule today by typing
    `/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To learn
    what else I can do, type `/help`.'
  }
}

Пример кода возвращает следующее текстовое сообщение:

Пример вводного сообщения.

Отвечать асинхронно

Иногда приложения чата должны реагировать на событие взаимодействия через 30 секунд или выполнять задачи за пределами пространства, в котором было создано событие взаимодействия. Например, приложению чата может потребоваться ответить пользователю после выполнения длительной задачи. В этом случае приложения чата могут реагировать асинхронно, вызывая API чата Google.

Чтобы создать сообщение с помощью Chat API, см. раздел Создание сообщения . Руководства по использованию дополнительных методов Chat API см. в обзоре Chat API .