На этой странице описано, как ваше приложение для чата может открывать диалоги для ответа пользователям.
Диалоги представляют собой оконные интерфейсы на основе карточек, которые открываются из пространства чата или сообщения. Диалог и его содержимое видны только пользователю, который его открыл.
Приложения для чата могут использовать диалоговые окна для запроса и сбора информации от пользователей чата, включая многошаговые формы. Более подробную информацию о создании полей ввода форм см. в разделе «Сбор и обработка информации от пользователей» .
Предварительные требования
Node.js
Приложение Google Chat, которое получает и обрабатывает события взаимодействия . Чтобы создать интерактивное приложение чата с использованием HTTP-сервиса, выполните следующие действия в этом кратком руководстве .Python
Приложение Google Chat, которое получает и обрабатывает события взаимодействия . Чтобы создать интерактивное приложение чата с использованием HTTP-сервиса, выполните следующие действия в этом кратком руководстве .Java
Приложение Google Chat, которое получает и обрабатывает события взаимодействия . Чтобы создать интерактивное приложение чата с использованием HTTP-сервиса, выполните следующие действия в этом кратком руководстве .Apps Script
Приложение Google Chat, которое получает и обрабатывает события взаимодействия . Чтобы создать интерактивное приложение чата в Apps Script, выполните следующие действия в этом кратком руководстве .Открыть диалог


В этом разделе объясняется, как ответить и начать диалог, выполнив следующие действия:
- Инициировать запрос на диалог на основе взаимодействия пользователя.
- Обработайте запрос, вернув управление и открыв диалоговое окно.
- После того, как пользователи отправят информацию, обработайте отправленные данные, либо закрыв диалоговое окно, либо вернув другое диалоговое окно.
Инициировать запрос на диалог
Приложение для чата может открывать диалоги только для ответа на действия пользователя, такие как команда или нажатие кнопки в сообщении в карточке.
Для ответа пользователям посредством диалога, чат-приложение должно создать взаимодействие, которое инициирует запрос на диалог, например, следующее:
- Ответить на команду. Чтобы инициировать запрос из команды, необходимо установить флажок «Открывает диалоговое окно» при настройке команды .
- Отвечайте на нажатие кнопки в сообщении , либо как часть карточки, либо внизу сообщения. Чтобы инициировать запрос с помощью кнопки в сообщении, настройте действие
onClickкнопки, установив для ееinteractionзначениеOPEN_DIALOG. - Реагируйте на нажатие кнопки на главной странице приложения чата . Чтобы узнать о создании диалоговых окон с главной страницы, см. раздел «Создание главной страницы для вашего приложения Google Chat» .

