Помимо текстовых сообщений , приложения Google Chat могут создавать карточные сообщения при использовании аутентификации в приложении . Карточки поддерживают определенный макет, интерактивные элементы пользовательского интерфейса, такие как кнопки, и мультимедийные элементы, такие как изображения.
Используйте карточные сообщения, чтобы сделать следующее:
- Представить подробную информацию
- Собирать информацию от пользователей
- Помогите пользователям сделать следующий шаг
В этом руководстве описывается, как создавать сообщения-карточки синхронно (ответ в реальном времени на событие Google Chat, например получение сообщения от пользователя или добавление в пространство) и асинхронно (отправка сообщения из приложения в пространство или пользователю без подсказки). с помощью Google Chat API ).
Предпосылки
Для создания карточных сообщений в этом руководстве вам потребуется следующее:
Node.js
- Аккаунт Google Workspace с доступом к Google Chat .
- Приложение для чата. Чтобы создать приложение для чата, следуйте этому краткому руководству .
Примечание. Примеры кода Node.js в этом руководстве написаны для работы в качестве Google Cloud Function .
питон
- Аккаунт Google Workspace с доступом к Google Chat .
- Приложение для чата. Чтобы создать приложение для чата, следуйте этому краткому руководству .
Примечание. Примеры кода Python в этом руководстве написаны для работы в качестве облачной функции Google с использованием Python 3.9.
Скрипт приложений
- Аккаунт Google Workspace с доступом к Google Chat .
- Приложение для чата. Чтобы создать приложение для чата, следуйте этому краткому руководству .
Анатомия сообщения карты
Каждая карточка, будь то диалог или сообщение, представляет собой объект JSON в ресурсе spaces.messages
в Google Chat API.
Объект карты JSON состоит из следующего:
- Массив с
cardsV2[]
, который содержит один или несколько объектовCardWithId
. -
cardId
, используемый для идентификации карты и ограниченный рамками данного сообщения. (Карты в разных сообщениях могут иметь одинаковый идентификатор.) Объект
card
, который состоит из следующего:- Объект
header
, который определяет такие вещи, как заголовок, подзаголовок и изображение в стиле аватара. - Один или несколько объектов
section
, каждый из которых содержит хотя бы один виджет. - Один или несколько объектов
widget
. Каждый виджет представляет собой составной объект, который может представлять текст, изображения, кнопки и другие типы объектов.
- Объект
В качестве примера обратите внимание на объекты header
, section
и widget
в следующем сообщении карты:
Следующий код представляет JSON сообщения карты:
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",
}
],
}
}
},
],
}
},
],
},
],
},
}
],
}
Создать синхронное карточное сообщение
В этом примере пользователь создает приложению Chat сообщение в Chat, и приложение отвечает, отправляя простое сообщение синхронной карты с именем отправителя и изображением аватара:
В следующих примерах кода приложения Node.js и Python размещены в Google Cloud Functions . Пример Apps Script размещен на Google Apps Script .
Полные инструкции по созданию и развертыванию приложения чата см. в разделе Создание приложения чата .
Node.js
питон
Скрипт приложений
Создайте асинхронное карточное сообщение с помощью Chat API
Этот пример асинхронно создает сообщение с помощью Chat API и отправляет его в пространство, в которое добавлено приложение Chat:

