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


Приложения для чата запрашивают у пользователей информацию для выполнения действий внутри или вне чата, в том числе следующими способами:
- Настройте параметры. Например, позвольте пользователям настраивать параметры уведомлений или настройте и добавьте приложение «Чат» в одно или несколько пространств.
- Создавайте или обновляйте информацию в других приложениях Google Workspace. Например, позвольте пользователям создавать события в Google Календаре.
- Предоставьте пользователям доступ к ресурсам других приложений или веб-сервисов и возможность их обновления. Например, приложение для чата может помочь пользователям обновлять статус заявки в службу поддержки непосредственно из чата.
Предварительные требования
Node.js
Приложение Google Chat, которое получает и обрабатывает события взаимодействия . Чтобы создать интерактивное приложение чата с использованием HTTP-сервиса, выполните следующие действия в этом кратком руководстве .Python
Приложение Google Chat, которое получает и обрабатывает события взаимодействия . Чтобы создать интерактивное приложение чата с использованием HTTP-сервиса, выполните следующие действия в этом кратком руководстве .Java
Приложение Google Chat, которое получает и обрабатывает события взаимодействия . Чтобы создать интерактивное приложение чата с использованием HTTP-сервиса, выполните следующие действия в этом кратком руководстве .Apps Script
Приложение Google Chat, которое получает и обрабатывает события взаимодействия . Чтобы создать интерактивное приложение чата в Apps Script, выполните следующие действия в этом кратком руководстве .Создавайте формы с помощью карточек.
Для сбора информации чат-приложения разрабатывают формы и поля ввода, а затем встраивают их в карточки. Для отображения карточек пользователям чат-приложения могут использовать следующие интерфейсы чата:
- Сообщения , содержащие одну или несколько открыток.
- «Домашние страницы» — это карточка, которая появляется на вкладке «Главная» в личных сообщениях в приложении «Чат».
- Диалоговые окна — это карточки, которые открываются в новом окне из сообщений и с главных страниц сайтов.
В чат-приложениях для создания карточек можно использовать следующие виджеты:
Виджеты ввода форм, запрашивающие информацию у пользователей. При желании можно добавить проверку данных в виджеты ввода форм, чтобы убедиться, что пользователи вводят и форматируют информацию правильно. В чат-приложениях можно использовать следующие виджеты ввода форм:
- Поля ввода текста (
textInput) для ввода произвольного текста или предлагаемых вариантов. - Элементы ввода выбора (
selectionInput) — это выбираемые элементы пользовательского интерфейса, такие как флажки, переключатели и выпадающие меню. Виджеты ввода выбора также могут заполнять элементы из статических или динамических источников данных. Например, пользователи могут выбрать из списка чат-пространств, в которых они состоят. - Элементы выбора даты и времени (
dateTimePicker) для ввода даты и времени.
- Поля ввода текста (
Кнопка- виджет, позволяющая пользователям вводить значения, указанные в карточке. После нажатия кнопки приложение чата обрабатывает полученную информацию .
В следующем примере карточка собирает контактную информацию с помощью текстового поля ввода, поля выбора даты и времени, а также поля для выбора:
Пример приложения для чата, использующего эту контактную форму, можно увидеть в следующем коде:
Node.js
Python
Java
Apps Script
Дополнительные примеры интерактивных виджетов, которые можно использовать для сбора информации, см. в разделе «Создание интерактивной карточки или диалогового окна» .
Получайте данные из интерактивных виджетов.
При каждом нажатии пользователем кнопки приложения чата получают событие взаимодействия, зависящее от местоположения кнопки:
Если кнопка находится в сообщении или диалоговом окне, приложения чата получают событие взаимодействия
CARD_CLICKED, содержащее информацию о взаимодействии. Полезная нагрузка событий взаимодействияCARD_CLICKEDсодержит объектcommon.formInputsсо всеми значениями, которые вводит пользователь.Значения можно получить из объекта
common.formInputs. WIDGET_NAME, где WIDGET_NAME — этоnameполя, указанное вами для виджета. Значения возвращаются в виде данных определенного типа для виджета (представленного в виде объектаInputs).Ниже показан фрагмент события взаимодействия
CARD_CLICKED, в котором пользователь ввел значения для каждого виджета:HTTP
{ "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] }}, "contactBirthdate": { "dateInput": { "msSinceEpoch": 1000425600000 }}, "contactType": { "stringInputs": { "value": ["Personal"] }} }} }Apps Script
{ "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }}}, "contactBirthdate": { "": { "dateInput": { "msSinceEpoch": 1000425600000 }}}, "contactType": { "": { "stringInputs": { "value": ["Personal"] }}} }} }Если кнопка находится на главной странице , приложения чата получают событие взаимодействия
SUBMIT_FORM. Полезная нагрузка события взаимодействия содержит объектcommonEventObject.formInputsсо всеми значениями, которые вводит пользователь.Значения можно получить из объекта
commonEventObject.formInputs. WIDGET_NAME, где WIDGET_NAME — этоnameполя, указанное вами для виджета. Значения возвращаются в виде данных определенного типа для виджета (представленного в виде объектаInputs).Ниже показан фрагмент события взаимодействия
SUBMIT_FORM, в котором пользователь ввел значения для каждого виджета:HTTP
{ "type": "SUBMIT_FORM", "commonEventObject": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] }}, "contactBirthdate": { "dateInput": { "msSinceEpoch": 1000425600000 }}, "contactType": { "stringInputs": { "value": ["Personal"] }} }} }Apps Script
{ "type": "SUBMIT_FORM", "commonEventObject": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }}}, "contactBirthdate": { "": { "dateInput": { "msSinceEpoch": 1000425600000 }}}, "contactType": { "": { "stringInputs": { "value": ["Personal"] }}} }} }
Для получения данных ваше приложение чата обрабатывает событие взаимодействия, чтобы получить значения, которые пользователи вводят в виджеты. В следующей таблице показано, как получить значение для конкретного виджета ввода формы. Для каждого виджета в таблице указан тип данных, которые принимает виджет, место хранения значения в событии взаимодействия и пример значения.
| Виджет ввода формы | Тип входных данных | Входное значение из события взаимодействия | Пример значения |
|---|---|---|---|
textInput | stringInputs | event.common.formInputs.contactName.stringInputs.value[0] | Kai O |
selectionInput | stringInputs | Чтобы получить первое или единственное значение, event.common.formInputs.contactType.stringInputs.value[0] | Personal |
dateTimePicker , принимающий только даты. | dateInput | event.common.formInputs.contactBirthdate.dateInput.msSinceEpoch . | 1000425600000 |
Перенесите данные на другую карту
После того, как пользователь введёт информацию с карты, вам может потребоваться вернуть дополнительные карты для выполнения любого из следующих действий:
- Помогите пользователям заполнять более длинные формы, создав для них отдельные разделы.
- Предоставьте пользователям возможность предварительного просмотра и подтверждения информации из первоначальной карточки, чтобы они могли проверить свои ответы перед отправкой.
- Динамически заполняйте оставшиеся части формы. Например, чтобы предложить пользователям записаться на прием, приложение для чата может отобразить начальную карточку с вопросом о причине записи, а затем отобразить другую карточку с доступным временем в зависимости от типа записи.
Для переноса данных, введенных из исходной карточки, можно создать виджет button с actionParameters , содержащими name виджета и значение, введенное пользователем, как показано в следующем примере:
Node.js
Python
Java
Apps Script
Когда пользователь нажимает кнопку, ваше приложение чата получает событие взаимодействия CARD_CLICKED , из которого вы можете получить данные .
Ответить на отправленную форму
После получения данных из сообщения в виде карточки или диалога, приложение «Чат» отвечает либо подтверждением получения, либо сообщением об ошибке.
В следующем примере приложение для чата отправляет текстовое сообщение, подтверждающее успешное получение формы, отправленной через диалоговое окно или карточку.
Node.js
Python
Java
Apps Script
Для обработки и закрытия диалогового окна необходимо вернуть объект ActionResponse , указывающий, хотите ли вы отправить подтверждающее сообщение, обновить исходное сообщение или карточку, или просто закрыть диалоговое окно. Инструкции см. в разделе « Закрытие диалогового окна» .
Устранение неполадок
Когда приложение или карточка Google Chat выдает ошибку, интерфейс чата отображает сообщение «Что-то пошло не так» или «Не удалось обработать ваш запрос». Иногда интерфейс чата не отображает никаких сообщений об ошибке, но приложение или карточка чата выдает неожиданный результат; например, сообщение на карточке может не появиться.
Хотя сообщение об ошибке может не отображаться в пользовательском интерфейсе чата, подробные сообщения об ошибках и данные журнала доступны для исправления ошибок, если включено ведение журнала ошибок для приложений чата. Для получения помощи по просмотру, отладке и исправлению ошибок см. раздел «Устранение неполадок и исправление ошибок Google Chat» .
Связанные темы
- Ознакомьтесь с примером приложения «Менеджер контактов» — это чат-приложение, которое предлагает пользователям заполнить контактную форму из сообщений в виде карточек и диалоговых окон.
- Открыть интерактивные диалоги