订阅 Google Chat 活动

本页面介绍了 Google Chat 应用可以使用 Google Workspace Events API 订阅的 Google Chat 事件。

如需详细了解如何开发 Google Chat 应用,请参阅 Google Chat API 概览

支持的 Chat 目标资源

Google Workspace Events API 支持以下订阅:

  • 聊天室,表示为 space 资源
  • 用户,表示为 Cloud Identity API user 资源

支持的 Chat 事件

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

  • 聊天室中的新消息或更新后的消息
  • 新增或移除对消息的回应
  • 聊天室中的新、更新或已移除成员
  • 对您订阅的聊天室的更改,例如更新后的聊天室名称或说明。

用于创建订阅的事件类型

创建订阅时,您可以使用 eventTypes[] 字段指定要接收哪些类型的事件。事件类型根据 CloudEvents 规范进行格式设置,例如 google.workspace.APPLICATION.RESOURCE.VERSION.ACTION

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

下表列出了聊天室订阅和用户订阅支持的事件类型:

Event type 说明 资源数据
聊天室订阅  

google.workspace.chat.message.v1.created

新消息已发布。

space.message

google.workspace.chat.message.v1.updated

消息已更新。

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

此聊天室中有 1 位成员已更新。

space.membership

google.workspace.chat.membership.v1.deleted

此聊天室中的 1 位成员已被移除。

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.APPLICATION.RESOURCE.VERSION.ACTION 事件类型会自动将订阅设置为同时接收该事件类型的批量版本。例如,如果您订阅 google.workspace.chat.membership.v1.created,还会收到 google.workspace.chat.membership.v1.batchCreated 的事件。

下表显示了仅针对聊天室和用户订阅输出哪些事件类型:

Event type 说明 资源数据

google.workspace.chat.message.v1.batchCreated

同时发布多条消息。

spaces.messages的列表

google.workspace.chat.message.v1.batchUpdated

同时更新多条消息。

spaces.messages的列表

google.workspace.chat.reaction.v1.batchCreated

您可以同时创建多个回应。

spaces.messages.reactions的列表

google.workspace.chat.reaction.v1.batchDeleted

系统会同时删除多个回应。

spaces.messages.reactions的列表

google.workspace.chat.membership.v1.batchCreated

  • 如果target_resource聊天室:系统会在聊天室中创建多个成员。
  • 如果 target_resourceuser:用户会成为多个聊天室的成员。

spaces.memberships的列表

google.workspace.chat.membership.v1.batchUpdated

  • 如果target_resource聊天室:系统会更新聊天室中的多个成员。
  • 如果 target_resourceuser:用户的聊天室成员资格有多项更新。

spaces.memberships的列表

google.workspace.chat.membership.v1.batchDeleted

  • 如果target_resource聊天室:系统会移除聊天室中的多个成员。
  • 如果 target_resource用户:系统会将用户从多个聊天室中移除。

spaces.memberships的列表

google.workspace.chat.space.v1.batchUpdated

聊天室有多项更新。

spaces的列表

事件数据

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

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

事件载荷中的资源数据

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

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

示例 Event type JSON 载荷

某用户在聊天室中发布了一条内容为“Hello world”的消息。

google.workspace.chat.message.v1.created

包含资源数据
{
    "message":
    {
        "name": "spaces/AAAABBBBBB/messages/CCCCCCCCC.DDDDDDDDD",
        "sender":
        {
            "name": "users/1234567890987654321",
            "type": "HUMAN"
        },
        "createTime": "2023-09-07T21:37:36.260127Z",
        "text": "Hello world",
        "thread":
        {
            "name": "spaces/AAAABBBBBB/threads/EEEEEEEEEEEE"
        },
        "space":
        {
            "name": "spaces/AAAABBBBBB"
        },
        "argumentText": "Hello world"
    }
}
      
不包括资源数据
{
    "message":
    {
        "name": "spaces/AAAABBBBBB/messages/CCCCCCCCC.DDDDDDDDD"
    }
}
      
用户成为聊天室管理员。

google.workspace.chat.membership.v1.updated

包含资源数据
{
    "membership":
    {
        "name": "spaces/AAAABBBBBB/members/1234567890987654321",
        "state": "JOINED",
        "member":
        {
            "name": "users/1234567890987654321",
            "type": "HUMAN"
        },
        "createTime": "1970-01-01T00:00:00Z",
        "role": "ROLE_MANAGER"
    }
}
      
不包括资源数据
{
    "membership":
    {
        "name": "spaces/AAAABBBBBB/members/1234567890987654321"
    }
}
      
一位用户将聊天室说明更新为“Cymbal Labs 销售团队”。 google.workspace.chat.space.v1.updated
包含资源数据
{
    "space":
    {
        "name": "spaces/AAAABBBBBB",
        "displayName": "Cymbal Sales",
        "spaceThreadingState": "THREADED_MESSAGES",
        "spaceType": "SPACE",
        "spaceDetails":
        {
            "description": "Sales team for Cymbal Labs."
        },
        "spaceHistoryState": "HISTORY_ON"
    }
}
      
不包括资源数据
{
    "space":
    {
        "name": "spaces/AAAABBBBBB"
    }
}
      
有两位 Chat 用户被同时添加到聊天室中。 google.workspace.chat.membership.v1.batchCreated
包含资源数据
{
    "memberships": [
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/1234567890987654321",
            "state": "JOINED",
            "member":
            {
                "name": "users/1234567890987654321",
                "type": "HUMAN"
            },
            "createTime": "1970-01-01T00:00:00Z",
            "role": "ROLE_MEMBER"
          }
        },
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/987654321234567890",
            "state": "JOINED",
            "member":
            {
                "name": "users/987654321234567890",
                "type": "HUMAN"
            },
            "createTime": "1970-01-01T00:00:00Z",
            "role": "ROLE_MEMBER"
          }
        }
    ]
}
      
不包括资源数据
{
    "memberships": [
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/1234567890987654321"
          }
        },
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/98765432123456789019"
          }
        }
    ]
}
      
用户使用 😊? 表情符号回应了消息。 google.workspace.chat.reaction.v1.created
包含资源数据
{
    "reaction":
    {
        "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222",
        "user":
        {
            "name": "users/1234567890987654321",
            "type": "HUMAN"
        },
        "emoji":
        {
            "unicode": "😊"
        }
    }
}
      
省略资源数据
{
    "reaction":
    {
        "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222"
    }
}
      
用户使用 😊? 表情符号和 😸? 表情符号来回应消息。 google.workspace.chat.reaction.v1.batchCreated
包含资源数据
{
    "reactions": [
        {
          "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222",
            "user":
            {
                "name": "users/1234567890987654321",
                "type": "HUMAN"
            },
            "emoji":
            {
                "unicode": "😊"
            }
          }
        },
        {
          "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/3333333333333333.444444444444444",
            "user":
            {
                "name": "users/98765431234564321",
                "type": "HUMAN"
            },
            "emoji":
            {
                "unicode": "😸"
            }
          }
        }
    ]
}
      
省略资源数据
{
    "reactions": [
      {
        "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222"
        },
        "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/3333333333333333.444444444444444",
        }
      }
    ]
}