REST Resource: spaces.messages

资源:消息

Google Chat 聊天室中的消息。

JSON 表示法
{
  "name": string,
  "sender": {
    object (User)
  },
  "createTime": string,
  "lastUpdateTime": string,
  "deleteTime": string,
  "text": string,
  "formattedText": string,
  "cards": [
    {
      object (Card)
    }
  ],
  "cardsV2": [
    {
      object (CardWithId)
    }
  ],
  "annotations": [
    {
      object (Annotation)
    }
  ],
  "thread": {
    object (Thread)
  },
  "space": {
    object (Space)
  },
  "fallbackText": string,
  "actionResponse": {
    object (ActionResponse)
  },
  "argumentText": string,
  "slashCommand": {
    object (SlashCommand)
  },
  "attachment": [
    {
      object (Attachment)
    }
  ],
  "matchedUrl": {
    object (MatchedUrl)
  },
  "threadReply": boolean,
  "clientAssignedMessageId": string,
  "emojiReactionSummaries": [
    {
      object (EmojiReactionSummary)
    }
  ],
  "privateMessageViewer": {
    object (User)
  },
  "deletionMetadata": {
    object (DeletionMetadata)
  },
  "quotedMessageMetadata": {
    object (QuotedMessageMetadata)
  },
  "attachedGifs": [
    {
      object (AttachedGif)
    }
  ],
  "accessoryWidgets": [
    {
      object (AccessoryWidget)
    }
  ]
}
字段
name

string

消息的资源名称。

格式:spaces/{space}/messages/{message}

其中,{space} 是发布消息的空间的 ID,{message} 是系统为消息分配的 ID。例如 spaces/AAAAAAAAAAA/messages/BBBBBBBBBBB.BBBBBBBBBBB

如果您在创建消息时设置了自定义 ID,则可以使用此 ID 在请求中指定消息,只需将 {message} 替换为 clientAssignedMessageId 字段中的值即可。例如 spaces/AAAAAAAAAAA/messages/client-custom-name。有关详情,请参阅为消息命名

sender

object (User)

仅供输出。创建消息的用户。如果您的 Chat 应用以用户的身份进行身份验证,输出结果会填充用户 nametype

createTime

string (Timestamp format)

可选。不可变。对于在 Chat 中创建的聊天室,显示消息的创建时间。此字段仅输出,但在“导入模式聊天室”中使用时除外。

对于导入模式聊天室,请将此字段设为来源中消息创建时间的历史时间戳,以保留原始创建时间。

lastUpdateTime

string (Timestamp format)

仅供输出。用户上次编辑消息的时间。如果消息从未编辑过,则此字段为空。

deleteTime

string (Timestamp format)

仅供输出。消息在 Google Chat 中删除的时间。如果消息永远不会被删除,则此字段为空。

text

string

邮件的纯文本正文。指向图片、视频或网页的第一个链接会生成预览条状标签。您还可以用“@”提及某位 Google Chat 用户或聊天室中的所有人。

要了解如何创建短信,请参阅发送短信

formattedText

string

仅供输出。包含消息 text,其中包含添加的标记来传达格式。此字段可能不会捕获界面中显示的所有格式,但包含以下内容:

  • 适用于粗体、斜体、删除线、等宽和等宽文本块的标记语法

  • 用户提及,采用 <users/{user}> 格式。

  • 采用 <{url}|{rendered_text}> 格式的自定义超链接,其中第一个字符串是网址,第二个字符串是呈现的文字,例如 <http://example.com|custom text>

  • 使用 :{emoji_name}: 格式的自定义表情符号,例如 :smile:。这不适用于 Unicode 表情符号,例如表示笑脸表情符号的 U+1F600

有关详情,请参阅查看邮件中发送的文本格式

cards[]
(deprecated)

object (Card)

已废弃:请改用 cardsV2

内容丰富的互动卡片,可用于显示各种界面元素,例如设置了格式的文本、按钮和可点击的图片。卡片通常显示在邮件纯文本正文下方。cardscardsV2 的大小上限为 32 KB。

