Google Chat

集成版本:2.0

产品权限

创建服务账号

  1. 在 Google Cloud 控制台中,选择现有 Google Cloud 项目或创建新项目。请注意,所选 Google Cloud 项目应属于 Google Cloud中的组织。
  2. 点击 ☰ 菜单,然后选择 API 和服务 > 凭据 菜单项。
  3. 点击页面顶部的 + 创建凭据 > 服务账号
  4. 输入要在控制台中显示的服务账号名称。
  5. 可选:输入服务账号的说明。
  6. 依次点击创建继续完成,以完成服务账号的创建过程。

创建服务账号凭据

  1. 创建服务账号后,您将被重定向到可用于 Google Cloud 项目的凭据列表。在服务账号部分下,点击您新创建的服务账号。此账号将命名为:service-account-name@project-name-XXXXXX.iam.gserviceaccount.com
  2. 点击添加密钥 > 创建新密钥
  3. 保持 JSON 处于选中状态,然后点击创建

这会开始下载凭据文件,您需要使用该文件以该服务账号的身份访问 API。

设置新的 Apps 脚本项目

  1. 前往 Google Apps 脚本。
  2. 创建新的 Apps 脚本项目。
  3. 如需执行集成功能,请将以下代码添加到新创建的项目中:

    var SCOPE = 'https://www.googleapis.com/auth/chat.bot';
    // The values below are copied from the JSON file downloaded upon
    // service account creation.
    // For SERVICE_ACCOUNT_PRIVATE_KEY, remember to include the BEGIN and END lines of the private key
    var SERVICE_ACCOUNT_PRIVATE_KEY = '...';
    var SERVICE_ACCOUNT_EMAIL = 'service-account@project-id.iam.gserviceaccount.com';
    
    // Posts a message into the given space ID via the API, using
    // service account authentication.
    function postMessage(spaceId, message) {
      var service = OAuth2.createService('chat')
          .setTokenUrl('https://accounts.google.com/o/oauth2/token')
          .setPrivateKey(SERVICE_ACCOUNT_PRIVATE_KEY)
          .setClientId(SERVICE_ACCOUNT_EMAIL)
          .setPropertyStore(PropertiesService.getUserProperties())
          .setScope(SCOPE);
      if (!service.hasAccess()) {
        Logger.log('Authentication error: %s', service.getLastError());
        return;
      }
      var url = 'https://chat.googleapis.com/v1/' + spaceId + '/messages';
      UrlFetchApp.fetch(url, {
        method: 'post',
        headers: { 'Authorization': 'Bearer ' + service.getAccessToken() },
        contentType: 'application/json',
        payload: JSON.stringify(message),
      });
    }
    
  4. 打开从Google Cloud 控制台下载的服务账号凭据文件。

  5. 复制 private_key 值(以 -----BEGIN PRIVATE KEY----- 开头的值),并将其粘贴到 Apps 脚本项目中的 SERVICE_ACCOUNT_PRIVATE_KEY 中。

  6. 从凭据文件中复制 client_email 值,然后将其粘贴到 Apps 脚本项目中的 SERVICE_ACCOUNT_EMAIL。

  7. 将 Apps 脚本项目与您创建的 Google Cloud 项目相关联。

  8. 返回 Google Cloud 控制台,然后依次选择 ☰ > IAM 和管理 > 设置菜单项。

  9. 复制此页面上定义的项目编号。

  10. 在您的 Apps 脚本项目中,依次选择项目 设置 > Google Cloud 项目菜单项,然后将项目编号粘贴到“在此处输入项目编号”对话框中。

  11. 点击设置项目

启用 Google Chat API

  1. 前往 ☰ > API 和服务,然后选择
  2. 搜索 Google Chat API,然后点击唯一的结果。
  3. 点击启用

这会为您的项目启用该 API。

部署聊天机器人

  1. 在 Apps 脚本界面中,依次前往部署 > 新部署
  2. 为新的部署类型选择 Add On
  3. 输入部署名称和说明,然后点击保存
  4. 保存完成后,点击刚刚创建的部署旁边的获取 ID,然后复制部署 ID 值。

配置 Google Chat 机器人

  1. 在 Google Cloud 控制台中,依次前往 ☰ > API 和服务 > 信息中心
  2. 在已启用的 API 列表中,选择 Google Chat API
  3. 点击管理以打开 Google Chat API 页面。
  4. 在打开的页面上,选择配置标签页,然后设置您的聊天机器人配置:

    • 应用名称字段中,输入“Google Security Operations Chat App”。
    • 头像网址字段中,输入 https://developers.google.com/chat/images/chat-product-icon.png。
    • 说明字段中,输入“Google SecOps Chat App that can be used to send messages from Google SecOps to a Google Chat Spaces”(可用于将消息从 Google SecOps 发送到 Google Chat 聊天室的 Google SecOps Chat 应用)。
    • 功能部分,选择应用可在包含多位用户的聊天室中工作
    • 连接设置部分中,选择 Apps 脚本项目,然后粘贴从部署机器人流程中获得的部署 ID。
    • 权限部分,选择您网域中的特定人员和群组,然后指定哪些人应能够与聊天机器人互动。
    • 点击保存。应用配置已完成。

由于 Google Chat 应用无法创建聊天室(发起对话),因此需要将 Google SecOps Chat 应用添加到它应向其发送消息的聊天室。

