订阅 Google Chat 活动

本页介绍了 Chat 应用可以使用 Google Workspace Events API 订阅的 Chat 事件。确定需要哪些类型的事件后, 您可以创建订阅,开始 接收来自 Chat 的事件。

除了订阅事件之外,您还可以通过调用 Google Chat API 查询事件。调用 Chat API 可让您定期检索事件,或补全因中断而可能错过的订阅事件。如需了解接收和响应 Chat 事件的方式,请参阅 Chat 文档中的 使用 Chat 事件

支持的 Chat 事件

通过 Google Workspace 订阅,您可以接收有关 Chat 中以下类型更改的事件:

您可以监控事件的资源

如需接收事件,您需要指定要监控的 Chat 资源,该资源称为订阅的 目标资源。

Google Workspace Events API 支持以下 Chat 目标资源:

目标资源 格式 限制
聊天室

//chat.googleapis.com/spaces/SPACE

其中,SPACE 是 Chat API space 资源的资源名称中的 ID。您可以从聊天室的网址或使用 spaces.list() 方法获取此 ID。

授权订阅的 Chat 用户或 Chat 应用必须 成为聊天室的成员,他们通过其 Google Workspace 或 Google 账号加入聊天室。支持:
用户的所有聊天室

//chat.googleapis.com/spaces/-

订阅仅接收用户通过其 Google Workspace 或 Google 账号成为成员的聊天室的事件。仅支持用户身份验证
用户

//cloudidentity.googleapis.com/users/USER

其中,USER 是 Chat API user 资源的 资源名称中的 ID。如需了解详情,请参阅 识别和指定 Google Chat 用户

订阅仅接收有关 授权订阅的用户的事件。用户无法代表其他用户授权订阅。仅支持用户身份验证

客户 ( 开发者预览版)

//admin.googleapis.com/customers/CUSTOMER

其中,CUSTOMER 是客户 ID。您还可以使用 my_customer 别名作为 Chat 应用的客户网域。

订阅接收客户网域管理的所有聊天室和用户的事件。仅支持在管理员批准的情况下通过应用身份验证

用于创建订阅的事件类型

创建订阅时,请使用 eventTypes[] 字段指定要接收的事件类型。事件类型按照 CloudEvents 规范进行格式化,例如 google.workspace.APPLICATION.RESOURCE.VERSION.ACTION

例如,如需接收有关用户加入 Chat 聊天室的事件,请将聊天室指定为目标资源,并将事件类型指定为 google.workspace.chat.membership.v1.created。如需接收有关给定用户加入任何聊天室的事件,请将用户指定为目标资源,并将事件类型指定为 google.workspace.chat.membership.v1.created。如需详细了解 事件的工作原理,请参阅 Google Workspace 事件的结构

下表显示了聊天室订阅和用户订阅支持的事件类型。如需了解有关 触发事件的例外情况,请参阅限制

事件类型 格式 资源数据
聊天室订阅  
发布了消息。

google.workspace.chat.message.v1.created

space.message

消息已更新。

google.workspace.chat.message.v1.updated

space.message

消息已删除。

google.workspace.chat.message.v1.deleted

space.message

创建了回应。

google.workspace.chat.reaction.v1.created

space.message.reaction

删除了回应。

google.workspace.chat.reaction.v1.deleted

space.message.reaction

向聊天室添加了成员。

google.workspace.chat.membership.v1.created

space.membership

聊天室中的成员已更新。

google.workspace.chat.membership.v1.updated

space.membership

从聊天室中移除了成员。

google.workspace.chat.membership.v1.deleted

space.membership

聊天室已更新。

google.workspace.chat.space.v1.updated

space

聊天室已删除。

google.workspace.chat.space.v1.deleted

space

用户订阅  
用户成为聊天室的成员。

并非所有新成员都会触发事件。如需了解详情,请参阅限制

google.workspace.chat.membership.v1.created

space.membership

用户在聊天室中的成员资格已更新。

google.workspace.chat.membership.v1.updated

space.membership

用户已从聊天室中移除(直接成员)。

google.workspace.chat.membership.v1.deleted

space.membership

用户的聊天室已读状态已更新。

google.workspace.chat.spaceReadState.v1.updated

spaceReadState

用户的会话已读状态已更新。