/addContact .В сообщении также содержится кнопка, нажав на которую пользователи могут запустить команду.
Приведённый ниже пример кода показывает, как инициировать запрос на открытие диалога с помощью кнопки в карточке сообщения. Для открытия диалога поле button.interaction устанавливается в OPEN_DIALOG :
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение в виде карточки, возвращая JSON-объект с именем карточки . Вы также можете использовать службу создания карточек Apps Script .
Откройте начальное диалоговое окно
Когда пользователь инициирует запрос на диалог, ваше приложение «Чат» получает событие взаимодействия, представленное в API чата в виде типа event . Если взаимодействие инициирует запрос на диалог, поле dialogEventType события устанавливается в значение REQUEST_DIALOG .
Для открытия диалогового окна ваше приложение чата может ответить на запрос, вернув объект actionResponse с type DIALOG и объектом Message . Для указания содержимого диалогового окна необходимо включить следующие объекты:
- Объект
actionResponse,typeкоторого установлен какDIALOG. - Объект
dialogAction. Полеbodyсодержит элементы пользовательского интерфейса (UI), которые будут отображаться в карточке, включая один или несколькоsectionsвиджетов. Для сбора информации от пользователей можно указать виджеты ввода формы и виджет кнопки. Подробнее о разработке полей ввода формы см. в разделе «Сбор и обработка информации от пользователей» .
Приведённый ниже пример кода показывает, как приложение чата возвращает ответ, который открывает диалоговое окно:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение в виде карточки, возвращая JSON-объект с именем карточки . Вы также можете использовать службу создания карточек Apps Script .
Обработка отправки диалога
Когда пользователи нажимают кнопку, которая отправляет диалоговое окно, ваше приложение «Чат» получает событие взаимодействия CARD_CLICKED где dialogEventType имеет значение SUBMIT_DIALOG . Чтобы узнать, как собирать и обрабатывать информацию из диалогового окна, см. раздел «Сбор и обработка информации от пользователей чата» .
Ваше приложение для чата должно реагировать на событие взаимодействия одним из следующих способов:
- Вернитесь в другое диалоговое окно , чтобы заполнить другую карточку или форму.
- Закройте диалоговое окно после проверки предоставленных пользователем данных и, при необходимости, отправьте подтверждающее сообщение.
Необязательно: Возврат к другому диалогу
После отправки пользователями первоначального диалога, приложения для чата могут возвращать один или несколько дополнительных диалогов, чтобы помочь пользователям проверить информацию перед отправкой, заполнить многоэтапные формы или динамически заполнить содержимое формы.
Для обработки данных, вводимых пользователями, приложение «Чат» использует объект event.common.formInputs . Подробнее о получении значений из полей ввода см. в разделе «Сбор и обработка информации от пользователей» .
Чтобы отслеживать данные, введенные пользователями в исходном диалоговом окне, необходимо добавить параметры к кнопке, открывающей следующее диалоговое окно. Подробнее см. раздел «Перенос данных на другую карточку» .
В этом примере приложение чата открывает первоначальное диалоговое окно, за которым следует второе диалоговое окно для подтверждения перед отправкой:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение в виде карточки, возвращая JSON-объект с именем карточки . Вы также можете использовать службу создания карточек Apps Script .
Закройте диалоговое окно
Когда пользователи нажимают кнопку в диалоговом окне, ваше приложение «Чат» выполняет соответствующее действие и передает объекту события следующую информацию:
-
eventType—CARD_CLICKED. -
dialogEventTypeимеет значениеSUBMIT_DIALOG.
Приложение чата должно вернуть объект ActionResponse с type DIALOG и заполненным значением dialogAction . Если действие не завершилось с ошибкой, то dialogAction.actionStatus должен быть OK как в следующем примере:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение в виде карточки, возвращая JSON-объект с именем карточки . Вы также можете использовать службу создания карточек Apps Script .
(Необязательно) Отобразить временное уведомление
При закрытии диалогового окна вы также можете отобразить временное текстовое уведомление пользователю, взаимодействующему с приложением.
Приложение «Чат» может ответить уведомлением об успехе или ошибке, вернув объект ActionResponse с установленным значением actionStatus .
В следующем примере проверяется допустимость параметров, и в случае недопустимости диалоговое окно закрывается с текстовым уведомлением:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение в виде карточки, возвращая JSON-объект с именем карточки . Вы также можете использовать службу создания карточек Apps Script .
Подробную информацию о передаче параметров между диалоговыми окнами см. в разделе «Передача данных на другую карту» .
(Необязательно) Отправить подтверждающее сообщение в чат.
После закрытия диалогового окна вы также можете отправить новое сообщение в чате или обновить существующее.
Для отправки нового сообщения верните объект ActionResponse с type NEW_MESSAGE . Следующий пример закрывает диалоговое окно с подтверждающим текстовым сообщением:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение в виде карточки, возвращая JSON-объект с именем карточки . Вы также можете использовать службу создания карточек Apps Script .
Для обновления сообщения верните объект actionResponse , содержащий обновленное сообщение и устанавливающий один из следующих type :
-
UPDATE_MESSAGE: Обновляет сообщение, вызвавшее запрос диалога . -
UPDATE_USER_MESSAGE_CARDS: Обновляет карточку на основе предварительного просмотра ссылки .
Устранение неполадок
Когда приложение или карточка Google Chat выдает ошибку, интерфейс чата отображает сообщение «Что-то пошло не так» или «Не удалось обработать ваш запрос». Иногда интерфейс чата не отображает никаких сообщений об ошибке, но приложение или карточка чата выдает неожиданный результат; например, сообщение на карточке может не появиться.
Хотя сообщение об ошибке может не отображаться в пользовательском интерфейсе чата, подробные сообщения об ошибках и данные журнала доступны для исправления ошибок, если включено ведение журнала ошибок для приложений чата. Для получения помощи по просмотру, отладке и исправлению ошибок см. раздел «Устранение неполадок и исправление ошибок Google Chat» .
Связанные темы
- Ознакомьтесь с примером приложения «Менеджер контактов» , представляющего собой чат-приложение, использующее диалоговые окна для сбора контактной информации.
- Открывать диалоги с главной страницы приложения Google Chat .
- Отвечайте на команды приложения Google Chat.
- Обработка информации, введенной пользователями.