питон
- В рабочем каталоге создайте файл с именем
chat_create_card_message.py
. Включите следующий код в
chat_create_card_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The message to create. body= { 'cardsV2': [{ 'cardId': 'createCardMessage', 'card': { 'header': { 'title': 'A Card Message!', 'subtitle': 'Created with Chat REST API', 'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png', 'imageType': 'CIRCLE' }, 'sections': [ { 'widgets': [ { 'buttonList': { 'buttons': [ { 'text': 'Read the docs!', 'onClick': { 'openLink': { 'url': 'https://developers.google.com/chat' } } } ] } } ] } ] } }] } ).execute() print(result)
В коде замените
SPACE
именем пространства, которое можно получить с помощьюspaces.list()
в Chat API или из URL-адреса пространства.В рабочем каталоге соберите и запустите пример:
python3 chat_create_card_message.py
Дополнительные сведения о работе с сообщениями в Chat API см. в следующих статьях:
Открыть диалог
Диалоги — это оконные карточные интерфейсы, которые приложения чата открывают для взаимодействия с пользователями. Чтобы помочь пользователям выполнять многоэтапные процессы, приложения могут открывать последовательные диалоги. Приложения могут открывать диалоговые окна в ответ на нажатие кнопки на сообщении карточки или в ответ на команду косой черты .
Диалоги полезны для многих типов взаимодействия с пользователем, в том числе:
- Сбор информации от пользователей
- Аутентификация пользователей с помощью веб-сервисов
- Настройка параметров приложения чата
В этом примере приложение Chat открывает диалоговое окно , помогающее пользователю создать новый контакт для своей адресной книги:
Чтобы реализовать диалоги, см. Открытие диалогов .
Форматирование карты
Существует несколько различных способов форматирования внешнего вида карточек.
Форматирование текста карты
Внутри карточек большинство текстовых полей поддерживают базовое форматирование текста с помощью небольшого подмножества тегов HTML.
Поддерживаемые теги и их назначение показаны в следующей таблице:
Формат | Пример | Визуализированный результат |
---|---|---|
Смелый | "This is <b>bold</b>." | Это смело . |
Курсив | "This is <i>italics</i>." | Это курсив . |
Подчеркнуть | "This is <u>underline</u>." | Это подчеркивание . |
Зачеркнутый | "This is <s>strikethrough</s>." | Это |
Цвет шрифта | "This is <font color=\"#FF0000\">red font</text>." | Это красный шрифт . |
Гиперссылка | "This is a <a href=\"https://www.google.com\">hyperlink</a>." | Это гиперссылка . |
Время | "This is a time format: <time>2023-02-16 15:00</time>." | Это формат времени: . |
Новая линия | "This is the first line. <br> This is a new line. " | Это первая строка. Это новая линия. |
Обратите внимание, что текст основного сообщения анализируется с использованием другого синтаксиса разметки, оптимизированного для пользователей-людей. Подробнее см. в разделе Создание текстового сообщения .
Встроенные значки
Виджеты DecoratedText
и ButtonList
поддерживают элемент icon
, используемый для указания одного из встроенных значков, доступных в Google Chat:
{ . . . "knownIcon": "TRAIN", . . . }
В следующей таблице перечислены встроенные значки, доступные для карточных сообщений:
САМОЛЕТ | ЗАКЛАДКА | ||
АВТОБУС | МАШИНА | ||
ЧАСЫ | CONFIRMATION_NUMBER_ICON | ||
ОПИСАНИЕ | ДОЛЛАР | ||
ЭЛЕКТРОННАЯ ПОЧТА | EVENT_SEAT | ||
FLIGHT_ARRIVAL | FLIGHT_DEPARTURE | ||
ГОСТИНИЦА | HOTEL_ROOM_TYPE | ||
ПРИГЛАШАТЬ | MAP_PIN | ||
ЧЛЕНСТВО | НЕСКОЛЬКО_ЧЕЛОВЕК | ||
ЧЕЛОВЕК | ТЕЛЕФОН | ||
РЕСТОРАН_ICON | КОРЗИНА | ||
ЗВЕЗДА | МАГАЗИН | ||
БИЛЕТ | ТРЕНИРОВАТЬСЯ | ||
ВИДЕОКАМЕРА | VIDEO_PLAY |
Пользовательские значки
Виджеты DecoratedText
и ButtonList
позволяют использовать встроенные значки или определять собственные значки. Чтобы указать собственный значок, используйте элемент iconUrl
, как показано здесь:
{ . . . "iconUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png" . . . }