本页面介绍了 Google Chat 应用如何设置文本格式,以发送包含以下任何内容的消息:
- 包含超链接或 @提及 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,以保持向后兼容性。
您还可以在单个 Chat API 请求中指定 markup_syntax,以替换应用级默认设置。如果未在 API 请求中指定 markup_syntax,则系统会根据您调用 Chat API 的方式设置标记:
- 已配置的 Chat 应用:使用保存在 Chat API 配置页面上的标记语法。
- 未配置的云项目(无配置):如果您的云项目在没有保存 Chat 应用配置的情况下调用 Chat API,则请求默认为
MARKUP_SYNTAX_MARKDOWN。 - 传入的网络钩子:默认为
MARKUP_SYNTAX_CHAT。请参阅使用传入网络钩子发送消息。
如需设置短信格式,请使用以下语法:
| 格式 | MARKUP_SYNTAX_CHAT | MARKUP_SYNTAX_MARKDOWN | 示例语法 | 在 Google Chat 中显示的文本 |
|---|---|---|---|---|
| 粗体 | * |
** |
或者:
|
hello |
| 斜体 | _(下划线) |
* |
或者:
|
hello |
| 删除线 | ~ |
~~ |
或者:
|
|
| 等宽字体 | `(反引号) | `(反引号) | `你好` | hello |
| 等宽字体块 | ` ` ` (三个反引号) | ` ` ` (三个反引号) | Hello World |
Hello |
| 项目符号列表 | * 或 -(连字符),后跟一个空格 | * 或 -(连字符),后跟一个空格 | * 这是列表中的第一项。 * 这是列表中的第二项。 |
|
| 嵌套列表 | * 或 -(连字符),后跟一个空格,前面有四个空格(每个嵌套级别) | * 或 -(连字符),后跟一个空格,每个嵌套级别前面有四个空格 | * 这是列表中嵌套深度为 1 的项。 * 这是列表中嵌套深度为 2 的项。 * 这是列表中嵌套深度为 3 的项。 |
|
| 编号列表 | 不支持 | 1. (数字后跟一个英文句号和一个空格) | 1. 这是列表中的第一项。 2. 这是列表中的第二项。 |
|
| 代码块引用 | >(大于号) | >(大于号) | >hello |
|
| 超链接 | <hyperlink|display text> |
[display text](hyperlink) |
或者:
|
如需详细了解如何添加超链接,请参阅设置链接格式。 |
| 提及用户 | <users/{user}>,其中 {user} 是用户 ID。 |
或者:
|
或者:
|
@Mahan S 如需详细了解如何提及用户,请参阅在短信中提及用户。 |
| Custom Emoji |
或者:
|
或者:
|
或者:
或者:
或者:
|
🐱(微笑的猫自定义表情符号) |
| 引用 | 不支持 | <chat-citation data-id="{id}">{text}</chat-citation>,其中 {id} 是在消息 elements 中定义的引用 ID。 |
<chat-citation data-id="cite_1">cited text</chat-citation> |
引用的文字 如需详细了解引用,请参阅向短信添加引用。 |
例如,请考虑以下 JSON:
{
"text": "Your pizza delivery *has arrived*!\nThank you for using _Cymbal Pizza!_"
}
此设置了格式的消息在 Chat 聊天室中显示如下:
查看消息中发送的文字格式
当用户发送消息时,消息的纯文本正文位于 text 字段中。使用 Markdown 语法应用于短信的一些格式位于 text 字段中。其他格式位于仅输出 formattedText 字段中,包括:
- 其他文本 Markdown 语法
- 用户提及
- 自定义超链接
- 自定义表情符号
例如,假设用户发送了以下文本:
如果消息是使用 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 会将其用作链接文本,并自动将该文本超链接到指定的网址。
如需为链接提供替代链接文字,请使用以下语法:
对于使用 Markdown 配置的 API 消息,请使用标准 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 中的自定义表情符号和管理自定义表情符号权限。
如需创建包含自定义表情符号的消息,您的应用必须使用用户身份验证。作为网络钩子创建的消息或通过应用身份验证创建的消息不支持自定义表情符号。
如需在消息文本中添加自定义表情符号,请指定 customEmoji 资源的 name 或 emoji_name:
{
"text": "Hello <customEmojis/CUSTOM_EMOJI_ID>."
}
如需使用此示例,请将 CUSTOM_EMOJI_ID 替换为自定义表情符号的 ID。您可以在 customEmoji 资源的 name 或 emoji_name 字段中找到此 ID。
如果您的应用使用 Markdown 语法发送消息,您可以使用自定义表情符号 ID,以 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 替换为自定义表情符号 ID,并将 CUSTOM_EMOJI_NAME 替换为自定义表情符号短代码名称。
在消息中提及用户
Chat 应用可以发送文本消息,在 Chat 聊天室中 @提及一个或所有用户。Chat 应用还可以提及尚未加入聊天室或处于导入模式的聊天室成员的用户。
静默消息不支持提及用户。在静默消息中提及用户会返回错误。
使用“@”提及特定用户
如需 @提及特定用户,请在短信中添加 <users/{user}>,其中 {user} 是用户的 ID。例如,请考虑以下短信,其中 123456789012345678901 表示用户 Mahan S. 的 ID:
{
"text": "A customer has reported an issue. Assigning ticket #942 to <users/123456789012345678901>."
}
如果您的应用使用 Markdown 语法发送消息,请使用 chat-user HTML 标记格式指定用户 ID:
{
"text": "Assigning ticket #942 to <chat-user data-user=\"users/123456789012345678901\">."
}
或按邮箱指定:
{
"text": "Assigning ticket #942 to <chat-user data-email=\"mahan@example.com\">."
}
短信内容如下所示:
您可以通过以下方式指定 users/{user} 值:
- 如果您的 Google Chat 应用正在回复用户发送的消息,您可以使用
MESSAGE互动事件的message.sender.name字段。 如果您的 Google Chat 应用正在创建异步短信,您可以通过以下方式指定
users/{user}的值:- 使用 Google Chat
User资源的name字段,例如users/123456789012345678901。 - 将用户的邮箱用作
{user}值的别名。例如,如果电子邮件地址为mahan@example.com,您可以将用户指定为users/mahan@example.com。如需使用邮箱别名,您的 Google Chat 应用必须以用户身份进行身份验证。
- 使用 Google Chat
如果您使用 People API,还可以使用
people.get方法来识别用户 ID。
@提及所有用户
如需创建在聊天室中用“@”提及所有人的文本消息,请将 {user} 替换为 all。以下 JSON 示例在消息中提及了所有用户:
{
"text": "Important message for <users/all>: Code freeze starts at midnight tonight!"
}
如果您的应用使用 Markdown 语法发送消息,请使用 chat-user HTML 标记格式指定提及:
{
"text": "Important message for <chat-user data-user=\"users/all\">: Code freeze starts at midnight tonight!"
}
为短信添加引用
Chat 应用可以在短信中添加引用,以便向用户提供详细的来源信息。您可以通过以下两种方式提供来源:
- 内嵌引用:添加互动式卡片,当用户将指针悬停在消息文本的特定部分时,这些卡片就会显示。
- 消息底部参考来源:在消息底部以页脚链接的形式显示来源列表。
仅当消息的 markupSyntax 设置为 MARKUP_SYNTAX_MARKDOWN 时,才支持引用。只有通过 Chat API 异步创建消息时,才支持此功能。
如需在消息中添加内嵌引用,请执行以下操作:
- 在消息
elements的citations列表中提供来源,并为每个Citation对象分配一个唯一的id。 - 在消息文本中,使用
chat-citationHTML 标记格式将要引用的文本括起来:<chat-citation data-id="{id}">{text}</chat-citation>。确保{id}与您在elements中定义的 ID 一致。未引用的引用(没有匹配标记的引用)会被忽略。
{
"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"
}
]
}
]
}
}
如需向消息添加消息底部参考来源,请在消息 elements 的 citedSources 列表中提供这些来源。此处提供的任何来源都会自动显示在消息下方,作为页脚链接,无需在消息文本中添加任何内嵌标签。
{
"text": "This is a message with a footer source.",
"markupSyntax": "MARKUP_SYNTAX_MARKDOWN",
"elements": {
"citedSources": [
{
"title": "Example Source",
"uri": "https://example.com"
}
]
}
}
设置卡片中显示的文本的格式
在卡片内,大多数文本字段都支持通过一小部分 HTML 标记进行基本的文本格式设置。卡片消息中的文本格式与文本消息中的文本格式不同,因为文本消息的格式与 Chat 用户使用的语法相同。
使用卡片构建器为 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>" |
|
| 项目符号列表 | "<ul><li>List item 1</li><li>List item 2</li></ul>" |
|
| 有序列表 | "<ol><li>List item 1</li><li>List item 2</li></ol>" |
|
Markdown
Markdown 语法处于开启状态时,您可以使用以下语法:
| 格式 | 示例 | 呈现的结果 |
|---|---|---|
| 粗体 | **hello** 或 __hello__ | hello |
| 斜体 | *hello* 或 _hello_ | hello |
| 删除线 | ~你好~ | |
| 等宽字体 | `你好` | hello |
| 等宽字体块 | Hello World |
Hello |
| 项目符号列表 | - 这是列表中的第一项 - 这是列表中的第二项 |
|
|
* 这是列表中的第一项 * 这是列表中的第二项 |
|
|
| 有序列表 | 1. 这是列表中的第一项 2. 这是列表中的第二项 |
|
| 超链接 | [示例网站](https://example.com) | 示例网站 |
向文本添加图标
如需在卡片中同时显示图标和文本,您可以使用 DecoratedText 和 ButtonList widget。
以下部分介绍了如何在修饰文本或按钮中使用内置图标、Google Material 图标或自定义图标。
使用 Chat 中的图标
如需使用 Chat 中提供的内置图标,请指定以下任一图标:
下表列出了可用于卡片消息的内置图标:
| AIRPLANE | BOOKMARK | ||
| BUS | CAR | ||
| 时钟 | CONFIRMATION_NUMBER_ICON | ||
| 说明 | DOLLAR | ||
| EVENT_SEAT | |||
| FLIGHT_ARRIVAL | FLIGHT_DEPARTURE | ||
| HOTEL | HOTEL_ROOM_TYPE | ||
| 邀请 | MAP_PIN | ||
| 会员 | MULTIPLE_PEOPLE | ||
| PERSON | PHONE | ||
| RESTAURANT_ICON | SHOPPING_CART | ||
| STAR | STORE | ||
| TICKET | 训练 | ||
| VIDEO_CAMERA | VIDEO_PLAY |
以下是带有电子邮件图标的卡片示例:
使用 Google Material 图标
您可以使用 Google Material 图标,从 2,500 多个图标选项中进行选择,并自定义图标的粗细、填充和等级。
以下是包含 Google Material 图标的卡片示例:
使用自定义图标
如需添加自定义图标,请添加 iconUrl 字段并指定图标的对应网址。
以下是自定义图标的示例: