На этой странице рассказывается, как приложение Google Chat может открывать диалоговые окна, чтобы показывать пользовательские интерфейсы и отвечать на запросы пользователей.
Диалоговые окна – это интерфейсы на основе карточек, которые открываются в окне из чат-группы или сообщения. Диалоговое окно и его содержимое видны только пользователю, который его открыл.
Приложения для Chat могут использовать диалоговые окна, чтобы запрашивать и собирать информацию у пользователей Chat, в том числе с помощью многоэтапных форм. Подробнее о том, как собирать и обрабатывать информацию от пользователей…
Требования
HTTP
Приложение Google Chat, которое получает и обрабатывает действия пользователей. Чтобы создать его, выполните краткое руководство по HTTP.
Apps Script
Приложение Google Chat, которое получает и обрабатывает действия пользователей. Чтобы создать такой скрипт, выполните инструкции по началу работы с Apps Script.
Открыть диалоговое окно
В этом разделе рассказывается, как отвечать на запросы и настраивать диалог, выполняя следующие действия:
- Запрос диалогового окна должен быть вызван действием пользователя.
- Обработайте запрос, вернув и открыв диалоговое окно.
- После того как пользователь отправит информацию, обработайте ее, закрыв диалоговое окно или открыв другое.
Как запустить запрос диалога
Приложение Chat может открывать диалоговые окна только в ответ на действия пользователя, например на команду или нажатие кнопки в сообщении на карточке.
Чтобы ответить пользователю с помощью диалогового окна, приложение Chat должно создать взаимодействие, которое запускает запрос диалогового окна, например:
- Ответить на команду. Чтобы запрос запускался с помощью команды, при настройке команды установите флажок Открывает диалоговое окно.
- Отвечать на нажатие кнопки в сообщении, которое может быть частью карточки или находиться внизу сообщения. Чтобы активировать запрос с помощью кнопки в сообщении, настройте действие
onClickкнопки, задав для параметраinteractionзначениеOPEN_DIALOG. - Как реагировать на нажатие кнопки на главной странице приложения Chat. Чтобы узнать, как открывать диалоговые окна с главной страницы, ознакомьтесь со статьей Как создать главную страницу для приложения Google Chat.
/addContact. В сообщении также есть кнопка, нажав на которую пользователи могут запустить команду.
В приведенном ниже фрагменте кода показано, как активировать запрос диалогового окна с помощью кнопки в сообщении-карточке. Чтобы открыть диалоговое окно, задайте для поля кнопки onClick.action.interaction значение OPEN_DIALOG:
Node.js
Замените FUNCTION_URL конечной точкой HTTP, которая обрабатывает нажатия кнопок.
Python
Замените FUNCTION_URL конечной точкой HTTP, которая обрабатывает нажатия кнопок.
Java
Замените FUNCTION_URL конечной точкой HTTP, которая обрабатывает нажатия кнопок.
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Как открыть диалоговое окно
Когда пользователь активирует запрос диалогового окна, ваше приложение Chat получает объект события с полезной нагрузкой, в которой объект dialogEventType указан как REQUEST_DIALOG.
Чтобы открыть диалоговое окно, приложение Chat может ответить на запрос, вернув объект RenderActions с навигацией pushCard для показа карточки. Карточка должна содержать любые элементы пользовательского интерфейса, в том числе один или несколько виджетов sections[]. Чтобы собирать информацию от пользователей, можно указать виджеты для ввода данных в форму и виджет кнопки. Подробнее о том, как создавать поля форм, рассказывается в статье Как собирать и обрабатывать информацию от пользователей.
В приведенном ниже фрагменте кода показано, как приложение Chat возвращает ответ, который открывает диалоговое окно:
Node.js
Замените FUNCTION_URL конечной точкой HTTP, которая обрабатывает нажатия кнопок.
Python
Замените FUNCTION_URL конечной точкой HTTP, которая обрабатывает нажатия кнопок.
Java
Замените FUNCTION_URL конечной точкой HTTP, которая обрабатывает нажатия кнопок.
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Как обрабатывать отправку диалогового окна
Когда пользователь нажимает кнопку, отправляющую диалоговое окно, приложение Chat получает объект события с объектом buttonClickedPayload. В полезной нагрузке для параметра dialogEventType задано значение SUBMIT_DIALOG. Чтобы узнать, как собирать и обрабатывать информацию из диалогового окна, ознакомьтесь со статьей Как собирать и обрабатывать информацию от пользователей Google Chat.
Приложение Chat должно отреагировать на объект события одним из следующих способов:
- Вернуть другое диалоговое окно, чтобы заполнить другую карточку или форму.
- Закройте диалоговое окно после проверки данных, отправленных пользователем, и при необходимости отправьте сообщение с подтверждением.
Как вернуться к другому диалоговому окну (необязательно)
После того как пользователь отправит первый диалог, приложения Chat могут вернуть один или несколько дополнительных диалогов, чтобы помочь пользователям проверить информацию перед отправкой, заполнить многоэтапные формы или динамически заполнить контент формы.
Чтобы обработать данные, введенные пользователями, приложение Chat обрабатывает данные в объекте commonEventObject.formInputs события. Подробнее о том, как собирать и обрабатывать информацию от пользователей…
Чтобы отслеживать данные, которые пользователи вводят в первом диалоговом окне, необходимо добавить параметры к кнопке, открывающей следующее диалоговое окно. Подробнее о том, как перенести данные на другую карту…
В этом примере приложение Chat открывает первое диалоговое окно, а затем второе, чтобы пользователь мог подтвердить отправку:
Node.js
Замените FUNCTION_URL конечной точкой HTTP, которая обрабатывает нажатия кнопок.
Python
Замените FUNCTION_URL конечной точкой HTTP, которая обрабатывает нажатия кнопок.
Java
Замените FUNCTION_URL конечной точкой HTTP, которая обрабатывает нажатия кнопок.
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Закрыть диалоговое окно
Когда пользователь нажимает кнопку отправки в диалоговом окне, приложение Chat выполняет связанное с ней действие и предоставляет объект события со значением buttonClickedPayload, заданным следующим образом:
isDialogEvent:true.dialogEventType:SUBMIT_DIALOG.
Приложение Chat должно вернуть объект RenderActions с параметром endNavigation, для которого задано значение CLOSE_DIALOG (endNavigation: "CLOSE_DIALOG").
Как показывать временные уведомления (необязательно)
После закрытия диалогового окна можно также показать пользователю, взаимодействующему с приложением, временное текстовое уведомление.
Чтобы показать уведомление, верните объект RenderActions с заданным полем notification.
В примере ниже показано, как закрыть диалоговое окно с текстовым уведомлением.
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Подробнее о том, как передавать данные на другую карточку…
Как отправить подтверждающее сообщение в чате (необязательно)
После закрытия диалогового окна вы также можете отправить новое сообщение Chat или изменить существующее.
Чтобы отправить новое сообщение, верните объект DataActions с полем CreateMessageAction, в котором указано новое сообщение.
В примере ниже диалоговое окно закрывается путем отправки нового сообщения:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Чтобы обновить сообщение после того, как пользователь отправит диалоговое окно, верните объект DataActions, содержащий одно из следующих действий:
UpdateMessageAction: Обновляет сообщение, отправленное приложением Chat, например сообщение, из которого пользователь запросил диалоговое окно.UpdateInlinePreviewAction: обновляет карточку на основе предпросмотра ссылки.
Устранение неполадок
Если приложение Google Chat или карточка возвращает ошибку, в интерфейсе Chat появляется сообщение "Что-то пошло не так". или "Не удалось обработать запрос". Иногда в интерфейсе Chat не показывается сообщение об ошибке, но приложение Chat или карточка выдает неожиданный результат, например не появляется сообщение на карточке.
Хотя в интерфейсе Chat может не показываться сообщение об ошибке, при включенном ведении журнала ошибок для приложений Chat вам будут доступны подробные сообщения об ошибках и данные журнала, которые помогут устранить неполадки. Чтобы узнать, как просматривать, отлаживать и исправлять ошибки, ознакомьтесь с разделом Устранение неполадок в Google Chat.
Статьи по теме
- Посмотрите пример приложения "Менеджер контактов" – приложения Chat, которое использует диалоговые окна для сбора контактной информации.
- Открывать диалоговые окна на главной странице приложения Google Chat.
- Как отвечать на команды приложений Google Chat
- Обрабатывать информацию, введенную пользователями
Приложения для чата, не являющиеся дополнениями: открытие интерактивных диалоговых окон
Ниже приведена документация по приложениям Chat, которые не являются дополнениями Google Workspace. Чтобы перенести приложение Chat, которое не является дополнением, ознакомьтесь со статьей Как преобразовать приложение Google Chat в дополнение Google Workspace.
Как запустить запрос диалога
В приведенном ниже фрагменте кода показано, как приложение Chat, не являющееся дополнением, активирует запрос диалогового окна с помощью кнопки в сообщении-карточке. Чтобы открыть диалоговое окно, в поле button.interaction должно быть указано значение OPEN_DIALOG:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Как открыть диалоговое окно
Когда пользователь запрашивает диалоговое окно, приложение Chat, которое не является дополнением, получает событие взаимодействия, представленное в Chat API как тип event. Если взаимодействие вызывает запрос диалогового окна, в поле dialogEventType события устанавливается значение REQUEST_DIALOG.
Чтобы открыть диалоговое окно, приложение Chat, не являющееся дополнением, может ответить на запрос, вернув объект actionResponse с type: "DIALOG" и объектом Message. Чтобы задать содержимое диалогового окна, добавьте следующие объекты:
- Объект
actionResponse, для свойстваtypeкоторого задано значениеDIALOG. - Объект
dialogAction. Полеbodyсодержит элементы пользовательского интерфейса, которые будут отображаться на карточке, в том числе один или несколько виджетовsections. Чтобы собирать информацию от пользователей, можно указать виджеты для ввода данных в форму и виджет кнопки.
В приведенном ниже фрагменте кода показано, как приложение Chat, которое не является дополнением, возвращает ответ, открывающий диалоговое окно:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Как обрабатывать отправку диалогового окна
Когда пользователь нажимает кнопку, отправляющую диалоговое окно, приложение Chat, не являющееся дополнением, получает событие взаимодействия CARD_CLICKED, в котором dialogEventType имеет значение SUBMIT_DIALOG.
Как вернуться к другому диалоговому окну (необязательно)
Чтобы обработать данные, которые пользователи вводят в приложении Chat, не являющемся дополнением, приложение Chat использует объект event.common.formInputs.
В этом примере приложение Chat, которое не является дополнением, открывает диалоговое окно, а затем ещё одно, чтобы пользователь мог подтвердить отправку:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Закрыть диалоговое окно
Когда пользователь нажимает кнопку в диалоговом окне, приложение Chat, не являющееся дополнением, выполняет связанное с ней действие и предоставляет объект события со следующей информацией:
eventType–CARD_CLICKED.dialogEventType–SUBMIT_DIALOG.
Приложение Chat, которое не является дополнением, должно возвращать объект ActionResponse, в котором для параметра type задано значение DIALOG, а параметр dialogAction заполнен. Если действие не завершилось ошибкой, то параметр dialogAction.actionStatus должен иметь значение OK, как в следующем примере:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Как показывать временные уведомления (необязательно)
Приложение Chat, которое не является дополнением, может отправить уведомление об успешном выполнении или ошибке, вернув объект ActionResponse с заданным значением actionStatus.
В примере ниже проверяется, действительны ли параметры, и закрывается диалоговое окно с текстовым уведомлением, если они недействительны:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Как отправить подтверждающее сообщение в чате (необязательно)
Чтобы отправить новое сообщение при закрытии диалогового окна в приложении Chat, которое не является дополнением, верните объект ActionResponse с type: "NEW_MESSAGE". В следующем примере диалоговое окно закрывается с помощью текстового сообщения с подтверждением:
Node.js
Python
Java
Apps Script
В этом примере отправляется сообщение с карточкой, для чего возвращается JSON-код карточки. Вы также можете использовать сервис карточек Apps Script.
Чтобы обновить сообщение, верните объект actionResponse, содержащий обновленное сообщение, и задайте для параметра type одно из следующих значений:
UPDATE_MESSAGE: обновляет сообщение, вызвавшее запрос диалогового окна.UPDATE_USER_MESSAGE_CARDS– обновляет карточку на основе предпросмотра ссылки.