cardsV2[]

object (CardWithId)

一个 cards 数组。

只有 Chat 应用可以创建卡片。如果您的 Chat 应用以用户的身份进行身份验证,则消息不能包含卡片。

如需了解卡片以及如何创建卡片,请参阅使用卡片设计动态、互动且一致的界面

使用卡片制作工具设计和预览卡片。

打开卡片制作工具

annotations[]

object (Annotation)

仅供输出。与此消息中的 text 相关联的注解。

thread

object (Thread)

消息所属的会话。如需查看用法示例,请参阅发起或回复消息串

space

object (Space)

如果您的 Chat 应用以用户的身份进行身份验证,输出结果会填充聊天室 name

fallbackText

string

消息卡片的纯文本说明,在无法显示实际卡片(例如移动设备通知)时使用。

actionResponse

object (ActionResponse)

仅限输入。Chat 应用可以用来配置回复发布方式的参数。

argumentText

string

仅供输出。消息的纯文本正文,其中所有提及 Chat 应用的消息均去掉。

slashCommand

object (SlashCommand)

仅供输出。斜杠命令信息(如果适用)。

attachment[]

object (Attachment)

用户上传的附件。

matchedUrl

object (MatchedUrl)

仅供输出。spaces.messages.text 中与链接预览格式匹配的网址。如需了解详情,请参阅预览链接

threadReply

boolean

仅供输出。如果为 true,则表示消息是回复会话中的回复。如果消息处于false状态,那么相应消息会以消息串中的首条消息或没有“话题式回复”消息的形式显示在聊天室的顶级对话中。

如果聊天室不支持在消息串中回复,则此字段始终为“false”。

clientAssignedMessageId

string

可选。消息的自定义 ID。您可以使用字段来识别消息,或者获取、删除或更新消息。如需设置自定义 ID,请在创建消息时指定 messageId 字段。有关详情,请参阅为消息命名

emojiReactionSummaries[]

object (EmojiReactionSummary)

仅供输出。消息中的表情符号回应摘要列表。

privateMessageViewer

object (User)

不可变。用于创建消息的输入,否则仅输出。可以查看消息的用户。设置完成后,消息不会公开,只有指定用户和 Chat 应用才能查看。私信不支持链接预览和附件。

只有 Chat 应用可以发送私信。如果您的 Chat 应用通过用户身份验证才能发送消息,则消息不得设为不公开,必须省略此字段。

有关详情,请参阅向 Google Chat 用户发送私信

deletionMetadata

object (DeletionMetadata)

仅供输出。关于已删除消息的信息。设置 deleteTime 后,系统会删除消息。

quotedMessageMetadata

object (QuotedMessageMetadata)

仅供输出。Google Chat 用户在聊天室中引用的消息的相关信息。Google Chat 用户可以引用消息进行回复。

attachedGifs[]

object (AttachedGif)

仅供输出。邮件中附加的 GIF 图片。

accessoryWidgets[]

object (AccessoryWidget)

显示在邮件底部的一个或多个互动微件。您可以向包含文字和/或卡片的信息添加配件微件。不支持包含对话框的消息。

如果使用配件 widget 创建消息,需要进行应用身份验证

以下示例展示了在短信中使用配件微件(拇指朝上和拇指朝下按钮)的 Chat 应用:

配件 widget 消息示例

此示例消息的 JSON 如下所示:

{
  "text": "Rate your experience with this Chat app.",
  "accessoryWidgets": [
    {
      "buttonList": {
        "buttons": [
          {
            "icon": {
              "materialIcon": {
                "name": "thumb_up"
              }
            },
            "color": {
              "red": 0,
              "blue": 255,
              "green": 0
            },
            "onClick": {
              "action": {
                "function": "doUpvote",
              }
            }
          },
          {
            "icon": {
              "materialIcon": {
                "name": "thumb_down"
              }
            },
            "color": {
              "red": 0,
              "blue": 255,
              "green": 0
            },
            "onClick": {
              "action": {
                "function": "doDownvote",
              }
            }
          }
        ]
      }
    }
  ]
}

