Google Chat
集成版本:2.0
产品权限
创建服务账号
- 在 Google Cloud 控制台中,选择现有 Google Cloud 项目或创建新项目。请注意,所选 Google Cloud 项目应属于 Google Cloud中的组织。
- 点击 ☰ 菜单,然后选择 API 和服务 > 凭据 菜单项。
- 点击页面顶部的 + 创建凭据 > 服务账号。
- 输入要在控制台中显示的服务账号名称。
- 可选:输入服务账号的说明。
- 依次点击创建、继续和完成,以完成服务账号的创建过程。
创建服务账号凭据
- 创建服务账号后,您将被重定向到可用于 Google Cloud 项目的凭据列表。在服务账号部分下,点击您新创建的服务账号。此账号将命名为:service-account-name@project-name-XXXXXX.iam.gserviceaccount.com。
- 点击添加密钥 > 创建新密钥。
- 保持 JSON 处于选中状态,然后点击创建。
这会开始下载凭据文件,您需要使用该文件以该服务账号的身份访问 API。
设置新的 Apps 脚本项目
- 前往 Google Apps 脚本。
- 创建新的 Apps 脚本项目。
如需执行集成功能,请将以下代码添加到新创建的项目中:
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), }); }
打开从Google Cloud 控制台下载的服务账号凭据文件。
复制 private_key 值(以 -----BEGIN PRIVATE KEY----- 开头的值),并将其粘贴到 Apps 脚本项目中的 SERVICE_ACCOUNT_PRIVATE_KEY 中。
从凭据文件中复制 client_email 值,然后将其粘贴到 Apps 脚本项目中的 SERVICE_ACCOUNT_EMAIL。
将 Apps 脚本项目与您创建的 Google Cloud 项目相关联。
返回 Google Cloud 控制台,然后依次选择 ☰ > IAM 和管理 > 设置菜单项。
复制此页面上定义的项目编号。
在您的 Apps 脚本项目中,依次选择项目 设置 > Google Cloud 项目菜单项,然后将项目编号粘贴到“在此处输入项目编号”对话框中。
点击设置项目。
启用 Google Chat API
- 前往 ☰ > API 和服务,然后选择库。
- 搜索 Google Chat API,然后点击唯一的结果。
- 点击启用。
这会为您的项目启用该 API。
部署聊天机器人
- 在 Apps 脚本界面中,依次前往部署 > 新部署。
- 为新的部署类型选择 Add On。
- 输入部署名称和说明,然后点击保存。
- 保存完成后,点击刚刚创建的部署旁边的获取 ID,然后复制部署 ID 值。
配置 Google Chat 机器人:
- 在 Google Cloud 控制台中,依次前往 ☰ > API 和服务 > 信息中心。
- 在已启用的 API 列表中,选择 Google Chat API。
- 点击管理以打开 Google Chat API 页面。
在打开的页面上,选择配置标签页,然后设置您的聊天机器人配置:
- 在应用名称字段中,输入“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 专业人士那里获得解答。