google.workspace.chat.threadReadState.v1.updated

threadReadState

客户订阅 开发者预览版)  
您的 Google Workspace 组织内的任何聊天室、消息、回应、成员资格或用户已读状态发生了事件。

支持为聊天室和用户订阅列出的所有事件类型。

取决于事件类型(例如 spacespace.messagespace.membershipspaceReadState)。

批量事件类型(仅输出)

除了接收您订阅的事件类型之外,您的 Chat 应用还可能会接收批量事件。批量事件是指在短时间内发生的多个相同类型的事件。批量事件的载荷包含所有已更改资源的列表。

例如,如果用户同时向聊天室添加 20 位用户,您的 Chat 应用可能会收到批量事件 (google.workspace.chat.membership.v1.batchCreated)。事件载荷包含用户向聊天室添加成员时创建的所有新 Membership 资源的列表。

对于您订阅的任何事件类型,您都会收到批量事件,因此在创建订阅时无需指定批量事件。例如,如果您订阅了新回应 (google.workspace.chat.reaction.v1.created),系统会自动将您的 Chat 应用配置为接收批量回应事件 (google.workspace.chat.reaction.v1.batchCreated)。

下表显示了订阅可能发生的批量事件:

批量事件类型 格式
发布了多条消息。

google.workspace.chat.message.v1.batchCreated

更新了多条消息。

google.workspace.chat.message.v1.batchUpdated

删除了多条消息。

google.workspace.chat.message.v1.batchDeleted

创建了多个回应。

google.workspace.chat.reaction.v1.batchCreated

删除了多个回应。

google.workspace.chat.reaction.v1.batchDeleted

向订阅的聊天室添加了多个成员,或订阅的用户已添加到多个聊天室。

google.workspace.chat.membership.v1.batchCreated

订阅的聊天室或订阅用户的多个成员资格已更新。

google.workspace.chat.membership.v1.batchUpdated

从订阅的聊天室中移除了多个成员,或订阅的用户已从多个聊天室中移除。

google.workspace.chat.membership.v1.batchDeleted

聊天室有多个更新。

google.workspace.chat.space.v1.batchUpdated

订阅用户的多个聊天室已读状态已更新。

google.workspace.chat.spaceReadState.v1.batchUpdated

订阅用户的多个会话已读状态已更新。

google.workspace.chat.threadReadState.v1.batchUpdated

事件数据

本部分介绍了 Chat 中事件的事件数据和示例载荷。

当您的 Google Workspace 订阅收到来自 Chat 的 data 字段包含该事件的载荷。此载荷包含有关已更改的 Google Workspace 资源的信息。例如,如果您已 订阅聊天室中的成员资格事件,则这些事件的载荷 包含有关 spaces.membership 资源的信息。

事件载荷中的资源数据

创建订阅时,您可以指定载荷是包含资源详细信息,还是仅包含资源名称。例如,如果您想接收有关 Chat 聊天室中成员的事件,请指定要在事件载荷中接收的成员资格资源的字段。

下表提供了对 Chat 聊天室 spaces/AAAABBBBBB 的订阅的 JSON 载荷示例。对于订阅接收的每个事件,载荷都会显示在事件的 data 字段中:

示例 事件类型 JSON 载荷

用户在聊天室中发布了消息“Hello world”。

google.workspace.chat.message.v1.created

包含资源数据:

{
    "message":
    {
        "name": "spaces/SPACE_ID/messages/MESSAGE_ID",
        "sender":
        {
            "name": "users/USER_ID",
            "type": "HUMAN"
        },
        "createTime": "2023-09-07T21:37:36.260127Z",
        "text": "Hello world",
        "thread":
        {
            "name": "spaces/SPACE_ID/threads/THREAD_ID"
        },
        "space":
        {
            "name": "spaces/SPACE_ID"
        },
        "argumentText": "Hello world"
    }
}
      

不包含资源数据:

{
    "message":
    {
        "name": "spaces/SPACE_ID/messages/MESSAGE_ID"
    }
}
      
用户成为聊天室管理员。

google.workspace.chat.membership.v1.updated

包含资源数据:

{
    "membership":
    {
        "name": "spaces/SPACE_ID/members/MEMBER_ID",
        "state": "JOINED",
        "member":
        {
            "name": "users/USER_ID",
            "type": "HUMAN"
        },
        "createTime": "1970-01-01T00:00:00Z",
        "role": "ROLE_MANAGER"
    }
}
      