CardWithId

Google Chat 消息中的卡片

只有 Chat 应用可以创建卡片。如果您的 Chat 应用以用户的身份进行身份验证,则消息不能包含卡片。

使用卡片制作工具设计和预览卡片。

打开卡片制作工具

JSON 表示法
{
  "cardId": string,
  "card": {
    object (Card)
  }
}
字段
cardId

string

如果邮件包含多张卡片,则必须填写此字段。消息中卡片的唯一标识符。

card

object (Card)

卡片。大小上限为 32 KB。

注解

仅供输出。与消息的纯文本正文相关联的注释。如要为短信添加基本格式,请参阅设置短信格式

纯文本邮件正文示例:

Hello @FooBot how are you!"

相应的注释元数据:

"annotations":[{
  "type":"USER_MENTION",
  "startIndex":6,
  "length":7,
  "userMention": {
    "user": {
      "name":"users/{user}",
      "displayName":"FooBot",
      "avatarUrl":"https://goo.gl/aeDtrS",
      "type":"BOT"
    },
    "type":"MENTION"
   }
}]
JSON 表示法
{
  "type": enum (AnnotationType),
  "length": integer,
  "startIndex": integer,

  // Union field metadata can be only one of the following:
  "userMention": {
    object (UserMentionMetadata)
  },
  "slashCommand": {
    object (SlashCommandMetadata)
  }
  // End of list of possible types for union field metadata.
}
字段
type

enum (AnnotationType)

此注释的类型。

length

integer

与此注释对应的纯文本消息正文中子字符串的长度。

startIndex

integer

与此注释对应的纯文本消息正文中的起始索引(从 0 开始,含 0)。

联合字段 metadata。关于注解的其他元数据。metadata 只能是下列其中一项:
userMention

object (UserMentionMetadata)

用户提及的元数据。

slashCommand

object (SlashCommandMetadata)

斜杠命令的元数据。

AnnotationType

注释的类型。

枚举
ANNOTATION_TYPE_UNSPECIFIED 枚举的默认值。请勿使用。
USER_MENTION 提及一位用户。
SLASH_COMMAND 系统将调用斜杠命令。

UserMentionMetadata

用户提及 (@) 的注解元数据。

JSON 表示法
{
  "user": {
    object (User)
  },
  "type": enum (Type)
}
字段
user

object (User)

用户提到过。

type

enum (Type)

用户提及的类型。

类型

枚举
TYPE_UNSPECIFIED 枚举的默认值。请勿使用。
ADD 将用户添加到聊天室。
MENTION 在聊天室中提及用户。

SlashCommandMetadata

斜杠命令 (/) 的注解元数据。

JSON 表示法
{
  "bot": {
    object (User)
  },
  "type": enum (Type),
  "commandName": string,
  "commandId": string,
  "triggersDialog": boolean
}
字段
bot

object (User)

调用了命令的 Chat 应用。

type

enum (Type)

斜杠命令的类型。

commandName

string

调用的斜杠命令的名称。

commandId

string (int64 format)

调用的斜杠命令的 ID。

triggersDialog

boolean

指示斜杠命令是否用于对话框。

类型

枚举
TYPE_UNSPECIFIED 枚举的默认值。请勿使用。
ADD 将 Chat 应用添加到聊天室。
INVOKE 在空格中调用斜杠命令。

会话

Google Chat 聊天室中的消息串。如需查看用法示例,请参阅发起或回复消息串

如果您在创建邮件时指定了会话串,则可以设置 messageReplyOption 字段,以确定在找不到匹配的会话串时如何操作。

JSON 表示法
{
  "name": string,
  "threadKey": string
}
字段
name

string

仅供输出。线程的资源名称。

示例:spaces/{space}/threads/{thread}

threadKey

string

可选。用于创建或更新线程的输入。否则,将仅输出。线程的 ID。最多支持 4000 个字符。

此 ID 是设置此 ID 的 Chat 应用的唯一 ID。例如,如果多个 Chat 应用使用相同的会话键创建了一条消息,那么这些消息会发布到不同的会话中。如需在人员或其他 Chat 应用创建的会话中回复,请改为指定会话 name 字段。

ActionResponse

Chat 应用可以用来配置回复发布方式的参数。

JSON 表示法
{
  "type": enum (ResponseType),
  "url": string,
  "dialogAction": {
    object (DialogAction)
  },
  "updatedWidget": {
    object (UpdatedWidget)
  }
}
字段
type

enum (ResponseType)

仅限输入。Chat 应用响应的类型。

url

string

仅限输入。供用户进行身份验证或配置的网址。(仅适用于 REQUEST_CONFIG 响应类型。)

dialogAction

object (DialogAction)

仅限输入。对与对话框相关的互动事件的响应。须随ResponseType.Dialog一起观看。

updatedWidget

object (UpdatedWidget)

仅限输入。更新后的 widget 的响应。

ResponseType

Chat 应用响应的类型。

枚举
TYPE_UNSPECIFIED 作为 NEW_MESSAGE 处理的默认类型。
NEW_MESSAGE 作为新帖子在主题中发帖。
UPDATE_MESSAGE 更新 Chat 应用的消息。只有在邮件发件人类型为“BOT”的 CARD_CLICKED 事件中,才允许执行此操作。
UPDATE_USER_MESSAGE_CARDS 更新用户消息中的卡片。此值只能用作对包含匹配网址的 MESSAGE 事件或消息发送者类型为 HUMANCARD_CLICKED 事件的响应。文本会被忽略。
REQUEST_CONFIG 以不公开的方式要求用户进行其他身份验证或配置。
DIALOG 显示对话框
UPDATE_WIDGET 微件文本自动补全选项查询。

DialogAction

包含对话框和请求状态代码。

JSON 表示法
{
  "actionStatus": {
    object (ActionStatus)
  },

  // Union field action can be only one of the following:
  "dialog": {
    object (Dialog)
  }
  // End of list of possible types for union field action.
}
字段
actionStatus

object (ActionStatus)

仅限输入。调用或提交对话框的请求的状态。根据需要向用户显示状态和消息。例如,在出现错误或成功时。

联合字段 action

action 只能是下列其中一项:

dialog

object (Dialog)

仅限输入。请求的对话框

对话框

环绕在对话框的卡片正文中的封装容器。

JSON 表示法
{
  "body": {
    object (Card)
  }
}
字段
body

object (Card)

仅限输入。对话框的正文,以模态形式呈现。Google Chat 应用不支持以下卡片实体:DateTimePickerOnChangeAction

ActionStatus

表示调用或提交对话框的请求的状态。

JSON 表示法
{
  "statusCode": enum (Code),
  "userFacingMessage": string
}
字段
statusCode

enum (Code)

状态代码。

userFacingMessage

string

用于向用户发送其请求状态的消息。如果未设置,系统会根据 statusCode 发送一条通用消息。

编码

gRPC API 的规范错误代码。

有时可能有多个错误代码都适用。服务应返回适用且最具体的错误代码。例如,如果 OUT_OF_RANGEFAILED_PRECONDITION 两个代码都适用,则前者优先于后者。同样,NOT_FOUNDALREADY_EXISTS 优先于 FAILED_PRECONDITION

枚举
OK

不是错误信息;成功时返回此项。

HTTP 映射:200 OK

CANCELLED

操作已取消(通常是被调用者取消)。

HTTP 映射:499 Client Closed Request

UNKNOWN

未知错误。例如,当从另一个地址空间接收到的 Status 值属于此地址空间中未知的错误空间时,可能返回此错误。另外,因 API 没有返回足够错误信息而引发的错误也可能会转换为此错误。

HTTP 映射:500 Internal Server Error

INVALID_ARGUMENT

