Карта
Интерфейс карты, отображаемый в сообщении Google Chat или надстройке Google Workspace.
Карты поддерживают определенный макет, интерактивные элементы пользовательского интерфейса, такие как кнопки, и мультимедийные средства, такие как изображения. Используйте карточки, чтобы представить подробную информацию, собрать информацию от пользователей и помочь им сделать следующий шаг.
Чтобы узнать, как создавать карты, см. следующую документацию:
- О приложениях Google Chat см. в статье «Проектирование динамических, интерактивных и единообразных интерфейсов с помощью карточек » .
- Информацию о надстройках Google Workspace см. в разделе Интерфейсы на основе карт .
Пример: карточное сообщение для приложения Google Chat.
Чтобы создать образец сообщения-карточки в Google Chat, используйте следующий JSON:
{
"cardsV2": [
{
"cardId": "unique-card-id",
"card": {
"header": {
"title": "Sasha",
"subtitle": "Software Engineer",
"imageUrl":
"https://developers.google.com/chat/images/quickstart-app-avatar.png",
"imageType": "CIRCLE",
"imageAltText": "Avatar for Sasha",
},
"sections": [
{
"header": "Contact Info",
"collapsible": true,
"uncollapsibleWidgetsCount": 1,
"widgets": [
{
"decoratedText": {
"startIcon": {
"knownIcon": "EMAIL",
},
"text": "sasha@example.com",
}
},
{
"decoratedText": {
"startIcon": {
"knownIcon": "PERSON",
},
"text": "<font color=\"#80e27e\">Online</font>",
},
},
{
"decoratedText": {
"startIcon": {
"knownIcon": "PHONE",
},
"text": "+1 (555) 555-1234",
}
},
{
"buttonList": {
"buttons": [
{
"text": "Share",
"onClick": {
"openLink": {
"url": "https://example.com/share",
}
}
},
{
"text": "Edit",
"onClick": {
"action": {
"function": "goToView",
"parameters": [
{
"key": "viewType",
"value": "EDIT",
}
],
}
}
},
],
}
},
],
},
],
},
}
],
}
JSON-представление |
---|
{ "header": { object ( |
Поля | |
---|---|
header | Заголовок карты. Заголовок обычно содержит ведущее изображение и заголовок. Заголовки всегда отображаются вверху карточки. |
sections[] | Содержит коллекцию виджетов. Каждый раздел имеет свой собственный необязательный заголовок. Разделы визуально разделены разделителем. Пример в приложениях Google Chat см. в разделе «Карточка» . |
sectionDividerStyle | Стиль разделителя между разделами. |
cardActions[] | Действия карты. Действия добавляются в меню панели инструментов карточки. Поскольку карточки приложений Chat не имеют панели инструментов, Например, следующий JSON создает меню действий карты с
|
name | Название карты. Используется в качестве идентификатора карты при карточной навигации. Поскольку приложения чата не поддерживают навигацию по карточкам, они игнорируют это поле. |
fixedFooter | Фиксированный нижний колонтитул, показанный внизу этой карточки. Установка Поддерживается дополнениями Google Workspace и приложениями Chat. В приложениях чата вы можете использовать фиксированные нижние колонтитулы в диалогах , но не в сообщениях-карточках . |
displayStyle | В надстройках Google Workspace задает свойства отображения Не поддерживается приложениями чата. |
peekCardHeader | При отображении контекстного контента заголовок карточки просмотра действует как заполнитель, позволяя пользователю перемещаться между карточками главной страницы и контекстными карточками. Не поддерживается приложениями чата. |
Заголовок карты
Представляет заголовок карты. Пример использования приложений Google Chat см. в разделе Заголовок карты .
JSON-представление |
---|
{
"title": string,
"subtitle": string,
"imageType": enum ( |
Поля | |
---|---|
title | Необходимый. Название шапки карты. Заголовок имеет фиксированную высоту: если указаны и заголовок, и подзаголовок, каждый занимает одну строку. Если указан только заголовок, он занимает обе строки. |
subtitle | Подзаголовок шапки карты. Если указано, отображается на отдельной строке под |
imageType | Форма, используемая для обрезки изображения. |
imageUrl | URL-адрес HTTPS изображения в заголовке карты. |
imageAltText | Альтернативный текст этого изображения, используемый для специальных возможностей. |
Тип изображения
Форма, используемая для обрезки изображения.
Перечисления | |
---|---|
SQUARE | Значение по умолчанию. Применяет к изображению квадратную маску. Например, изображение 4x3 становится 3x3. |
CIRCLE | Применяет к изображению круговую маску. Например, изображение 4x3 становится кругом диаметром 3. |
Раздел
Раздел содержит коллекцию виджетов, которые отображаются вертикально в указанном порядке.
JSON-представление |
---|
{
"header": string,
"widgets": [
{
object ( |
Поля | |
---|---|
header | Текст, который отображается вверху раздела. Поддерживает простой текст в формате HTML. Дополнительную информацию о форматировании текста см. в разделах «Форматирование текста в приложениях Google Chat» и «Форматирование текста в надстройках Google Workspace ». |
widgets[] | Все виджеты в разделе. Должен содержать хотя бы один виджет. |
collapsible | Указывает, является ли этот раздел сворачиваемым. Сворачиваемые разделы скрывают некоторые или все виджеты, но пользователи могут развернуть раздел, чтобы отобразить скрытые виджеты, нажав «Показать больше» . Пользователи могут снова скрыть виджеты, нажав «Показать меньше» . Чтобы определить, какие виджеты скрыты, укажите |
uncollapsibleWidgetsCount | Количество несворачиваемых виджетов, которые остаются видимыми, даже если раздел свернут. Например, если раздел содержит пять виджетов и для |
Виджет
Каждая карточка состоит из виджетов.
Виджет — это составной объект, который может представлять один из типов текста, изображений, кнопок и других типов объектов.
JSON-представление |
---|
{ "horizontalAlignment": enum ( |
Поля | |
---|---|
horizontalAlignment | Указывает, выравниваются ли виджеты по левому, правому или центру столбца. |
data поля объединения. Виджет может иметь только один из следующих элементов. Вы можете использовать несколько полей виджетов для отображения большего количества элементов. data могут быть только одним из следующих: | |
textParagraph | Отображает текстовый абзац. Поддерживает простой текст в формате HTML. Дополнительную информацию о форматировании текста см. в разделах «Форматирование текста в приложениях Google Chat» и «Форматирование текста в надстройках Google Workspace ». Например, следующий JSON создает жирный текст:
|
image | Отображает изображение. Например, следующий JSON создает изображение с альтернативным текстом:
|
decoratedText | Отображает декорированный текстовый элемент. Например, следующий JSON создает декорированный текстовый виджет, показывающий адрес электронной почты:
|
buttonList | Список кнопок. Например, следующий JSON создает две кнопки. Первая — синяя текстовая кнопка, а вторая — кнопка с изображением, которая открывает ссылку:
|
textInput | Отображает текстовое поле, в которое пользователи могут вводить текст. Например, следующий JSON создает текстовый ввод для адреса электронной почты:
Другой пример: следующий JSON создает текстовый ввод для языка программирования со статическими предложениями:
|
selectionInput | Отображает элемент управления выбором, который позволяет пользователям выбирать элементы. Элементами управления выбором могут быть флажки, переключатели, переключатели или раскрывающиеся меню. Например, следующий JSON создает раскрывающееся меню, позволяющее пользователям выбирать размер:
|
dateTimePicker | Отображает виджет, который позволяет пользователям вводить дату, время или дату и время. Например, следующий JSON создает средство выбора даты и времени для планирования встречи:
|
divider | Отображает горизонтальный разделитель между виджетами. Например, следующий JSON создает разделитель:
|
grid | Отображает сетку с коллекцией элементов. Сетка поддерживает любое количество столбцов и элементов. Количество строк определяется верхней границей количества элементов, деленной на количество столбцов. Сетка с 10 элементами и 2 столбцами имеет 5 строк. Сетка с 11 элементами и 2 столбцами имеет 6 строк. Например, следующий JSON создает сетку из двух столбцов с одним элементом:
|
columns | Отображает до 2 столбцов. Чтобы включить более двух столбцов или использовать строки, используйте виджет Например, следующий JSON создает 2 столбца, каждый из которых содержит текстовые абзацы:
|
Текстовый абзац
Абзац текста, поддерживающий форматирование. Пример в приложениях Google Chat см. в разделе «Текст» . Дополнительную информацию о форматировании текста см. в разделах «Форматирование текста в приложениях Google Chat» и «Форматирование текста в надстройках Google Workspace ».
JSON-представление |
---|
{ "text": string } |
Поля | |
---|---|
text | Текст, отображаемый в виджете. |
Изображение
Изображение, заданное URL-адресом и может иметь действие onClick
. Пример см. в разделе Изображение .
JSON-представление |
---|
{
"imageUrl": string,
"onClick": {
object ( |
Поля | |
---|---|
imageUrl | URL-адрес HTTPS, на котором размещено изображение. Например:
|
onClick | Когда пользователь щелкает изображение, щелчок запускает это действие. |
altText | Альтернативный текст этого изображения, используемый для специальных возможностей. |
По щелчку
Представляет, как реагировать, когда пользователи нажимают интерактивный элемент на карточке, например кнопку.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
| |
action | Если указано, действие запускается этим |
openLink | Если указано, этот |
openDynamicLinkAction | Надстройка запускает это действие, когда действию необходимо открыть ссылку. Это отличается от описанного выше |
card | Новая карта помещается в стопку карточек после щелчка, если это указано. Поддерживается надстройками Google Workspace, но не приложениями Google Chat. |
Действие
Действие, описывающее поведение при отправке формы. Например, вы можете вызвать сценарий Apps Script для обработки формы. Если действие срабатывает, значения формы отправляются на сервер.
JSON-представление |
---|
{ "function": string, "parameters": [ { object ( |
Поля | |
---|---|
function | Пользовательская функция, вызываемая при щелчке по содержащему элементу или его активации. Пример использования см. в разделе Создание интерактивных карточек . |
parameters[] | Список параметров действия. |
loadIndicator | Указывает индикатор загрузки, который отображается при вызове действия. |
persistValues | Указывает, сохраняются ли значения формы после действия. Значение по умолчанию Если Если |
interaction | Необязательный. Требуется при открытии диалога . Что делать в ответ на взаимодействие с пользователем, например, когда пользователь нажимает кнопку в сообщении с карточкой. Если не указано, приложение отвечает, выполняя Указав Поддерживается приложениями Chat, но не надстройками Google Workspace. Если указано для надстройки, вся карта удаляется и в клиенте ничего не отображается. |
Параметр действия
Список строковых параметров, которые необходимо указать при вызове метода действия. Например, рассмотрим три кнопки повтора: отложить сейчас, отложить один день или отложить на следующей неделе. Вы можете использовать action method = snooze()
, передав тип и время повтора в списке строковых параметров.
Дополнительные сведения см. в разделе CommonEventObject
.
JSON-представление |
---|
{ "key": string, "value": string } |
Поля | |
---|---|
key | Имя параметра сценария действия. |
value | Значение параметра. |
Индикатор нагрузки
Указывает индикатор загрузки, который отображается при вызове действия.
Перечисления | |
---|---|
SPINNER | Отображает счетчик, указывающий на загрузку содержимого. |
NONE | Ничего не отображается. |
Взаимодействие
Необязательный. Требуется при открытии диалога .
Что делать в ответ на взаимодействие с пользователем, например, когда пользователь нажимает кнопку в сообщении с карточкой.
Если не указано, приложение отвечает, выполняя action
, например открытие ссылки или запуск функции, как обычно.
Указав interaction
, приложение может реагировать особым интерактивным способом. Например, установив для interaction
значение OPEN_DIALOG
, приложение сможет открыть диалоговое окно .
Если указано, индикатор загрузки не отображается.
Поддерживается приложениями Chat, но не надстройками Google Workspace. Если указано для надстройки, вся карта удаляется и в клиенте ничего не отображается.
Перечисления | |
---|---|
INTERACTION_UNSPECIFIED | Значение по умолчанию. action выполняется как обычно. |
OPEN_DIALOG | Открывает диалоговое окно — оконный интерфейс на основе карточек, который приложения чата используют для взаимодействия с пользователями. Поддерживается только приложениями чата в ответ на нажатие кнопок в карточных сообщениях. Не поддерживается дополнениями Google Workspace. Если указано для надстройки, вся карта удаляется и в клиенте ничего не отображается. |
Открыть ссылку
Представляет событие onClick
, открывающее гиперссылку.
JSON-представление |
---|
{ "url": string, "openAs": enum ( |
Поля | |
---|---|
url | URL-адрес для открытия. |
openAs | Как открыть ссылку. Не поддерживается приложениями чата. |
onClose | Забывает ли клиент о ссылке после ее открытия или наблюдает за ней до закрытия окна. Не поддерживается приложениями чата. |
ОпенАс
Когда действие OnClick
открывает ссылку, клиент может открыть ее либо как полноразмерное окно (если клиент использует этот фрейм), либо как наложение (например, всплывающее окно). Реализация зависит от возможностей клиентской платформы, и выбранное значение может быть проигнорировано, если клиент его не поддерживает. FULL_SIZE
поддерживается всеми клиентами.
Поддерживается надстройками Google Workspace, но не приложениями Google Chat.
Перечисления | |
---|---|
FULL_SIZE | Ссылка открывается в полноразмерном окне (если клиент использует именно этот фрейм). |
OVERLAY | Ссылка открывается в виде наложения, например всплывающего окна. |
При Закрытии
Что делает клиент, когда ссылка, открытая действием OnClick
, закрывается.
Реализация зависит от возможностей клиентской платформы. Например, веб-браузер может открыть ссылку во всплывающем окне с обработчиком OnClose
.
Если установлены оба обработчика OnOpen
и OnClose
, а клиентская платформа не может поддерживать оба значения, OnClose
имеет приоритет.
Поддерживается надстройками Google Workspace, но не приложениями Google Chat.
Перечисления | |
---|---|
NOTHING | Значение по умолчанию. Карта не перезагружается; Ничего не произошло. |
RELOAD | Перезагружает карту после закрытия дочернего окна. При использовании в сочетании с |
УкрашенныйТекст
Виджет, отображающий текст с дополнительными украшениями, такими как метка над или под текстом, значок перед текстом, виджет выбора или кнопка после текста. Пример использования приложений Google Chat см. в разделе «Оформленный текст» .
JSON-представление |
---|
{ "icon": { object ( |
Поля | |
---|---|
icon | Устарело в пользу |
startIcon | Значок отображается перед текстом. |
topLabel | Текст, который появляется над |
text | Необходимый. Первичный текст. Поддерживает простое форматирование. Дополнительную информацию о форматировании текста см. в разделах «Форматирование текста в приложениях Google Chat» и «Форматирование текста в надстройках Google Workspace ». |
wrapText | Настройка переноса текста. Если Применяется только к |
bottomLabel | Текст, который отображается под |
onClick | Это действие запускается, когда пользователи нажимают |
Полевой control Союза. Кнопка, переключатель, флажок или изображение, которое отображается справа от текста в виджете decoratedText . control может быть только одним из следующих: | |
button | Кнопка, которую пользователь может нажать, чтобы вызвать действие. |
switchControl | Виджет переключения, по которому пользователь может щелкнуть, чтобы изменить его состояние и вызвать действие. |
endIcon | Значок, отображаемый после текста. Поддерживает встроенные и пользовательские значки. |
Икона
Значок, отображаемый в виджете на карточке. Пример использования приложений Google Chat см. в разделе Значок .
Поддерживает встроенные и пользовательские значки.
JSON-представление |
---|
{ "altText": string, "imageType": enum ( |
Поля | |
---|---|
altText | Необязательный. Описание значка, используемого для специальных возможностей. Если не указано, предоставляется значение Если значок установлен в |
imageType | К изображению применен стиль обрезки. В некоторых случаях применение обрезки |
icons полей Союза. Значок, отображаемый в виджете на карте. icons могут быть только одним из следующих: | |
knownIcon | Отобразите один из встроенных значков Google Workspace. Например, чтобы отобразить значок самолета, укажите Полный список поддерживаемых значков см. в разделе «Встроенные значки» . |
iconUrl | Отображение пользовательского значка, размещенного по URL-адресу HTTPS. Например:
Поддерживаемые типы файлов: |
Кнопка
Текст, значок или кнопка с текстом и значком, которую пользователи могут нажать. Пример использования приложений Google Chat см. в разделе Список кнопок .
Чтобы сделать изображение интерактивной кнопкой, укажите
(а не Image
) и установите действие ImageComponent
onClick
.
JSON-представление |
---|
{ "text": string, "icon": { object ( |
Поля | |
---|---|
text | Текст, отображаемый внутри кнопки. |
icon | Изображение значка. Если установлены и |
color | Если установлено, кнопка заполняется сплошным цветом фона, а цвет шрифта изменяется, чтобы сохранить контраст с цветом фона. Например, установка синего фона, скорее всего, приведет к появлению белого текста. Если параметр не установлен, фон изображения будет белым, а цвет шрифта — синим. Для красного, зеленого и синего значение каждого поля представляет собой число При необходимости установите
Для Например, следующий цвет представляет собой полупрозрачный красный:
|
onClick | Необходимый. Действие, которое необходимо выполнить, когда пользователь нажимает кнопку, например открытие гиперссылки или запуск пользовательской функции. |
disabled | Если |
altText | Альтернативный текст, используемый для специальных возможностей. Установите описательный текст, который позволит пользователям узнать, что делает кнопка. Например, если кнопка открывает гиперссылку, вы можете написать: «Открывает новую вкладку браузера и переходит к документации для разработчиков Google Chat по адресу https://developers.google.com/chat» . |
Цвет
Представляет цвет в цветовом пространстве RGBA. Это представление предназначено для простоты преобразования в цветовые представления на разных языках и обратно, а не для компактности. Например, поля этого представления можно тривиально передать конструктору java.awt.Color
в Java; его также можно тривиально передать методу +colorWithRed:green:blue:alpha
UIColor в iOS; и, приложив немного усилий, его можно легко отформатировать в строку CSS rgba()
в JavaScript.
На этой справочной странице нет информации об абсолютном цветовом пространстве, которое следует использовать для интерпретации значения RGB, например sRGB, Adobe RGB, DCI-P3 и BT.2020. По умолчанию приложения должны использовать цветовое пространство sRGB.
Когда необходимо определить равенство цветов, реализации, если не указано иное, рассматривают два цвета как равные, если все их значения красного, зеленого, синего и альфа отличаются не более чем 1e-5
.
Пример (Java):
import com.google.type.Color;
// ...
public static java.awt.Color fromProto(Color protocolor) {
float alpha = protocolor.hasAlpha()
? protocolor.getAlpha().getValue()
: 1.0;
return new java.awt.Color(
protocolor.getRed(),
protocolor.getGreen(),
protocolor.getBlue(),
alpha);
}
public static Color toProto(java.awt.Color color) {
float red = (float) color.getRed();
float green = (float) color.getGreen();
float blue = (float) color.getBlue();
float denominator = 255.0;
Color.Builder resultBuilder =
Color
.newBuilder()
.setRed(red / denominator)
.setGreen(green / denominator)
.setBlue(blue / denominator);
int alpha = color.getAlpha();
if (alpha != 255) {
result.setAlpha(
FloatValue
.newBuilder()
.setValue(((float) alpha) / denominator)
.build());
}
return resultBuilder.build();
}
// ...
Пример (iOS/Obj-C):
// ...
static UIColor* fromProto(Color* protocolor) {
float red = [protocolor red];
float green = [protocolor green];
float blue = [protocolor blue];
FloatValue* alpha_wrapper = [protocolor alpha];
float alpha = 1.0;
if (alpha_wrapper != nil) {
alpha = [alpha_wrapper value];
}
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
static Color* toProto(UIColor* color) {
CGFloat red, green, blue, alpha;
if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
return nil;
}
Color* result = [[Color alloc] init];
[result setRed:red];
[result setGreen:green];
[result setBlue:blue];
if (alpha <= 0.9999) {
[result setAlpha:floatWrapperWithValue(alpha)];
}
[result autorelease];
return result;
}
// ...
Пример (JavaScript):
// ...
var protoToCssColor = function(rgb_color) {
var redFrac = rgb_color.red || 0.0;
var greenFrac = rgb_color.green || 0.0;
var blueFrac = rgb_color.blue || 0.0;
var red = Math.floor(redFrac * 255);
var green = Math.floor(greenFrac * 255);
var blue = Math.floor(blueFrac * 255);
if (!('alpha' in rgb_color)) {
return rgbToCssColor(red, green, blue);
}
var alphaFrac = rgb_color.alpha.value || 0.0;
var rgbParams = [red, green, blue].join(',');
return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};
var rgbToCssColor = function(red, green, blue) {
var rgbNumber = new Number((red << 16) | (green << 8) | blue);
var hexString = rgbNumber.toString(16);
var missingZeros = 6 - hexString.length;
var resultBuilder = ['#'];
for (var i = 0; i < missingZeros; i++) {
resultBuilder.push('0');
}
resultBuilder.push(hexString);
return resultBuilder.join('');
};
// ...
JSON-представление |
---|
{ "red": number, "green": number, "blue": number, "alpha": number } |
Поля | |
---|---|
red | Количество красного цвета в цвете как значение в интервале [0, 1]. |
green | Количество зеленого цвета в цвете как значение в интервале [0, 1]. |
blue | Количество синего цвета в цвете как значение в интервале [0, 1]. |
alpha | Доля этого цвета, которая должна быть применена к пикселю. То есть конечный цвет пикселя определяется уравнением: Это означает, что значение 1,0 соответствует сплошному цвету, тогда как значение 0,0 соответствует полностью прозрачному цвету. При этом используется сообщение-оболочка, а не простой скаляр с плавающей запятой, чтобы можно было отличить значение по умолчанию от значения, которое не установлено. Если этот параметр опущен, этот цветовой объект отображается как сплошной цвет (как если бы значению альфа было явно присвоено значение 1,0). |
SwitchControl
Либо переключатель в стиле тумблера, либо флажок внутри виджета decoratedText
.
Поддерживается только в виджете decoratedText
.
JSON-представление |
---|
{ "name": string, "value": string, "selected": boolean, "onChangeAction": { object ( |
Поля | |
---|---|
name | Имя, по которому виджет переключения идентифицируется в событии ввода формы. Подробные сведения о работе с входными данными формы см. в разделе Получение данных формы . |
value | Значение, введенное пользователем и возвращаемое как часть события ввода формы. Подробные сведения о работе с входными данными формы см. в разделе Получение данных формы . |
selected | Если |
onChangeAction | Действие, которое необходимо выполнить при изменении состояния переключателя, например, какую функцию запускать. |
controlType | Как переключатель отображается в пользовательском интерфейсе. |
Тип управления
Как переключатель отображается в пользовательском интерфейсе.
Перечисления | |
---|---|
SWITCH | Тумблерный переключатель. |
CHECKBOX | Устарело в пользу CHECK_BOX . |
CHECK_BOX | Флажок. |
Список кнопок
Список кнопок, расположенных горизонтально. Пример использования приложений Google Chat см. в разделе Список кнопок .
JSON-представление |
---|
{
"buttons": [
{
object ( |
Поля | |
---|---|
buttons[] | Массив кнопок. |
Ввод текста
Поле, в котором пользователи могут вводить текст. Поддерживает предложения и действия при изменении. Пример использования приложений Google Chat см. в разделе Ввод текста .
Приложения чата получают и могут обрабатывать значение введенного текста во время событий ввода формы. Подробные сведения о работе с входными данными формы см. в разделе Получение данных формы .
Если вам нужно собрать неопределенные или абстрактные данные от пользователей, используйте текстовый ввод. Чтобы собрать определенные или перечисляемые данные от пользователей, используйте виджет SelectionInput
.
JSON-представление |
---|
{ "name": string, "label": string, "hintText": string, "value": string, "type": enum ( |
Поля | |
---|---|
name | Имя, по которому идентифицируется ввод текста в событии ввода формы. Подробные сведения о работе с входными данными формы см. в разделе Получение данных формы . |
label | Текст, который появляется над полем ввода текста в пользовательском интерфейсе. Укажите текст, который поможет пользователю ввести информацию, необходимую вашему приложению. Например, если вы спрашиваете чье-то имя, но вам конкретно нужна фамилия, напишите Требуется, если |
hintText | Текст, который появляется под полем ввода текста, предназначен для помощи пользователям, предлагая им ввести определенное значение. Этот текст всегда виден. Требуется, если |
value | Значение, введенное пользователем и возвращаемое как часть события ввода формы. Подробные сведения о работе с входными данными формы см. в разделе Получение данных формы . |
type | Как поле ввода текста отображается в пользовательском интерфейсе. Например, является ли поле однострочным или многострочным. |
onChangeAction | Что делать, если в поле ввода текста произошло изменение. Например, пользователь добавляет поле или удаляет текст. Примеры действий, которые следует предпринять, включают запуск пользовательской функции или открытие диалога в Google Chat. |
initialSuggestions | Рекомендуемые значения, которые могут ввести пользователи. Эти значения появляются, когда пользователи щелкают внутри поля ввода текста. По мере того, как пользователи вводят текст, предлагаемые значения динамически фильтруются в соответствии с тем, что набрали пользователи. Например, поле ввода текста для языка программирования может предлагать Java, JavaScript, Python и C++. Когда пользователи начинают вводить Предлагаемые значения помогают пользователям вводить значения, понятные вашему приложению. Говоря о JavaScript, некоторые пользователи могут вводить Если указано, |
autoCompleteAction | Необязательный. Укажите, какое действие следует выполнять, когда поле ввода текста предлагает предложения пользователям, которые с ним взаимодействуют. Если не указано, предложения устанавливаются с помощью Если указано, приложение выполняет указанное здесь действие, например запускает пользовательскую функцию. Поддерживается надстройками Google Workspace, но не приложениями Google Chat. |
placeholderText | Текст, который появляется в поле ввода текста, когда поле пусто. Используйте этот текст, чтобы предложить пользователям ввести значение. Например, Поддерживается приложениями Google Chat, но не надстройками Google Workspace. |
Тип
Как поле ввода текста отображается в пользовательском интерфейсе. Например, будь то однострочное или многострочное поле ввода.
Если указан параметр initialSuggestions
, type
всегда является SINGLE_LINE
, даже если для него установлено значение MULTIPLE_LINE
.
Перечисления | |
---|---|
SINGLE_LINE | Поле ввода текста имеет фиксированную высоту в одну строку. |
MULTIPLE_LINE | Поле ввода текста имеет фиксированную высоту в несколько строк. |
Действия рендеринга
Набор инструкций рендеринга, которые сообщают карточке о необходимости выполнения действия и/или сообщают главному приложению надстройки выполнить действие, специфичное для приложения.
Поля | |
---|---|
action |
Действие
Поля | |
---|---|
navigations[] | Нажмите или обновите отображаемые карты. |
Предложения
Рекомендуемые значения, которые могут ввести пользователи. Эти значения появляются, когда пользователи щелкают внутри поля ввода текста. По мере того, как пользователи вводят текст, предлагаемые значения динамически фильтруются в соответствии с тем, что набрали пользователи.
Например, поле ввода текста для языка программирования может предлагать Java, JavaScript, Python и C++. Когда пользователи начинают вводить Jav
, список предложений фильтруется для отображения Java
и JavaScript
.
Предлагаемые значения помогают пользователям вводить значения, понятные вашему приложению. Говоря о JavaScript, некоторые пользователи могут вводить javascript
, а другие java script
. Предложение JavaScript
может стандартизировать взаимодействие пользователей с вашим приложением.
Если указано, TextInput.type
всегда имеет SINGLE_LINE
, даже если для него установлено значение MULTIPLE_LINE
.
JSON-представление |
---|
{
"items": [
{
object ( |
Поля | |
---|---|
items[] | Список предложений, используемых для автозаполнения рекомендаций в полях ввода текста. |
ПредложениеItem
Одно предлагаемое значение, которое пользователи могут ввести в поле ввода текста.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
| |
text | Значение предлагаемого ввода в поле ввода текста. Это эквивалентно тому, что пользователи вводят сами. |
ВыборВвод
Виджет, создающий один или несколько элементов пользовательского интерфейса, которые пользователи могут выбирать. Например, выпадающее меню или флажки. Вы можете использовать этот виджет для сбора данных, которые можно прогнозировать или перечислять. Пример использования приложений Google Chat см. в разделе Ввод выбора .
Приложения чата могут обрабатывать значения элементов, которые пользователи выбирают или вводят. Подробные сведения о работе с входными данными формы см. в разделе Получение данных формы .
Чтобы собирать неопределенные или абстрактные данные от пользователей, используйте виджет TextInput
.
JSON-представление |
---|
{ "name": string, "label": string, "type": enum ( |
Поля | |
---|---|
name | Имя, которое идентифицирует ввод выбора в событии ввода формы. Подробные сведения о работе с входными данными формы см. в разделе Получение данных формы . |
label | Текст, который появляется над полем ввода выбора в пользовательском интерфейсе. Укажите текст, который поможет пользователю ввести информацию, необходимую вашему приложению. Например, если пользователи выбирают срочность рабочего билета из раскрывающегося меню, метка может быть «Срочность» или «Выбрать срочность». |
type | Тип элементов, которые отображаются пользователям в виджете |
items[] | Массив выбираемых элементов. Например, массив переключателей или флажков. Поддерживает до 100 элементов. |
onChangeAction | Если указано, форма отправляется при изменении выбора. Если не указано, необходимо указать отдельную кнопку, которая отправляет форму. Подробные сведения о работе с входными данными формы см. в разделе Получение данных формы . |
multiSelectMaxSelectedItems | Для меню с множественным выбором — максимальное количество элементов, которые может выбрать пользователь. Минимальная стоимость — 1 шт. Если не указано, по умолчанию используется 3 элемента. |
multiSelectMinQueryLength | Для меню с множественным выбором — количество текстовых символов, которые пользователь вводит перед тем, как приложение Chat запросит автозаполнение и отобразит предлагаемые элементы в меню. Если не указано, по умолчанию используется 0 символов для статических источников данных и 3 символа для внешних источников данных. |
Поле объединения multi_select_data_source . Только приложения для чата. Для меню с множественным выбором — источник данных, который заполняет элементы выбора. multi_select_data_source может быть только одним из следующих: | |
externalDataSource | Внешний источник данных, например реляционная база данных. |
platformDataSource | Источник данных из Google Workspace. |
Тип выбора
Формат элементов, которые могут выбирать пользователи. Различные варианты поддерживают разные типы взаимодействий. Например, пользователи могут установить несколько флажков, но выбрать только один элемент из раскрывающегося меню.
Каждый вход выбора поддерживает один тип выбора. Например, сочетание флажков и переключателей не поддерживается.
Перечисления | |
---|---|
CHECK_BOX | Набор флажков. Пользователи могут установить один или несколько флажков. |
RADIO_BUTTON | Набор радиокнопок. Пользователи могут выбрать один переключатель. |
SWITCH | Набор переключателей. Пользователи могут включить один или несколько переключателей. |
DROPDOWN | Выпадающее меню. Пользователи могут выбрать один пункт из меню. |
MULTI_SELECT | Поддерживается приложениями Chat, но не надстройками Google Workspace. Меню множественного выбора для статических или динамических данных. В строке меню пользователи выбирают один или несколько элементов. Пользователи также могут вводить значения для заполнения динамических данных. Например, пользователи могут начать вводить название чат-группы Google, и виджет автоматически предложит это пространство. Чтобы заполнить элементы меню с множественным выбором, вы можете использовать один из следующих типов источников данных:
Примеры реализации меню с множественным выбором см. на странице виджета |
Элемент выбора
Элемент, который пользователи могут выбрать при вводе выбора, например флажок или переключатель.
JSON-представление |
---|
{ "text": string, "value": string, "selected": boolean, "startIconUri": string, "bottomText": string } |
Поля | |
---|---|
text | Текст, который идентифицирует или описывает элемент для пользователей. |
value | Значение, связанное с этим элементом. Клиент должен использовать это значение в качестве входного значения формы. Подробные сведения о работе с входными данными формы см. в разделе Получение данных формы . |
selected | Выбран ли элемент по умолчанию. Если входные данные выбора принимают только одно значение (например, для переключателей или раскрывающегося меню), установите это поле только для одного элемента. |
startIconUri | В меню с множественным выбором URL-адрес значка отображается рядом с |
bottomText | Для меню с множественным выбором — текстовое описание или метка, отображаемая под |
ПлатформаИсточник данных
Только приложения для чата. Для виджета
, использующего меню с множественным выбором, — источник данных из Google Workspace. Используется для заполнения элементов в меню с множественным выбором. SelectionInput
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
Поле объединения data_source . Источник данных. data_source может быть только одним из следующих: | |
commonDataSource | Источник данных, общий для всех приложений Google Workspace, например пользователей в организации Google Workspace. |
hostAppDataSource | Источник данных, уникальный для хост-приложения Google Workspace, например пространства в Google Chat. |
Общий источник данных
Только приложения для чата. Источник данных, общий для всех приложений Google Workspace .
Перечисления | |
---|---|
UNKNOWN | Значение по умолчанию. Не используйте. |
USER | Пользователи Google Workspace. Пользователь может просматривать и выбирать пользователей только из своей организации Google Workspace. |
HostAppDataSourceMarkup
Только приложения для чата. Для виджета
, использующего меню с множественным выбором, — источник данных из приложения Google Workspace. Источник данных заполняет элементы выбора для меню множественного выбора. SelectionInput
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
Поле объединения data_source . Приложение Google Workspace, которое заполняет элементы для меню с множественным выбором. data_source может быть только одним из следующих: | |
chatDataSource | Источник данных из Google Chat. |
ChatClientDataSourceMarkup
Только приложения для чата. Для виджета
, использующего меню с множественным выбором, используется источник данных из Google Chat. Источник данных заполняет элементы выбора для меню множественного выбора. Например, пользователь может выбрать пространства Google Chat, участником которых он является. SelectionInput
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
source поля Союза. Источник данных Google Chat. source может быть только одним из следующих: | |
spaceDataSource | Пространства Google Chat, участником которых является пользователь. |
ПространствоИсточник Данных
Источник данных, который заполняет пространства Google Chat в качестве элементов выбора для меню с множественным выбором. Заполняет только пространства, членом которых является пользователь.
JSON-представление |
---|
{ "defaultToCurrentSpace": boolean } |
Поля | |
---|---|
defaultToCurrentSpace | Если установлено значение |
DateTimePicker
Позволяет пользователям вводить дату, время или дату и время одновременно. Пример использования приложений Google Chat см. в разделе Выбор даты и времени .
Пользователи могут вводить текст или использовать средство выбора для выбора даты и времени. Если пользователи вводят неверную дату или время, средство выбора отображает ошибку, которая предлагает пользователям ввести информацию правильно.
JSON-представление |
---|
{ "name": string, "label": string, "type": enum ( |
Поля | |
---|---|
name | Имя, по которому Подробные сведения о работе с входными данными формы см. в разделе Получение данных формы . |
label | Текст, предлагающий пользователям ввести дату, время или дату и время. Например, если пользователи планируют встречу, используйте метку, например |
type | Поддерживает ли виджет ввод даты, времени или даты и времени. |
valueMsEpoch | Значение по умолчанию, отображаемое в виджете, в миллисекундах с момента эпохи Unix . Укажите значение в зависимости от типа средства выбора (
|
timezoneOffsetDate | Число, представляющее смещение часового пояса от UTC в минутах. Если установлено, |
onChangeAction | Срабатывает, когда пользователь нажимает кнопку «Сохранить» или «Очистить» в интерфейсе |
DateTimePickerType
Формат даты и времени в виджете DateTimePicker
. Определяет, могут ли пользователи вводить дату, время или дату и время одновременно.
Перечисления | |
---|---|
DATE_AND_TIME | Пользователи вводят дату и время. |
DATE_ONLY | Пользователи вводят дату. |
TIME_ONLY | Пользователи вводят время. |
Разделитель
Этот тип не имеет полей.
Отображает разделитель между виджетами в виде горизонтальной линии. Пример использования приложений Google Chat см. в разделе Разделитель .
Например, следующий JSON создает разделитель:
"divider": {}
Сетка
Отображает сетку с коллекцией элементов. Элементы могут включать только текст или изображения. Для адаптивных столбцов или для включения большего количества текста или изображений используйте
. Пример использования приложений Google Chat см. в разделе Grid .Columns
Сетка поддерживает любое количество столбцов и элементов. Количество строк определяется элементами, разделенными столбцами. Сетка с 10 элементами и 2 столбцами имеет 5 строк. Сетка с 11 элементами и 2 столбцами имеет 6 строк.
Например, следующий JSON создает сетку из двух столбцов с одним элементом:
"grid": {
"title": "A fine collection of items",
"columnCount": 2,
"borderStyle": {
"type": "STROKE",
"cornerRadius": 4
},
"items": [
{
"image": {
"imageUri": "https://www.example.com/image.png",
"cropStyle": {
"type": "SQUARE"
},
"borderStyle": {
"type": "STROKE"
}
},
"title": "An item",
"textAlignment": "CENTER"
}
],
"onClick": {
"openLink": {
"url": "https://www.example.com"
}
}
}
JSON-представление |
---|
{ "title": string, "items": [ { object ( |
Поля | |
---|---|
title | Текст, который отображается в заголовке сетки. |
items[] | Элементы, отображаемые в сетке. |
borderStyle | Стиль границы, применяемый к каждому элементу сетки. |
columnCount | Количество столбцов, отображаемых в сетке. Значение по умолчанию используется, если это поле не указано, и это значение по умолчанию различается в зависимости от того, где отображается сетка (диалоговое окно или сопутствующий текст). |
onClick | Этот обратный вызов повторно используется каждым отдельным элементом сетки, но к параметрам обратного вызова добавляется идентификатор и индекс элемента в списке элементов. |
Гридитем
Представляет элемент в макете сетки. Элементы могут содержать текст, изображение или и текст, и изображение.
JSON-представление |
---|
{ "id": string, "image": { object ( |
Поля | |
---|---|
id | Заданный пользователем идентификатор для этого элемента сетки. Этот идентификатор возвращается в параметрах обратного вызова |
image | Изображение, которое отображается в элементе сетки. |
title | Название элемента сетки. |
subtitle | Подзаголовок элемента сетки. |
layout | Макет, используемый для элемента сетки. |
Компонент изображения
Представляет изображение.
JSON-представление |
---|
{ "imageUri": string, "altText": string, "cropStyle": { object ( |
Поля | |
---|---|
imageUri | URL-адрес изображения. |
altText | Метка доступности изображения. |
cropStyle | Стиль обрезки, применяемый к изображению. |
borderStyle | Стиль границы, применяемый к изображению. |
СтильОбрезки Изображения
Представляет стиль обрезки, примененный к изображению.
Например, вот как применить соотношение сторон 16:9:
cropStyle {
"type": "RECTANGLE_CUSTOM",
"aspectRatio": 16/9
}
JSON-представление |
---|
{
"type": enum ( |
Поля | |
---|---|
type | Тип урожая. |
aspectRatio | Соотношение сторон, которое будет использоваться, если тип кадрирования — Например, вот как применить соотношение сторон 16:9:
|
ТипОбрезки Изображения
Представляет стиль обрезки, примененный к изображению.
Перечисления | |
---|---|
IMAGE_CROP_TYPE_UNSPECIFIED | Не используйте. Неопределенные. |
SQUARE | Значение по умолчанию. Применяет квадратную обрезку. |
CIRCLE | Применяет круговую обрезку. |
RECTANGLE_CUSTOM | Применяет прямоугольную обрезку с настраиваемым соотношением сторон. Установите пользовательское соотношение сторон с aspectRatio . |
RECTANGLE_4_3 | Применяет прямоугольную обрезку с соотношением сторон 4:3. |
BorderStyle
Параметры стиля границы карточки или виджета, включая тип и цвет границы.
JSON-представление |
---|
{ "type": enum ( |
Поля | |
---|---|
type | Тип границы. |
strokeColor | Цвета, которые будут использоваться, если тип |
cornerRadius | Угловой радиус границы. |
Тип границы
Представляет типы границ, применяемые к виджетам.
Перечисления | |
---|---|
BORDER_TYPE_UNSPECIFIED | Не используйте. Неопределенные. |
NO_BORDER | Значение по умолчанию. Без границ. |
STROKE | Контур. |
GridItemLayout
Представляет различные параметры макета, доступные для элемента сетки.
Перечисления | |
---|---|
GRID_ITEM_LAYOUT_UNSPECIFIED | Не используйте. Неопределенные. |
TEXT_BELOW | Заголовок и подзаголовок отображаются под изображением элемента сетки. |
TEXT_ABOVE | Заголовок и подзаголовок отображаются над изображением элемента сетки. |
Столбцы
Виджет Columns
» отображает до двух столбцов в сообщении или диалоге-карточке. Вы можете добавлять виджеты в каждый столбец; виджеты отображаются в том порядке, в котором они указаны. Пример использования приложений Google Chat см. в разделе «Столбцы» .
Высота каждого столбца определяется более высоким столбцом. Например, если первый столбец выше второго, оба столбца будут иметь высоту первого столбца. Поскольку каждый столбец может содержать разное количество виджетов, вы не можете определять строки или выравнивать виджеты между столбцами.
Столбцы отображаются рядом. Вы можете настроить ширину каждого столбца, используя поле HorizontalSizeStyle
. Если ширина экрана пользователя слишком узкая, второй столбец переносится ниже первого:
- В Интернете второй столбец переносится, если ширина экрана меньше или равна 480 пикселям.
- На устройствах iOS второй столбец переносится, если ширина экрана меньше или равна 300 pt.
- На устройствах Android второй столбец переносится, если ширина экрана меньше или равна 320 dp.
Чтобы включить более двух столбцов или использовать строки, используйте виджет
».Grid
Поддерживается приложениями Chat, но не надстройками Google Workspace.
JSON-представление |
---|
{
"columnItems": [
{
object ( |
Поля | |
---|---|
columnItems[] | Массив столбцов. Вы можете включить до двух столбцов в карточку или диалог. |
Столбец
Колонка.
JSON-представление |
---|
{ "horizontalSizeStyle": enum ( |
Поля | |
---|---|
horizontalSizeStyle | Указывает, как столбец заполняет ширину карточки. |
horizontalAlignment | Указывает, выравниваются ли виджеты по левому, правому или центру столбца. |
verticalAlignment | Указывает, выравниваются ли виджеты по верху, низу или центру столбца. |
widgets[] | Массив виджетов, включенных в столбец. Виджеты отображаются в том порядке, в котором они указаны. |
Горизонтальныйразмерстиль
Указывает, как столбец заполняет ширину карточки. Ширина каждого столбца зависит как от HorizontalSizeStyle
, так и от ширины виджетов внутри столбца.
Перечисления | |
---|---|
HORIZONTAL_SIZE_STYLE_UNSPECIFIED | Не используйте. Неопределенные. |
FILL_AVAILABLE_SPACE | Значение по умолчанию. Столбец заполняет доступное пространство до 70 % ширины карты. Если для обоих столбцов установлено значение FILL_AVAILABLE_SPACE , каждый столбец заполняет 50 % пространства. |
FILL_MINIMUM_SPACE | Столбец занимает минимально возможное пространство и не более 30 % ширины карты. |
Горизонтальное выравнивание
Указывает, выравниваются ли виджеты по левому, правому или центру столбца.
Перечисления | |
---|---|
HORIZONTAL_ALIGNMENT_UNSPECIFIED | Не используйте. Неопределенные. |
START | Значение по умолчанию. Выравнивает виджеты по начальному положению столбца. Для макетов слева направо — выравнивание по левому краю. Для макетов с направлением письма справа налево выравнивается по правому краю. |
CENTER | Выравнивает виджеты по центру столбца. |
END | Выравнивает виджеты по конечному положению столбца. Для макетов слева направо виджеты выравниваются по правому краю. Для макетов с направлением справа налево виджеты выравниваются по левому краю. |
Вертикальное выравнивание
Указывает, выравниваются ли виджеты по верху, низу или центру столбца.
Перечисления | |
---|---|
VERTICAL_ALIGNMENT_UNSPECIFIED | Не используйте. Неопределенные. |
CENTER | Значение по умолчанию. Выравнивает виджеты по центру столбца. |
TOP | Выравнивает виджеты по верху столбца. |
BOTTOM | Выравнивает виджеты по нижней части столбца. |
Виджеты
Поддерживаемые виджеты, которые можно включить в столбец.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
| |
textParagraph | Виджет |
image | Виджет |
decoratedText | Виджет |
buttonList | Виджет |
textInput | Виджет |
selectionInput | Виджет |
dateTimePicker | Виджет |
РазделительСтиль
Стиль разделителя карты. В настоящее время используется только для разделителей между разделами карты.
Перечисления | |
---|---|
DIVIDER_STYLE_UNSPECIFIED | Не используйте. Неопределенные. |
SOLID_DIVIDER | Вариант по умолчанию. Создайте сплошной разделитель между разделами. |
NO_DIVIDER | Если установлено, разделитель между разделами не отображается. |
КартаДействие
Действие карты — это действие, связанное с картой. Например, карточка счета-фактуры может включать в себя такие действия, как удаление счета, отправка счета по электронной почте или открытие счета в браузере.
Не поддерживается приложениями чата.
JSON-представление |
---|
{
"actionLabel": string,
"onClick": {
object ( |
Поля | |
---|---|
actionLabel | Метка, которая отображается как элемент меню действий. |
onClick | Действие |
Стиль отображения
В надстройках Google Workspace определяет способ отображения карточки.
Не поддерживается приложениями чата.
Перечисления | |
---|---|
DISPLAY_STYLE_UNSPECIFIED | Не используйте. Неопределенные. |
PEEK | Заголовок карты отображается внизу боковой панели, частично закрывая текущую верхнюю карту стопки. При нажатии на заголовок карточка помещается в стопку карточек. Если у карты нет заголовка, вместо него используется сгенерированный заголовок. |
REPLACE | Значение по умолчанию. Карта отображается путем замены вида верхней карты в стопке карт. |