配置集成后,可以使用“列出聊天室”操作来获取 Google SecOps 应用有权访问(可以向其发送消息)的聊天室。

如果“列出聊天室”操作未显示任何可用的聊天室,则表示您的应用将无法在任何聊天室中发送消息。请返回上文中的详细说明,确保您仔细按照每个步骤操作

在 Google SecOps 中配置 Google Chat 集成

有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成

集成参数

使用以下参数配置集成:

参数显示名称 类型 默认值 是否为必需属性 说明
API 根网址 字符串 https://chat.googleapis.com/ 集成用于连接到 Google Chat 服务的 API 根网址。
服务账号 密码 不适用 聊天机器人用于与 Google Chat 服务交互的服务账号 JSON 文件内容。
验证 SSL 复选框 勾选 如果已启用,请验证与 Google Chat 服务的连接所用的 SSL 证书是否有效。

操作

Ping

说明

使用 Google Security Operations Marketplace 标签页中集成配置页面上提供的参数测试与 Google Chat 的连接。

运行于

此操作不会在实体上运行,也没有强制性输入参数。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

如果成功:“已使用提供的连接参数成功连接到 Google Chat 服务!”

操作应失败并停止 playbook 执行

如果报告了严重错误(例如凭据错误或连接丢失):“无法连接到 Google Chat 服务!错误为 {0}".format(exception.stacktrace)"

常规

列出聊天室

说明

列出当前配置的 Google Chat 聊天机器人已添加到哪些聊天室。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
过滤键 DDL

选择一项

可能的值:

  • 名称
  • 显示名称
  • 类型
指定需要用于过滤 Google Chat 聊天室的键。
过滤逻辑 DDL

未指定

可能的值:

  • 未指定
  • 等于
  • 包含
指定应应用哪些过滤条件逻辑。过滤逻辑基于“过滤键”参数中提供的值运行。
过滤条件值 字符串 不适用

指定应在过滤条件中使用什么值。

如果选择“等于”,操作会尝试在结果中查找完全匹配项。

如果选择“包含”,操作会尝试查找包含指定子字符串的结果。

如果此参数中未提供任何内容,则不会应用过滤条件。过滤逻辑基于“过滤键”参数中提供的值运行。

要返回的记录数上限 整数 50

指定要返回的记录数。

如果未提供任何内容,则操作会返回 50 条记录。

包含用户会员资格 复选框 尚未核查 如果启用,系统会将用户会员资格信息添加到操作“支持请求墙”表格和 JSON 结果中。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

如果数据可用 (is_success=true):“Successfully found added spaces for the provided criteria in Google Chat.”

如果数据不可用 (is_success=false):“未在 Google Chat 中找到符合所提供条件的聊天室”

如果“过滤值”参数没有值(is_success=true)

“未应用过滤条件,因为参数‘过滤条件值’的值为空。”

操作应失败并停止 playbook 执行

如果“过滤键”形参设置为“选择一个”,且“过滤逻辑”形参设置为“等于”或“包含”

“执行操作‘列出聊天室’时出错。原因:您需要从“过滤键”参数中选择一个字段。

如果为“要返回的最大记录数”参数提供的值无效

“执行操作‘列出聊天室’时出错。原因:为“要返回的最大记录数”提供的值无效。应提供正数。”

如果报告了致命错误(例如凭据错误、未连接到服务器、其他错误)

“执行操作‘列出聊天室’时出错。原因:{0}''.format(error.Stacktrace)

常规
“案例墙”表格

表格名称:添加了“可用聊天室”机器人的聊天室表格列:{fields}

注意:如果选中“Include User Memberships”(包含用户成员资格)复选框,系统会添加其他列,其中包含聊天室成员的显示名称。

常规

发送消息

说明

向添加了 Google SecOps 应用的 Google Chat 聊天室发送消息。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
聊天室名称 字符串 不适用

指定要向哪个聊天室发送消息。

空间名称示例:AAAAdaTsel0

消息文字 字符串 不适用 指定要发送的消息的文本。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

如果消息发送成功 (is_success=true):“Message was sent successfully.”(消息已成功发送。)

操作应失败并停止 playbook 执行

如果报告了严重错误(例如无连接或凭据错误):“执行操作‘发送消息’时出错。原因:{0}''.format(error.Stacktrace)

常规

发送高级消息

说明

根据提供的消息 JSON 载荷向 Google Chat 聊天室发送高级消息。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
聊天室名称 字符串 不适用

指定要向哪个聊天室发送消息。

空间名称示例:AAAAdaTsel0

消息 JSON 载荷 字符串 {"cards":[{"sections":[{"widgets":[{"image":{"imageUrl":"https://..."}},{"buttons":[{"textButton":{"text":"在 Google 地图中打开","onClick":{"openLink":{"url":"https://..."}}}}]}]}]}]}

指定要随消息一起发送的 JSON 载荷。

如需查看消息载荷的示例,请参阅这篇文章

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

如果消息发送成功 (is_success=True):“Message was sent successfully.”

操作应失败并停止 playbook 执行

如果提供的 JSON 载荷无效:“执行操作‘发送高级消息’时出错。原因:提供的消息 JSON 载荷无效。”。

如果报告了严重错误(例如无连接或凭据错误):“执行操作‘发送高级消息’时出错。原因:{0}''.format(error.Stacktrace)

常规

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。