客户端指定的参数无效。请注意,这与 FAILED_PRECONDITION 不同。无论系统状态如何,INVALID_ARGUMENT 都会指出有问题的参数(例如文件名格式错误)。

HTTP 映射:400 Bad Request

DEADLINE_EXCEEDED

在操作完成之前截止期限已过。对于更改系统状态的操作,即使操作已成功完成,也可能会返回此错误。例如,服务器的成功响应可能会延迟足够长的时间以使截止期限过期。

HTTP 映射:504 Gateway Timeout

NOT_FOUND

找不到所请求的部分实体(例如,文件或目录)。

服务器开发者注意:如果要拒绝整个一类用户的请求(例如,功能逐步发布的用户或未正式加入许可名单的用户),则可以使用 NOT_FOUND。如果要拒绝某一类用户中部分用户的请求(例如,基于用户的访问权限控制),则必须使用 PERMISSION_DENIED

HTTP 映射:404 Not Found

ALREADY_EXISTS

客户端试图创建的实体(如文件或目录)已经存在。

HTTP 映射:409 Conflict

PERMISSION_DENIED

调用者无权执行指定的操作。如果遭拒的原因是由于部分资源已用尽,则不得使用 PERMISSION_DENIED(请改用 RESOURCE_EXHAUSTED 来表示此类错误)。如果调用者无法识别,则不得使用 PERMISSION_DENIED(请改用 UNAUTHENTICATED 来表示此类错误)。此错误代码并不意味着请求有效,或者请求的实体存在或满足其他先决条件。

HTTP 映射:403 Forbidden

UNAUTHENTICATED

请求没有相应操作的有效身份验证凭据。

HTTP 映射:401 Unauthorized

RESOURCE_EXHAUSTED

部分资源已用尽,可能是每用户配额不足,也可能是整个文件系统的存储空间已用完。

HTTP 映射:429 Too Many Requests

FAILED_PRECONDITION

操作被拒绝,因为系统未处于执行该操作所需的状态。例如,要删除的目录非空、将 rmdir 操作应用于非目录等等。

服务实施者可根据以下准则来确定是选择 FAILED_PRECONDITIONABORTED 还是 UNAVAILABLE:(a) 如果客户端只能重试失败的调用,则使用 UNAVAILABLE。(b) 如果客户端应在更高层级重试,请使用 ABORTED。例如,当客户端指定的测试和设置失败时,表示客户端应重启读取-修改-写入序列。(c) 如果客户端不得在系统状态明确修正前执行重试,则使用 FAILED_PRECONDITION。例如,如果“rmdir”因目录非空而失败,则应返回 FAILED_PRECONDITION,因为除非从目录中删除文件,否则客户端不会重试。

HTTP 映射:400 Bad Request

ABORTED

操作已中止,通常是由于序列程序检查失败或事务中止等并发问题。

请参阅上述准则以确定是选择 FAILED_PRECONDITIONABORTED 还是 UNAVAILABLE

HTTP 映射:409 Conflict

OUT_OF_RANGE

尝试执行的操作已超出有效范围。例如,查找或读取操作已超出文件末尾。

INVALID_ARGUMENT 不同,此错误指示的问题可以通过改变系统状态得到修复。例如,如果要求的读取操作偏移量不在 [0,2^32-1] 范围内,则 32 位文件系统将会生成 INVALID_ARGUMENT,但如果要求的读取操作偏移量超过当前文件大小,该系统则会生成 OUT_OF_RANGE

FAILED_PRECONDITIONOUT_OF_RANGE 之间有一些重叠。我们建议在适用时使用 OUT_OF_RANGE(更具体的错误),这样迭代空间的调用方就可以轻松查找 OUT_OF_RANGE 错误,以检测是否完成了。

HTTP 映射:400 Bad Request

UNIMPLEMENTED

操作在此服务中未实现或不受支持/未启用。

HTTP 映射:501 Not Implemented

INTERNAL

内部错误。这意味着底层系统所期望的一些不变量已损坏。此错误代码保留用于严重错误。

