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

На этой странице объясняется, как приложения 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. Это второй элемент в списке.
Блок цитаты > (знак "больше") > (знак "больше") >привет
значок формата блока цитаты hello
Гиперссылка <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*?",
    }

Если вы добавите в текст сообщения обычный URL, например 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 ресурса User Google Chat, например 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, выбрав из более чем 2500 вариантов и настроив толщину, заливку и класс значков.

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

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

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

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