Как форматировать сообщения

На этой странице объясняется, как приложения Google Chat могут форматировать текст для отправки сообщений, содержащих любое из следующего:

  • Форматированный текст, содержащий гиперссылки или @упоминания одного или всех пользователей в чат-группе Chat.
  • Текст, который появляется в интерфейсе карточки, включая текст абзаца или текст пользовательского интерфейса, который отображается рядом со значком, например кнопкой.

Как форматировать текстовое сообщение

В чате можно использовать базовое форматирование текстового сообщения, например полужирный шрифт, курсив и зачеркивание. Текст в текстовых сообщениях и сообщениях-карточках форматируется по-разному, поскольку в текстовых сообщениях используется тот же синтаксис, что и в Chat.

Для сообщений, отправленных или полученных с помощью Chat API, можно использовать стандартный синтаксис Markdown (MARKUP_SYNTAX_MARKDOWN) или синтаксис разметки Chat (MARKUP_SYNTAX_CHAT). Вы можете настроить синтаксис разметки по умолчанию на уровне приложения в консоли Google Cloud (см. раздел Как настроить Google Chat API):

  • Markdown. Стандартный синтаксис Markdown (MARKUP_SYNTAX_MARKDOWN), основанный на спецификации CommonMark с дополнительными расширениями. Для новых приложений Chat по умолчанию используется Markdown.
  • Chat – синтаксис разметки Chat (MARKUP_SYNTAX_CHAT). Существующие приложения Chat по умолчанию используют Chat для обеспечения обратной совместимости.

Вы также можете указать markup_syntax в отдельных запросах Chat API, чтобы переопределить значение по умолчанию на уровне приложения. Если параметр markup_syntax не указан в запросе к API, разметка задается в зависимости от того, как вы вызываете Chat API:

  • Настроенные приложения Chat. Используется синтаксис разметки, сохраненный на странице конфигурации Chat API.
  • Ненастроенные облачные проекты (без конфигурации). Если ваш облачный проект вызывает Chat API без сохраненной конфигурации приложения Chat, запросы по умолчанию отправляются в MARKUP_SYNTAX_MARKDOWN.
  • Входящие вебхуки. По умолчанию установлено значение MARKUP_SYNTAX_CHAT. Подробнее о том, как отправлять сообщения с помощью входящих вебхуков…

Чтобы отформатировать текстовые сообщения, используйте следующий синтаксис:

Формат MARKUP_SYNTAX_CHAT MARKUP_SYNTAX_MARKDOWN Пример синтаксиса Текст, который показывается в Google Chat.
Полужирный * **

*hello*

Альтернативный вариант:

**hello**

hello
Курсив _ (символ подчеркивания) *

_hello_

Альтернативный вариант:

*hello*

hello
Зачеркнутый ~ ~~

~hello~

Альтернативный вариант:

~~hello~~

hello
Моноширинный шрифт ` (обратная кавычка) ` (обратная кавычка) `hello` hello
Блок моноширинного шрифта ` ` ` (три обратных апострофа) ` ` ` (три обратных апострофа) ```
Hello
World
```
Hello
World
Маркированный список * или - (дефис), за которым следует пробел * или - (дефис), за которым следует пробел

* Это первый пункт в списке.

* Это второй элемент списка.

  • Это первый элемент в списке.
  • Это второй элемент в списке.
Вложенный список * или - (дефис), за которым следует пробел, а перед ним – четыре пробела на каждый уровень вложенности. * или - (дефис), за которым следует пробел, а перед ним – четыре пробела на каждый уровень вложенности

* Это элемент списка с глубиной вложенности 1.

    * Это элемент списка со вторым уровнем вложенности.

        * Это элемент списка с третьим уровнем вложенности.

  • Это элемент с глубиной вложенности 1 в списке.
    • Это элемент списка со вторым уровнем вложенности.
      • Это элемент с глубиной вложенности три в списке.
Нумерованный список Не поддерживается 1. (число, за которым следует точка и пробел)

1. Это первый элемент в списке.

2. Это второй элемент в списке.

  1. Это первый элемент в списке.
  2. Это второй элемент в списке.
Блок цитаты > (знак "больше") > (знак "больше") >привет
значок формата цитаты Здравствуйте!
Гиперссылка <hyperlink|display text> [display text](hyperlink)

<https://example.com|Example website>

Альтернативный вариант:

[Example website](https://example.com)

Пример сайта

Подробнее о форматировании ссылок…

Упомянуть пользователя <users/{user}>, где {user} – идентификатор пользователя.

<chat-user data-user="users/{user}">

Альтернативный вариант:

<chat-user data-email="{email}">

<users/123456789012345678901> или <users/all>

Альтернативный вариант:

<chat-user data-user="users/123456789012345678901">,

<chat-user data-user="users/all"> или

<chat-user data-email="email@example.com">

@Mahan S

Подробнее о том, как упоминать пользователей в текстовых сообщениях…

Custom Emoji

<customEmojis/{uid}>

Альтернативный вариант:

<customEmojis/:{name}:>

<chat-emoji data-custom-emoji="customEmojis/{uid}">

Альтернативный вариант:

<chat-emoji data-emoji-name=":{name}:">

<customEmojis/abc-123-def>

Альтернативный вариант:

<customEmojis/:smiley-cat:>

Альтернативный вариант:

<chat-emoji data-custom-emoji="customEmojis/abc-123-def">

Альтернативный вариант:

<chat-emoji data-emoji-name=":smiley-cat:">

🐱 (собственный эмодзи "Улыбающаяся кошка");
Цитата Не поддерживается <chat-citation data-id="{id}">{text}</chat-citation>, где {id} – идентификатор цитаты, определенный в сообщении elements. <chat-citation data-id="cite_1">cited text</chat-citation>

цитируемый текст

Подробнее о добавлении цитат в текстовое сообщение…

Рассмотрим следующий код JSON:

    {
      "text": "Your pizza delivery *has arrived*!\nThank you for using _Cymbal Pizza!_"
    }

В чат-группе Chat это текстовое сообщение будет выглядеть следующим образом:

Приложение Cymbal Pizza отправляет текстовое сообщение о том, что доставка прибыла.

Как посмотреть форматирование текста в сообщении

Когда пользователь отправляет сообщение, его текст в формате обычного текста находится в поле text. Некоторое форматирование, которое применяется к текстовому сообщению с помощью синтаксиса Markdown, находится в поле text. Дополнительное форматирование выполняется в поле formattedText, предназначенном только для вывода. В частности, оно включает следующее:

  • Дополнительный синтаксис Markdown для текста
  • Упоминания пользователей
  • Пользовательские гиперссылки
  • Собственные эмодзи

Например, пользователь отправляет следующий текст:

Сообщение, полученное в Chat, со словом

Если сообщение было отформатировано с помощью меню Формат в интерфейсе Chat, поле text содержит только текст, а поле formattedText – разметку, текст и гиперссылку. В примере ниже показан черновик текстового сообщения, в котором есть гиперссылка, список и слово, выделенное полужирным шрифтом.

Черновик сообщения со словом

Сообщение будет получено в следующем формате:

    {
      "text": "I can meet there at:\nNoon\n3 pm\n5 pm\nWhat time works for you?",
      "formattedText": "I can meet <http://example.com|there> at:\n* Noon\n* 3 pm\n* 5 pm\nWhat time works for *you*?",
    }

Если вы добавите в текст сообщения обычную ссылку, например http://www.example.com/, Google Chat использует ее в качестве текста ссылки и автоматически свяжет этот текст с указанным URL.

Чтобы указать альтернативный текст для ссылки, используйте следующий синтаксис:

  • Для сообщений API, настроенных с помощью Markdown, используйте стандартный синтаксис ссылок Markdown:

    Пример синтаксиса Текст, который показывается в Google Chat.
    [Example website](https://example.com)
  • Для стандартных сообщений в обычном тексте используйте синтаксис вертикальной черты:

    Пример синтаксиса Текст, который показывается в Google Chat.
    <https://example.com|Example website>

    Вертикальная черта и текст ссылки необязательны, поэтому <https://example.com> и https://example.com эквивалентны.

Как использовать собственные эмодзи в текстовом сообщении

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

Чтобы создавать сообщения с собственными эмодзи, в приложении должна использоваться аутентификация пользователей. Пользовательские эмодзи не поддерживаются в сообщениях, созданных как вебхук, и в сообщениях, созданных с аутентификацией приложения.

Чтобы добавить собственный эмодзи в текст сообщения, укажите name или emoji_name ресурса customEmoji:

{
    "text": "Hello <customEmojis/CUSTOM_EMOJI_ID>."
}

Чтобы использовать этот пример, замените CUSTOM_EMOJI_ID на идентификатор собственного эмодзи. Этот идентификатор можно найти в поле name или emoji_name ресурса customEmoji.

Если ваше приложение отправляет сообщения с использованием синтаксиса Markdown, вы можете указать собственные эмодзи в формате HTML-тега, используя идентификатор собственного эмодзи:

{
  "text": "Hello <chat-emoji data-custom-emoji=\"customEmojis/CUSTOM_EMOJI_ID\">."
}

или указать название собственного эмодзи:

{
  "text": "Hello <chat-emoji data-emoji-name=\"CUSTOM_EMOJI_NAME\">."
}

Чтобы использовать эти примеры, замените CUSTOM_EMOJI_ID на идентификатор собственного эмодзи, а CUSTOM_EMOJI_NAME – на его короткий код.

Как упомянуть пользователя в текстовом сообщении

Приложения Chat могут отправлять текстовые сообщения, в которых @упоминается один или все пользователи в чат-группе Chat. Приложения для Chat также могут упоминать пользователей, которые не присоединились к чат-группе или являются участниками чат-группы в режиме импорта.

В тихих сообщениях упоминать пользователей нельзя. Если добавить упоминание в сообщение без уведомления, возвращается ошибка.

@упоминать определенных пользователей;

Чтобы упомянуть определенного пользователя, добавьте в текстовое сообщение <users/{user}>, где {user} – идентификатор пользователя. Например, в следующем текстовом сообщении 123456789012345678901 – это идентификатор пользователя Mahan S.:

{
    "text": "A customer has reported an issue. Assigning ticket #942 to <users/123456789012345678901>."
}

Если ваше приложение отправляет сообщения с использованием синтаксиса Markdown, используйте формат HTML-тега chat-user, чтобы указать идентификатор пользователя:

{
  "text": "Assigning ticket #942 to <chat-user data-user=\"users/123456789012345678901\">."
}

Или укажите адрес электронной почты:

{
  "text": "Assigning ticket #942 to <chat-user data-email=\"mahan@example.com\">."
}

Текстовое сообщение выглядит следующим образом:

Приложение для Chat упоминает пользователя в текстовом сообщении.

Значение users/{user} можно указать следующими способами:

  • Если приложение Google Chat отвечает на сообщение, отправленное пользователем, вы можете использовать поле message.sender.name события взаимодействия MESSAGE.
  • Если ваше приложение Google Chat создает асинхронное текстовое сообщение, вы можете указать значение для users/{user} следующими способами:

    • Используйте поле name ресурса Google Chat User, например users/123456789012345678901.
    • Используйте адрес электронной почты пользователя в качестве псевдонима для значения {user}. Например, если адрес электронной почты – mahan@example.com, вы можете указать пользователя как users/mahan@example.com. Чтобы использовать псевдоним электронной почты, приложение Google Chat должно выполнить аутентификацию от имени пользователя.
  • Если вы используете People API, то можете также использовать метод people.get, чтобы определить идентификатор пользователя.

@упоминать всех пользователей;

Чтобы создать текстовое сообщение, в котором упоминаются все участники чат-группы, замените {user} на all. В следующем примере JSON в сообщении упоминаются все пользователи:

{
    "text": "Important message for <users/all>: Code freeze starts at midnight tonight!"
}

Если приложение отправляет сообщения с использованием синтаксиса Markdown, укажите упоминание в формате HTML-тега chat-user:

{
  "text": "Important message for <chat-user data-user=\"users/all\">: Code freeze starts at midnight tonight!"
}

Как добавить цитаты в текстовое сообщение

Приложения Chat могут включать цитаты в текстовые сообщения, чтобы предоставлять пользователям подробную информацию об источнике. Добавить источники можно двумя способами:

  • Встроенные цитаты. Добавьте интерактивные карточки, которые будут появляться, когда пользователи наводят указатель на определенные части текста сообщения.
  • Источники в нижнем колонтитуле. Список источников будет показан внизу сообщения в виде ссылок.

Цитаты поддерживаются, только если для параметра markupSyntax сообщения задано значение MARKUP_SYNTAX_MARKDOWN. Эта функция поддерживается только при асинхронном создании сообщений с помощью Chat API.

Чтобы добавить в сообщение встроенные цитаты:

  1. Укажите источники в списке citations сообщения elements, назначив уникальный id каждому объекту Citation.
  2. В тексте сообщения заключите цитируемый текст в HTML-тег chat-citation: <chat-citation data-id="{id}">{text}</chat-citation>. Убедитесь, что {id} соответствует идентификатору, который вы указали в elements. Цитаты без ссылок (без соответствующего тега) игнорируются.
{
  "text": "This is a <chat-citation data-id=\"cite_1\">cited</chat-citation> text.",
  "markupSyntax": "MARKUP_SYNTAX_MARKDOWN",
  "elements": {
    "citations": [
      {
        "id": "cite_1",
        "citedSources": [
          {
            "title": "Example Source",
            "uri": "https://example.com"
          }
        ]
      }
    ]
  }
}

Чтобы добавить источники в нижний колонтитул сообщения, укажите их в списке citedSources сообщения elements. Все указанные здесь источники автоматически появляются под сообщением в виде ссылок в нижнем колонтитуле и не требуют встроенных тегов в тексте сообщения.

{
  "text": "This is a message with a footer source.",
  "markupSyntax": "MARKUP_SYNTAX_MARKDOWN",
  "elements": {
    "citedSources": [
      {
        "title": "Example Source",
        "uri": "https://example.com"
      }
    ]
  }
}

Как форматировать текст в карточках

В большинстве текстовых полей на карточках поддерживается базовое форматирование текста с помощью небольшого набора HTML-тегов. Форматирование текста в сообщениях-карточках отличается от форматирования в текстовых сообщениях, поскольку в текстовых сообщениях используется тот же синтаксис, что и в Chat.


Используйте Card Builder для разработки и предварительного просмотра сообщений и пользовательских интерфейсов для приложений Chat:

Как открыть Конструктор карточек

Форматирование текста абзаца

Поддерживаемые теги и их назначение приведены в таблице ниже.

Формат Пример Результат обработки
Полужирный "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</font>." Это красный шрифт.
Гиперссылка "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." Это первая строка.
Это новая строка.

Для определения списков и блоков кода используйте следующие теги:

Формат Пример Результат обработки
Новая строка "Line 1<br>Line 2" Строка 1
Строка 2
Моноширинный шрифт "This is an <code>inline code</code>." Это inline code.
Блок моноширинного шрифта "<pre><code>This a code block.</code></pre>"
This is a code block.
Маркированный список "<ul><li>List item 1</li><li>List item 2</li></ul>"
  • List item 1
  • List item 2
Упорядоченный список "<ol><li>List item 1</li><li>List item 2</li></ol>"
  1. List item 1
  2. List item 2

Разметка Markdown

Если синтаксис Markdown включен, вы можете использовать следующие символы:

Формат Пример Результат обработки
Полужирный **привет** или __привет__ hello
Курсив *привет* или _привет_ hello
Зачеркнутый ~привет~ hello
Моноширинный шрифт `hello` hello
Блок моноширинного шрифта ```
Hello
World
```
Hello
World
Маркированный список

- Это первый элемент в списке

- Это второй пункт списка.

  • Это первый элемент в списке.
  • Это второй элемент в списке.

* Это первый элемент в списке.

* Это второй пункт списка

  • Это первый элемент в списке.
  • Это второй элемент в списке.
Упорядоченный список

1. Это первый элемент в списке.

2. Это второй элемент в списке.

  1. Это первый элемент в списке.
  2. Это второй элемент в списке.
Гиперссылка [Пример сайта](https://example.com) Пример сайта

Добавление значков в текст

Чтобы показывать значки рядом с текстом на карточке, используйте виджеты DecoratedText и ButtonList.

В разделах ниже рассказывается, как использовать встроенные значки, значки Google Material или собственные значки в декорированном тексте или кнопках.

Использовать значки из Chat

Чтобы использовать встроенные значки, доступные в Chat, укажите одно из следующих значений:

В таблице ниже перечислены встроенные значки, доступные для сообщений в виде карточек.

AIRPLANE BOOKMARK
BUS CAR
ЧАСЫ CONFIRMATION_NUMBER_ICON
ОПИСАНИЕ DOLLAR
EMAIL EVENT_SEAT
FLIGHT_ARRIVAL FLIGHT_DEPARTURE
HOTEL HOTEL_ROOM_TYPE
INVITE MAP_PIN
MEMBERSHIP MULTIPLE_PEOPLE
PERSON ТЕЛЕФОН
RESTAURANT_ICON SHOPPING_CART
STAR STORE
TICKET TRAIN
VIDEO_CAMERA VIDEO_PLAY

Ниже приведен пример карточки со значком электронной почты.

Как использовать значки Material Design от Google

Вы можете использовать значки Material Design от Google, чтобы выбрать из более чем 2500 вариантов значков и настроить их толщину, заливку и класс.

Ниже приведен пример карточки со значком Material Design от Google.

Как использовать собственные значки

Чтобы добавить собственный значок, включите поле iconUrl и укажите соответствующий URL значка.

Ниже приведен пример пользовательского значка.