HTTP 映射:500 Internal Server Error

UNAVAILABLE

该服务目前不可用。这很可能是一种暂时情况,可以通过退避重试来纠正。 请注意,重试执行非幂等操作并非总是安全的。

请参阅上述准则以确定是选择 FAILED_PRECONDITIONABORTED 还是 UNAVAILABLE

HTTP 映射:503 Service Unavailable

DATA_LOSS

数据丢失或损坏且不可恢复。

HTTP 映射:500 Internal Server Error

UpdatedWidget

更新后的 widget 的响应。用于为 widget 提供自动补全选项。

JSON 表示法
{
  "widget": string,

  // Union field updated_widget can be only one of the following:
  "suggestions": {
    object (SelectionItems)
  }
  // End of list of possible types for union field updated_widget.
}
字段
widget

string

更新后的 widget 的 ID。此 ID 必须与触发更新请求的微件的 ID 一致。

联合字段 updated_widget

updated_widget 只能是下列其中一项:

suggestions

object (SelectionItems)

微件自动补全结果列表

SelectionItems

微件自动补全结果列表。

JSON 表示法
{
  "items": [
    {
      object (SelectionItem)
    }
  ]
}
字段
items[]

object (SelectionItem)

SelectionItem 对象的数组。

SlashCommand

Google Chat 中的斜杠命令

JSON 表示法
{
  "commandId": string
}
字段
commandId

string (int64 format)

调用的斜杠命令的 ID。

MatchedUrl

Chat 消息中匹配的网址。聊天应用可以预览匹配的网址。如需了解详情,请参阅预览链接

JSON 表示法
{
  "url": string
}
字段
url

string

仅供输出。匹配的网址。

EmojiReactionSummary

使用特定表情符号回应消息的人数。

JSON 表示法
{
  "emoji": {
    object (Emoji)
  },
  "reactionCount": integer
}
字段
emoji

object (Emoji)

与回应相关联的表情符号。

reactionCount

integer

使用相关表情符号的回应总数。

DeletionMetadata

关于已删除消息的信息。设置 deleteTime 后,系统会删除消息。

JSON 表示法
{
  "deletionType": enum (DeletionType)
}
字段
deletionType

enum (DeletionType)

表明谁删除了消息。

DeletionType

谁删除了消息以及删除方式。

枚举
DELETION_TYPE_UNSPECIFIED 此值未使用。
CREATOR 用户删除了自己的消息。
SPACE_OWNER 聊天室所有者已删除消息。
ADMIN Google Workspace 管理员删除了此消息。
APP_MESSAGE_EXPIRY Chat 应用在自己的消息过期后删除了自己的消息。
CREATOR_VIA_APP Chat 应用代表用户删除了消息。
SPACE_OWNER_VIA_APP 一款 Chat 应用代表聊天室所有者删除了消息。

QuotedMessageMetadata

引用的消息的相关信息。

JSON 表示法
{
  "name": string,
  "lastUpdateTime": string
}
字段
name

string

仅供输出。引用的消息的资源名称。

格式:spaces/{space}/messages/{message}

lastUpdateTime

string (Timestamp format)

仅供输出。引用消息的创建或上次更新时间的时间戳。

AttachedGif

通过网址指定的 GIF 图片。

JSON 表示法
{
  "uri": string
}
字段
uri

string

仅供输出。托管 GIF 图片的网址。

AccessoryWidget

附加到应用消息底部的无边框 widget。

JSON 表示法
{

  // Union field action can be only one of the following:
  "buttonList": {
    object (ButtonList)
  }
  // End of list of possible types for union field action.
}
字段

联合字段 action

action 只能是下列其中一项:

buttonList

object (ButtonList)

消息下方显示的按钮列表。

方法

create

在 Google Chat 聊天室中创建消息。

delete

删除消息。

get

返回有关消息的详细信息。

list

列出来电者所属的聊天室中的消息,包括已屏蔽成员和聊天室的消息。

patch

更新消息。

update

更新消息。