不包含资源数据:

{
    "membership":
    {
        "name": "spaces/SPACE_ID/members/MEMBER_ID"
    }
}
      
用户将聊天室的说明更新为“Cymbal Labs 的销售团队”。 google.workspace.chat.space.v1.updated

包含资源数据:

{
    "space":
    {
        "name": "spaces/SPACE_ID",
        "displayName": "Cymbal Sales",
        "spaceThreadingState": "THREADED_MESSAGES",
        "spaceType": "SPACE",
        "spaceDetails":
        {
            "description": "Sales team for Cymbal Labs."
        },
        "spaceHistoryState": "HISTORY_ON"
    }
}
      

不包含资源数据:

{
    "space":
    {
        "name": "spaces/SPACE_ID"
    }
}
      
同时向聊天室添加了两位 Chat 用户。 google.workspace.chat.membership.v1.batchCreated

包含资源数据:

{
    "memberships": [
        {
          "membership": {
            "name": "spaces/SPACE_ID/members/MEMBER_ID",
            "state": "JOINED",
            "member":
            {
                "name": "users/USER_ID",
                "type": "HUMAN"
            },
            "createTime": "1970-01-01T00:00:00Z",
            "role": "ROLE_MEMBER"
          }
        },
        {
          "membership": {
            "name": "spaces/SPACE_ID/members/MEMBER_ID",
            "state": "JOINED",
            "member":
            {
                "name": "users/USER_ID",
                "type": "HUMAN"
            },
            "createTime": "1970-01-01T00:00:00Z",
            "role": "ROLE_MEMBER"
          }
        }
    ]
}
      

不包含资源数据:

{
    "memberships": [
        {
          "membership": {
            "name": "spaces/SPACE_ID/members/MEMBER_ID"
          }
        },
        {
          "membership": {
            "name": "spaces/SPACE_ID/members/MEMBER_ID"
          }
        }
    ]
}
      
用户使用 😊 表情符号回应了消息。 google.workspace.chat.reaction.v1.created

包含资源数据:

{
    "reaction":
    {
        "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID",
        "user":
        {
            "name": "users/USER_ID",
            "type": "HUMAN"
        },
        "emoji":
        {
            "unicode": "😊"
        }
    }
}
      

不包含资源数据:

{
    "reaction":
    {
        "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID"
    }
}
      
用户使用 😊 表情符号和 😸 表情符号回应了消息。 google.workspace.chat.reaction.v1.batchCreated

包含资源数据:

{
    "reactions": [
        {
          "reaction": {
            "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID",
            "user":
            {
                "name": "users/USER_ID",
                "type": "HUMAN"
            },
            "emoji":
            {
                "unicode": "😊"
            }
          }
        },
        {
          "reaction": {
            "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID",
            "user":
            {
                "name": "users/USER_ID",
                "type": "HUMAN"
            },
            "emoji":
            {
                "unicode": "😸"
            }
          }
        }
    ]
}
      

不包含资源数据:

{
    "reactions": [
      {
        "reaction": {
            "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID"
        },
        "reaction": {
            "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID",
        }
      }
    ]
}
      
用户访问了未读聊天室,这会更新其聊天室已读状态。 google.workspace.chat.spaceReadState.v1.updated

包含资源数据:

{
  "spaceReadState": {
    "name": "users/USER_ID/spaces/SPACE_ID/spaceReadState",
    "lastReadTime": "2026-04-14T14:03:46.431760Z"
  }
}
      

不包含资源数据:

{
  "spaceReadState": {
    "name": "users/USER_ID/spaces/SPACE_ID/spaceReadState"
  }
}
      
用户阅读了会话中的消息,这会更新其会话已读状态。 google.workspace.chat.threadReadState.v1.updated

包含资源数据:

{
  "threadReadState": {
    "name": "users/USER_ID/spaces/SPACE_ID/threads/THREAD_ID/threadReadState",
    "lastReadTime": "2026-04-14T14:03:46.431760Z"
  }
}
      

不包含资源数据:

{
  "threadReadState": {
    "name": "users/USER_ID/spaces/SPACE_ID/threads/THREAD_ID/threadReadState"
  }
}
      
用户在 Chat 中变为“可用”状态。 google.workspace.chat.availability.v1.updated

包含资源数据:

{
    "availability":
    {
        "name": "users/USER_ID/availability",
        "state": "ACTIVE"
    }
}
      

不包含资源数据:

{
    "availability":
    {
        "name": "users/USER_ID/availability",
    }
}
      
用户在 Chat 中变为“空闲”状态。 google.workspace.chat.availability.v1.updated

包含资源数据:

{
    "availability":
    {
        "name": "users/USER_ID/availability",
        "state": "IDLE",
    }
}
      

不包含资源数据:

{
    "availability":
    {
        "name": "users/USER_ID/availability",
    }
}
      
用户在 Chat 中将其可用性设置为 Away google.workspace.chat.availability.v1.updated

包含资源数据:

{
    "availability":
    {
        "name": "users/USER_ID/availability",
        "state": "AWAY",
    }
}
      

不包含资源数据:

{
    "availability":
    {
        "name": "users/USER_ID/availability",
    }
}
      
用户在 Chat 中将其可用性设置为 Do not disturb google.workspace.chat.availability.v1.updated

包含资源数据:

{
    "availability":
    {
        "name": "users/USER_ID/availability",
        "state": "DO_NOT_DISTURB",
        "doNotDisturbMetadata": {
          "expirationTime": "2026-03-24T18:36:31.337Z"
        }
    }
}
      

不包含资源数据:

{
    "availability":
    {
        "name": "users/USER_ID/availability",
    }
}
      
用户在 Chat 中设置了自定义状态。 google.workspace.chat.availability.v1.updated

包含资源数据:

{
    "availability":
    {
        "name": "users/USER_ID/availability",
        "state": "ACTIVE",
        "customStatus": {
          "text": "Be right back",
          "emoji": {
            "unicode": "👟"
          },
          "expireTime": "2026-03-24T18:38:05.583655Z"
        }
    }
}
      

不包含资源数据:

{
    "availability":
    {
        "name": "users/USER_ID/availability",
    }
}
      

限制和传送行为

一般限制

  • 如需接收成员资格事件,用户或 Chat 应用必须是聊天室的直接成员。如果用户或 Chat 应用是通过 Google 群组间接添加到聊天室、 在聊天室中更新或从聊天室中移除,订阅不会 接收这些成员资格事件。如需了解 Google 群组成员资格的工作原理,请参阅 向聊天室添加 Google 群组

用户订阅

  • 对于用户订阅,有关直接消息或未命名群聊中的新成员的事件 (google.workspace.chat.membership.v1.created), 仅在发布第一条消息后触发。

客户订阅 ( 开发者预览版)

对于客户订阅,存在以下限制:

  • Google Workspace 组织必须至少拥有一个 Enterprise SKU 许可。请注意,在开发者预览版试用计划阶段,此要求不会严格执行,但将来会执行(另行公布)。
  • 对于给定的 Google Workspace 组织,Chat 应用只能创建一个客户订阅。一个 Google Workspace 组织最多可以拥有五个客户订阅(由不同的 Chat 应用创建)。

对于客户订阅,事件传送遵循以下一般规则:

  • 聊天室事件:仅当事件发生在由您的 Google Workspace 组织管理的聊天室中时传送。
  • 用户事件:仅当事件发生在属于您的 Google Workspace 组织的用户身上时传送。

这些规则的唯一例外情况是成员资格事件 。您的订阅可以接收来自您的组织管理的聊天室和外部组织管理的聊天室的成员资格事件,但传送方式取决于哪个组织管理聊天室:

由您的 Google Workspace 组织管理的聊天室

如果 Google Workspace 组织管理的聊天室中发生了成员资格变更,则会作为聊天室事件 传送。

聊天室事件的资源名称采用以下格式:

spaces/{spaceId}/spaceEvents/{spaceEventId}

由外部组织管理的聊天室

如果由您的 Google Workspace 组织管理的用户在由外部组织管理的聊天室(例如外部命名聊天室或外部用户创建的私信)中的成员资格发生变更,您的订阅会将此事件作为用户事件 接收。

用户事件的资源名称采用以下格式:

users/{userId}/userEvents/{userEventId}