Microsoft Teams

本文档介绍了如何将 Microsoft Teams 与 Google Security Operations 集成。

使用场景

Microsoft Teams 集成使用 Google SecOps 功能来支持以下用例:

  • 自动进行突发事件沟通:检测到可疑活动时,向特定 Teams 频道发送实时提醒和通知。

  • 启用交互式响应:使用 playbook 直接在 Teams 中向用户或分析师提问,并根据他们的回答自动执行操作。

  • 促进突发事件协作:自动为高优先级突发事件创建专用频道或群聊,并管理成员访问权限。

  • 验证用户活动:向用户发送私信,确认登录或文件访问等操作,以便根据用户的反馈更新支持请求详情。

  • 丰富用户背景信息:检索用户个人资料和团队成员资格信息,以便在调查期间识别角色和权限。

配置 Microsoft Teams 集成以与 Google Security Operations 搭配使用

  1. 确保用于集成配置的账号已启用 Microsoft Teams 许可。为此,请前往 Microsoft 管理中心,查看所需用户应用了哪种许可。

    Microsoft 管理中心 - 应用于 Microsoft Teams 用户的许可

  2. 确认所需用户拥有许可后,您就可以开始为 Microsoft Teams 创建应用。首先,您需要依次前往 Azure Active Directory > 应用注册。

    Microsoft 管理中心 -“应用注册”标签页

  3. 点击新注册,然后提供:

    • Teams 应用的名称
    • 重定向 URI:“https://localhost”

    请务必将重定向 URI 保存在某个位置,因为稍后在流程中会用到它。

  4. 前往概览页面,然后复制:

    • 应用(客户端)ID:对应于集成配置中的“客户端 ID”参数
    • 目录(租户)ID:对应于集成配置中的“租户”参数

    Microsoft 管理中心 - Microsoft Teams 概览页面

  5. 添加必要的权限。所有应用的权限均为“委托”,应如下所示:

    添加必要的应用权限

    请务必授予管理员同意权限。

  6. 前往证书和密钥标签页,然后添加新的客户端密钥。生成客户端密钥后,您需要从值列中复制数据。集成配置的“客户端密钥”参数需要此值。

  7. 前往 Google SecOps SOAR 配置页面,然后输入以下参数:

    • 客户端 ID
    • 客户端密钥
    • 重定向 URI
    • 租户

    为“刷新令牌”参数输入占位符字符串,然后保存配置。

    初始 Microsoft Teams 集成配置

  8. 前往支持请求标签页,然后打开任意支持请求。如果您没有案例,可以模拟一个。

    案例模拟

  9. 在支持请求中选择一项提醒,然后点击手动操作。

    “提醒详细信息”窗格 -“手动操作”按钮

  10. 前往 Microsoft Teams 集成,然后运行“获取授权”操作。此操作会生成一个用于向应用进行身份验证的链接。

    “获取授权”操作

  11. 如需获取结果,请前往“支持请求墙”标签页,然后点击查看结果。

    “查看结果”按钮

    您应该会看到类似如下所示的输出:

    查看结果
output

  12. 点击操作提供的链接。确保您已使用此集成所用的用户登录。在浏览器中打开该链接后,您会发现它将您重定向到了另一个页面。此页面应如下所示: https://localhost/?code=0.ATwAylKP1BpbCEeO0…&session_state=a149d18b-4131-4649-8956-2f0d09a98743# Copy everything till "&session_state",例如: https://localhost/?code=0.ATwAylKP1BpbCEeO0…

  13. 运行“生成令牌”操作。

    生成令牌
操作

  14. 前往案例墙标签页查看结果。在输出消息中,您会找到一个令牌。复制此令牌并将其粘贴到“刷新令牌”参数中。

    “获取授权”操作 - 刷新令牌值

  15. 如果一切操作正确,您会看到一个绿色对勾标记。

    已完成 Microsoft Teams 集成配置

集成参数

使用以下参数配置集成:

参数名称 类型 默认 为必填项 说明
实例名称 字符串 不适用 否 您要为其配置集成的实例的名称。
说明 字符串 不适用 否 实例的说明。
客户端 ID 字符串 不适用 是 不适用
密钥 Id 密码 不适用 是 不适用
租户 字符串 不适用 是 不适用
刷新令牌 密码 不适用 是 不适用
重定向网址 字符串 http://localhost 否 指定将用于对集成进行身份验证的重定向网址。默认值为 http://localhost。此参数会影响“获取授权”和“生成令牌”操作。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。

如有需要,您可以在后续阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。

操作

如需详细了解操作,请参阅 在工作桌上响应待处理的操作和在案例中运行手动操作。

等待回复

操作会等待指定消息中的预期回复。

此操作以异步方式运行。根据需要在 Google SecOps IDE 中调整操作的脚本超时值。

参数

参数显示名称 类型 默认值 为必填项 说明
团队名称 字符串 不适用 是 指定团队的名称。
频道名称 字符串 不适用 是 指定频道的名称。
邮件 ID 字符串 不适用 是 指定预计会收到回复的消息的 ID。
预期回复 字符串 不适用 是

指定预期回复的文本。

如果未提供此值,则操作会在收到任何回复时停止执行。

等待方法 DDL

查看首次回复

可能的值:

  • 查看首次回复
  • 等待至超时
否

指定操作的等待方法。

如果选择检查第一个回复,则该操作会返回第一个回复或将其与预期值进行比较。

如果选择等待超时,则操作会等待预期值,直到超时,或者返回在超时期间发送的所有消息。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False

生成令牌

使用在上一步中收到的授权网址获取访问令牌。

参数

参数显示名称 类型 默认值 为必填项 说明
授权网址 字符串 不适用 是 使用在上一步中收到的授权网址请求访问令牌。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_connected True/False is_connected:False

获取授权

运行该操作并浏览到收到的网址。

参数

参数显示名称 类型 默认值 为必填项 说明
重定向网址 字符串 不适用 是 使用在上一步中收到的授权网址请求访问令牌。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_connected True/False is_connected:false

获取团队 ID

检索特定团队的属性。

参数

参数显示名称 类型 默认值 为必填项 说明
团队名称 字符串 不适用 是 团队名称。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False

获取用户详细信息

检索特定用户的属性和关系。

参数

参数显示名称 类型 默认值 为必填项 说明
用户名 字符串 不适用 是 Microsoft Teams 用户名

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "isResourceAccount": null,
    "mailNickname": "username.co#EXT#",
    "surname": null,
    "deletedDateTime": null,
    "assignedLicenses": [{
        "skuId": "16ddbbfc-09ea-4de2-b1d7-312db6112d70",
        "disabledPlans": []
    }],
    "userPrincipalName": "username.co#EXT#@tenant.onmicrosoft.com",
    "faxNumber": null,
    "consentProvidedForMinor": null,
    "userType": "Member",
    "officeLocation": null,
    "usageLocation": "IL",
    "city": null,
    "employeeId": null,
    "onPremisesImmutableId": null,
    "preferredLanguage": null,
    "streetAddress": null,
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users/$entity",
    "id": "5e457a85-a705-4b65-8a9f-3a3d2ad7715c",
    "state": null,
    "businessPhones": [],
    "postalCode": null,
    "mail": "john_doe@example.com",
    "onPremisesSamAccountName": null,
    "onPremisesLastSyncDateTime": null,
    "accountEnabled": true,
    "mobilePhone": null,
    "refreshTokensValidFromDateTime": "2018-11-12T13:28:53Z",
    "companyName": null,
    "deviceKeys": [],
    "jobTitle": null,
    "preferredDataLocation": null,
    "showInAddressList": false,
    "department": null,
    "proxyAddresses": ["SMTP:mail"],
    "externalUserStateChangeDateTime": "2018-11-12T13:29:41Z",
    "onPremisesProvisioningErrors": [],
    "legalAgeGroupClassification": null,
    "onPremisesSyncEnabled": null,
    "onPremisesExtensionAttributes": {
        "extensionAttribute4": null,
        "extensionAttribute5": null,
        "extensionAttribute6": null,
        "extensionAttribute7": null,
        "extensionAttribute12": null,
        "extensionAttribute1": null,
        "extensionAttribute2": null,
        "extensionAttribute3": null,
        "extensionAttribute10": null,
        "extensionAttribute11": null,
        "extensionAttribute8": null,
        "extensionAttribute9": null,
        "extensionAttribute14": null,
        "extensionAttribute15": null,
        "extensionAttribute13": null
    },
    "assignedPlans": [{
        "capabilityStatus": "Enabled",
        "servicePlanId":
        "617d9209-3b90-4879-96e6-838c42b2701d",
        "service": "MicrosoftCommunicationsOnline",
        "assignedDateTime": "2018-11-12T13:28:57Z"
    }, {
        "capabilityStatus": "Enabled",
        "servicePlanId": "902b47e5-dcb2-4fdc-858b-c63a90a2bdb9",
        "service": "SharePoint",
        "assignedDateTime": "2018-11-12T13:28:57Z"
    }, {
        "capabilityStatus": "Enabled",
        "servicePlanId": "4fa4026d-ce74-4962-a151-8e96d57ea8e4",
        "service": "TeamspaceAPI",
        "assignedDateTime": "2018-11-12T13:28:57Z"
    }],
    "passwordProfile": null,
    "passwordPolicies": null,
    "externalUserState": "Accepted",
    "otherMails": ["mail"],
    "displayName": "name",
    "imAddresses": [],
    "provisionedPlans": [{
        "capabilityStatus": "Enabled",
        "provisioningStatus": "Success",
        "service": "SharePoint"
    }],
    "createdDateTime": "2018-11-12T13:28:53Z",
    "country": null,
    "onPremisesDistinguishedName": null,
    "onPremisesSecurityIdentifier": null,
    "onPremisesDomainName": null,
    "onPremisesUserPrincipalName": null,
    "givenName": null,
    "ageGroup": null
}

列出频道

获取特定团队中存在的所有频道的详细信息。

参数

参数显示名称 类型 默认值 为必填项 说明
团队名称 字符串 不适用 是 团队名称。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
all_channels_details 不适用 不适用

列出团队

检索所有团队的详细信息。

参数

此操作没有输入参数。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
teams 不适用 不适用
JSON 结果
[
    {
        "mailNickname": "Test",
        "classification": null,
        "deletedDateTime": null,
        "renewedDateTime": "2018-11-12T15:03:50Z",
        "onPremisesProvisioningErrors": [],
        "membershipRuleProcessingState": null,
        "preferredLanguage": null,
        "expirationDateTime": null,
        "id": "43b559d5-f63d-47dd-9e6c-b3470b6446ee",
        "theme": null,
        "preferredDataLocation": null,
        "mail": "john_doe@example.com",
        "membershipRule": null,
        "onPremisesLastSyncDateTime": null,
        "description": "Test",
        "securityEnabled": false,
        "proxyAddresses": ["SPO:SPO_eaf75319-582a-46cf-8812-9e787d757c4e@SPO_a4a936ec-735f-488a-bfc0-7665f87aab47", "SMTP:Test@tenant.onmicrosoft.com"],
        "visibility": "Public",
        "resourceProvisioningOptions": ["Team"],
        "displayName": "Test",
        "groupTypes": ["Unified"],
        "onPremisesSyncEnabled": null,
        "createdDateTime": "2018-11-12T15:03:50Z",
        "resourceBehaviorOptions": ["HideGroupInOutlook", "SubscribeMembersToCalendarEventsDisabled", "WelcomeEmailDisabled"],
        "onPremisesSecurityIdentifier": null,
        "mailEnabled": true
    }, {
        "mailNickname": "user",
        "classification": null,
        "deletedDateTime": null,
        "renewedDateTime": "2018-11-28T13:46:50Z",
        "onPremisesProvisioningErrors": [],
        "membershipRuleProcessingState": null,
        "preferredLanguage": null,
        "expirationDateTime": null,
        "id": "67149c85-7139-4062-bfae-059d18ee7e5d",
        "theme": null,
        "preferredDataLocation": null,
        "mail": "john_doe@example.com",
        "membershipRule": null,
        "onPremisesLastSyncDateTime": null,
        "description": "user",
        "securityEnabled": false, "proxyAddresses": ["SPO:SPO_781470a6-2db5-454d-a8e3-71752b3b829e@SPO_a4a936ec-735f-488a-bfc0-7665f87aab47", "SMTP:user@tenant.onmicrosoft.com"],
        "visibility": "Public",
        "resourceProvisioningOptions": ["Team"],
        "displayName": "user",
        "groupTypes": ["Unified"],
        "onPremisesSyncEnabled": null,
        "createdDateTime": "2018-11-28T13:46:50Z",
        "resourceBehaviorOptions": ["HideGroupInOutlook", "SubscribeMembersToCalendarEventsDisabled", "WelcomeEmailDisabled"],
        "onPremisesSecurityIdentifier": null,
        "mailEnabled": true
    }

列出用户

获取所有用户的详细信息。

参数

此操作没有输入参数。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
用户 不适用 不适用
JSON 结果
[{
    "mailNickname": "Test",
    "classification": null,
    "deletedDateTime": null,
    "renewedDateTime": "2018-11-12T15:03:50Z",
    "onPremisesProvisioningErrors": [],
    "membershipRuleProcessingState": null,
    "preferredLanguage": null,
    "expirationDateTime": null,
    "id": "43b559d5-f63d-47dd-9e6c-b3470b6446ee",
    "theme": null,
    "preferredDataLocation": null,
    "mail": "john_doe@example.com",
    "membershipRule": null,
    "onPremisesLastSyncDateTime": null,
    "description": "Test",
    "securityEnabled": false,
    "proxyAddresses": ["SPO:SPO_eaf75319-582a-46cf-8812-9e787d757c4e@SPO_a4a936ec-735f-488a-bfc0-7665f87aab47", "SMTP:Test@tenant.onmicrosoft.com"],
    "visibility": "Public",
    "resourceProvisioningOptions": ["Team"],
    "displayName": "Test",
    "groupTypes": ["Unified"],
    "onPremisesSyncEnabled": null,
    "createdDateTime": "2018-11-12T15:03:50Z",
    "resourceBehaviorOptions": ["HideGroupInOutlook", "SubscribeMembersToCalendarEventsDisabled", "WelcomeEmailDisabled"],
    "onPremisesSecurityIdentifier": null,
    "mailEnabled": true
}, {
    "mailNickname": "user",
    "classification": null,
    "deletedDateTime": null,
    "renewedDateTime": "2018-11-28T13:46:50Z",
    "onPremisesProvisioningErrors": [],
    "membershipRuleProcessingState": null,
    "preferredLanguage": null,
    "expirationDateTime": null,
    "id": "67149c85-7139-4062-bfae-059d18ee7e5d",
    "theme": null,
    "preferredDataLocation": null,
    "mail": "john_doe@example.com",
    "membershipRule": null,
    "onPremisesLastSyncDateTime": null,
    "description": "user",
    "securityEnabled": false,
    "proxyAddresses": ["SPO:SPO_781470a6-2db5-454d-a8e3-71752b3b829e@SPO_a4a936ec-735f-488a-bfc0-7665f87aab47", "SMTP:user@tenant.onmicrosoft.com"],
    "visibility": "Public",
    "resourceProvisioningOptions": ["Team"],
    "displayName": "user",
    "groupTypes": ["Unified"],
    "onPremisesSyncEnabled": null,
    "createdDateTime": "2018-11-28T13:46:50Z",
    "resourceBehaviorOptions": ["HideGroupInOutlook", "SubscribeMembersToCalendarEventsDisabled", "WelcomeEmailDisabled"],
    "onPremisesSecurityIdentifier": null,
    "mailEnabled": true
}]

Ping

测试连接性。

参数

此操作没有输入参数。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_connected True/False is_connected:False

发送消息

向特定频道发送消息。

参数

参数显示名称 类型 默认值 为必填项 说明
团队名称 字符串 不适用 是 团队名称。
频道名称 字符串 不适用 是 频道名称。
消息 字符串 不适用 是 Message 的正确子类。

运行时间

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
[{
    "@odata.context":"https://graph.microsoft.com/beta/$metadata#teams('192c0699-fad2-4d02-88a2-84efd6369894')/channels('19%3Ae3acbb17a8754cae9df724f493b5342f%40thread.tacv2')/messages/$entity",
    "id":"1601372154742",
    "replyToId":null,
    "etag":"1601372154742",
    "messageType":"message",
    "createdDateTime":"2020-09-29T09:35:54.742Z",
    "lastModifiedDateTime":"2020-09-29T09:35:54.742Z",
    "lastEditedDateTime":null,
    "deletedDateTime":null,
    "subject":null,
    "summary":null,
    "chatId":null,
    "importance":"normal",
    "locale":"en-us",
    "webUrl":"https://teams.microsoft.com/l/message/19%3Ae3acbb17a8754cae9df724f493b5342f%40thread.tacv2/1601372154742?groupId=192c0699-fad2-4d02-88a2-84efd6369894&tenantId=d48f52ca-5b1a-4708-8ed0-ebb98a26a46a&createdTime=1601372154742&parentMessageId=1601372154742",
    "policyViolation":null,
    "from":{
        "application":null,
        "device":null,
        "conversation":null,
        "user":{
            "id":"b786d3cf-e97d-4511-b61c-0559e9f4da75",
            "displayName":"u05D2'u05D9u05D9u05DEu05E1 u05D1u05D5u05E0u05D3",
            "userIdentityType":"aadUser"
        }},
    "body":{
        "contentType":"text",
        "content":"Hello there"
    },
    "channelIdentity":{
        "teamId":"192c0699-fad2-4d02-88a2-84efd6369894",
        "channelId":"19:e3acbb17a8754cae9df724f493b5342f@thread.tacv2"
    },
    "attachments":[],
    "mentions":[],
    "reactions":[]
}]

发送用户消息

在 Microsoft Teams 中向用户发送聊天消息。

参数

参数显示名称 类型 默认值 为必填项 说明
用户标识符 CSV 不适用 否

指定要向其发送消息的用户标识符的逗号分隔列表。

注意:此操作会合并此参数中提供的有效实体和值,并向所有这些实体和值发送消息。

文本 字符串 不适用 是 指定消息的内容。
等待回复 复选框 勾选 是 如果启用,该操作会等待所有实体的回复。
内容类型 DDL 勾选 是 指定消息的内容类型。
用户选择 DDL

文本

可能的值:

  • 文本
  • HTML

来自实体和用户标识符

可能的值:

  • 来自实体和用户标识符
  • 来自实体
  • 来自用户标识符

指定应为用户使用的选择类型。

如果选择“From Entities & User Identifiers”(从实体和用户标识符中),该操作会在相关实体和“User Identifiers”(用户标识符)参数中提供的值中进行搜索。

如果提供了“来自实体”,则该操作仅适用于相关实体,并会忽略“用户标识符”参数中提供的值。

如果选择“来自用户标识符”,则该操作仅适用于“用户标识符”中的值,并且“用户标识符”参数将变为必填项。

运行时间

此操作将在以下实体上运行:

  • 用户名
  • 电子邮件地址

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "id": "1632820681737",
    "replyToId": null,
    "etag": "1632820681737",
    "messageType": "message",
    "createdDateTime": "2021-09-28T09:18:01.737Z",
    "lastModifiedDateTime": "2021-09-28T09:18:01.737Z",
    "lastEditedDateTime": null,
    "deletedDateTime": null,
    "subject": null,
    "summary": null,
    "chatId": "19:5af81bea-9c9f-4f9f-8745-9df1fdba8e12_b786d3cf-e97d-4511-b61c-0559e9f4da75@unq.gbl.spaces",
    "importance": "normal",
    "locale": "en-us",
    "webUrl": null,
    "channelIdentity": null,
    "policyViolation": null,
    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "b786d3cf-e97d-4511-b61c-0559e9f4da75",
            "displayName": "ג'יימס בונד",
            "userIdentityType": "aadUser"
        }
    },
    "body": {
        "contentType": "text",
        "content": "qqq"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}
案例墙
结果类型 值/说明 类型
输出消息*

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


如果报告了 201 状态代码 (is_success = true): “已成功向 Microsoft Teams 中的以下用户发送消息:{entity.identifier}。”

如果未找到与某个实体 (is_success = true) 的聊天: “Action wasn't able to send a message to the following users in Microsoft Teams: {entity.identifier}.”

如果未找到与某个实体 的所有聊天 (is_success = false):“未向 Microsoft Teams 中的指定用户发送任何消息。”

异步消息:

“正在等待以下用户的回复:{entity.identifier}。”

操作应失败并停止 playbook 执行:

如果报告了严重错误:“执行‘发送用户消息’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果超时:“执行‘发送用户消息’操作时出错。原因:消息已发送,但操作在等待以下用户回复时超时:{entity.identifier}。”请在 IDE 中增加超时时间,然后重试。注意:如果您重试,该操作将发送另一条消息。

常规

创建频道

在 Microsoft Teams 中创建频道。

参数

参数显示名称 类型 默认值 为必填项 说明
团队名称 字符串 不适用 是 指定您需要在其中创建频道的团队的名称。
频道名称 字符串 不适用 是 指定频道的唯一名称。
频道类型 DDL

标准

可能的值:

  • 标准
  • 专用
是 指定需要创建的渠道类型。标准频道可供团队的所有成员访问,而私享频道则需要将用户添加到其中。
说明 字符串 不适用 否 指定渠道的说明。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams('c084d2c7-a7e6-47a5-921b-0c32c3ab41d1')/channels/$entity",
    "id": "19:92ce922c1790450fae81f6713dbffbe3@thread.tacv2",
    "createdDateTime": "2021-11-18T11:37:39.8186647Z",
    "displayName": "Architecturea Discussion",
    "description": null,
    "isFavoriteByDefault": false,
    "email": "",
    "webUrl": "https://teams.microsoft.com/l/channel/19%3a92ce922c1790450fae81f6713dbffbe3%40thread.tacv2/Architecturea+Discussion?groupId=c084d2c7-a7e6-47a5-921b-0c32c3ab41d1&tenantId=d48f52ca-5b1a-4708-8ed0-ebb98a26a46a",
    "membershipType": "standard"
}
案例墙
结果类型 值/说明 类型
输出消息*

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


如果报告了 201 状态代码 (is_success = true):“已在 Microsoft Teams 的‘{team name}’团队中成功创建‘{channel name}’频道。”

操作应失败并停止 playbook 执行:

如果报告了严重错误:“执行‘创建频道’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果找不到团队:“执行‘创建频道’操作时出错。原因:在 Microsoft Teams 中找不到名为“{team, name}”的团队。

如果报告了 400 状态代码:“执行‘创建频道’操作时出错。原因:{innerError/message}。

常规

删除通道

在 Microsoft Teams 中删除频道。

参数

参数显示名称 类型 默认值 为必填项 说明
团队名称 字符串 不适用 是 指定您需要删除频道所在的团队的名称。
频道名称 字符串 不适用 是 指定需要删除的渠道的名称。

运行时间

此操作不会对实体执行。

操作执行结果

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

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


如果报告了 204 状态代码 (is_success = true):“已成功删除 Microsoft Teams 中‘{team name}’团队内的‘{channel name}’频道。”

如果未找到频道 (is_success = true):“Microsoft Teams 中的‘{team name}’团队中原本就不存在‘{channel name}’频道。”

操作应失败并停止 playbook 执行:

如果报告了严重错误:“执行‘删除频道’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果找不到团队:“执行‘删除频道’操作时出错。原因:在 Microsoft Teams 中找不到名为“{team, name}”的团队。

常规

将用户添加到频道

在 Microsoft Teams 中将用户添加到私有频道。

参数

参数显示名称 类型 默认值 为必填项 说明
团队名称 字符串 不适用 是 指定您要在其中搜索频道的团队的名称。
频道名称 字符串 不适用 是 指定要向其中添加用户的频道的名称。

运行时间

此操作将在以下实体上运行:

  • 用户名
  • 电子邮件地址

操作执行结果

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

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


如果报告了一个实体的 201 状态代码 (is_success = true):“已成功将以下用户从 Microsoft Teams 中的‘{team name}’团队添加到‘{Channel Name}’频道:{entity.identifier}”

如果未找到某个实体对应的用户 (is_success = true):“操作无法在 Microsoft Teams 中找到以下用户:{entity.identifier}”

如果报告了一个实体的 400 状态代码 (is_success = true):“操作无法将以下用户从 Microsoft Teams 中的‘{team name}’团队添加到‘{Channel Name}’频道:{entity.identifier}。确保用户属于“{team name}”团队。

如果所有用户都未找到 (is_success = false):“在 Microsoft Teams 中找不到任何提供的用户。”

如果所有用户都报告了 400 状态代码 (is_success = false):“操作无法将 Microsoft Teams 中‘{team name}’团队的指定用户添加到‘{Channel Name}’频道。确保用户属于“{team name}”团队。

操作应失败并停止 playbook 执行:

如果报告了严重错误:“执行‘将用户添加到频道’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果找不到团队:“执行‘将用户添加到频道’操作时出错。原因:在 Microsoft Teams 中找不到名为“{team, name}”的团队。

如果找不到频道:“执行‘将用户添加到频道’操作时出错。原因:在 Microsoft Teams 中找不到名为“{channel name}”的频道。

如果频道的“membershipType”!=“private”:“Error executing action "Add Users To Channel". 原因:名为“{channel name}”的频道不是私享频道。

常规

从频道中移除用户

在 Microsoft Teams 中将用户从私有频道中移除。

参数

参数显示名称 类型 默认值 为必填项 说明
团队名称 字符串 不适用 是 指定您要在其中搜索频道的团队的名称。
频道名称 字符串 不适用 是 指定要从中移除用户的频道的名称。

运行时间

此操作将在以下实体上运行:

  • 用户名
  • 邮箱(与邮箱正则表达式匹配的用户名)

操作执行结果

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

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


如果报告了一个实体的 201 状态代码 (is_success = true):“已成功从 Microsoft Teams 中‘{team name}’团队的‘{Channel Name}’频道中移除以下用户:{entity.identifier}”

如果用户不属于该频道 (is_success = true):“以下用户已不属于 Microsoft Teams 中‘{team name}’团队的‘{Channel Name}’频道:{entity.identifier}”

如果所有用户都不在频道中 (is_success = true):“所提供的用户都不在 Microsoft Teams 中‘{team name}’团队的‘{Channel Name}’频道中。”

操作应失败并停止 playbook 执行:

如果报告了严重错误:“执行‘从频道中移除用户’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果找不到团队:“执行‘从频道中移除用户’操作时出错。原因:在 Microsoft Teams 中找不到名为“{team, name}”的团队。

如果找不到频道:“执行‘从频道中移除用户’操作时出错。原因:在 Microsoft Teams 中找不到名为“{channel name}”的频道。

如果频道的“membershipType”!=“private”:执行“从频道中移除用户”操作时出错。原因:名为“{channel name}”的频道不是私享频道。

常规

创建对话

在 Microsoft Teams 中创建用户聊天。

参数

此操作没有输入参数。

运行时间

此操作将在以下实体上运行:

  • 用户名
  • 邮箱(与邮箱正则表达式匹配的用户名)

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#chats/$entity",
    "id": "19:b786d3cf-e97d-4511-b61c-0559e9f4da75_cb786032-1ba9-439a-b714-99286e185921@unq.gbl.spaces",
    "topic": null,
    "createdDateTime": "2021-10-13T11:24:15.696Z",
    "lastUpdatedDateTime": "2021-10-13T11:24:15.696Z",
    "chatType": "oneOnOne"
}
案例墙
结果类型 值/说明 类型
输出消息*

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

如果报告了 201 状态代码 (is_success = true):“已成功在 Microsoft Teams 中与以下用户创建聊天:{entities}”

如果未找到用户 (is_success = true):“在 Microsoft Teams 中未找到以下用户:{entities}”

如果未找到任何用户 (is_success = false):“在 Microsoft Teams 中找不到任何提供的用户:{entities}”

如果报告了一个实体的 400 状态代码 (is_success = true):“操作无法在 Microsoft Teams 中与以下用户创建聊天:{entities}”

如果所有实体都报告了 400 状态代码 (is_success = false):“Action 无法在 Microsoft Teams 中与提供的用户创建聊天。”

操作应失败并停止 playbook 执行:

如果报告了严重错误:“执行‘创建聊天’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规

列出对话

列出 Microsoft Teams 中的可用对话。

参数

参数显示名称 类型 默认值 为必填项 说明
聊天类型 DDL

全部

可能的值:

  • 全部
  • 群聊
  • 会议聊天
  • 一对一聊天
否 指定应返回哪种类型的对话。
过滤键 DDL

选择一项

可能的值:

  • 主题
  • 会员显示名称
  • 成员电子邮件地址
否 指定需要用于过滤对话的键。
过滤逻辑 DDL

未指定

可能的值:

  • 未指定
  • 等于
  • 包含
否 指定应应用哪种过滤逻辑。过滤逻辑会根据“Filter Key”参数中提供的值运行。
过滤值 字符串 不适用 否 指定应在过滤条件中使用哪个值。如果选择“等于”,操作将尝试在结果中查找完全匹配项。如果选择“包含”,操作将尝试查找包含该子字符串的结果。如果此参数中未提供任何内容,则不会应用过滤条件。过滤逻辑会根据“Filter Key”参数中提供的值运行。
返回的记录数上限 整数 50 否 指定要返回的记录数。如果未提供任何内容,操作将返回 50 条记录。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "id": "19:5af81bea-9c9f-4f9f-8745-9df1fdba8e12_b786d3cf-e97d-4511-b61c-0559e9f4da75@unq.gbl.spaces",
    "topic": null,
    "createdDateTime": "2021-04-12T08:36:52.572Z",
    "lastUpdatedDateTime": "2021-09-28T09:31:58.045Z",
    "chatType": "oneOnOne",
    "members@odata.context": "https://graph.microsoft.com/v1.0/$metadata#chats('19%3A5af81bea-9c9f-4f9f-8745-9df1fdba8e12_b786d3cf-e97d-4511-b61c-0559e9f4da75%40unq.gbl.spaces')/members",
    "members": [
        {
            "@odata.type": "#microsoft.graph.aadUserConversationMember",
            "id": "MCMjZDQ4ZjUyY2EtNWIxYS00NzA4LThlZDAtZWJiOThhMjZhNDZhIyMxOTo1YWY4MWJlYS05YzlmLTRmOWYtODc0NS05ZGYxZmRiYThlMTJfYjc4NmQzY2YtZTk3ZC00NTExLWI2MWMtMDU1OWU5ZjRkYTc1QHVucS5nYmwuc3BhY2VzIyM1YWY4MWJlYS05YzlmLTRmOWYtODc0NS05ZGYxZmRiYThlMTI=",
            "roles": [
                "Owner"
            ],
            "displayName": "yuriy",
            "visibleHistoryStartDateTime": "0001-01-01T00:00:00Z",
            "userId": "5af81bea-9c9f-4f9f-8745-9df1fdba8e12",
            "email": null,
            "tenantId": "d48f52ca-5b1a-4708-8ed0-ebb98a26a46a"
        },
        {
            "@odata.type": "#microsoft.graph.aadUserConversationMember",
            "id": "MCMjZDQ4ZjUyY2EtNWIxYS00NzA4LThlZDAtZWJiOThhMjZhNDZhIyMxOTo1YWY4MWJlYS05YzlmLTRmOWYtODc0NS05ZGYxZmRiYThlMTJfYjc4NmQzY2YtZTk3ZC00NTExLWI2MWMtMDU1OWU5ZjRkYTc1QHVucS5nYmwuc3BhY2VzIyNiNzg2ZDNjZi1lOTdkLTQ1MTEtYjYxYy0wNTU5ZTlmNGRhNzU=",
            "roles": [
                "Owner"
            ],
            "displayName": "ג'יימס בונד",
            "visibleHistoryStartDateTime": "0001-01-01T00:00:00Z",
            "userId": "b786d3cf-e97d-4511-b61c-0559e9f4da75",
            "email": "james.bond@siemplifycyarx.onmicrosoft.com",
            "tenantId": "d48f52ca-5b1a-4708-8ed0-ebb98a26a46a"
        }
    ]
}
案例墙
结果类型 值/说明 类型
输出消息*

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

如果数据可用 (is_success = true):“Successfully found chats for the provided criteria in Microsoft Teams”。

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

如果“过滤值”参数字段为空 (is_success=true):

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

操作应失败并停止 playbook 执行:

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

“执行操作‘{action name}’时出错。原因:您需要从“过滤键”参数中选择一个字段。

如果为“要返回的记录数上限”参数提供的值无效:

“执行操作‘{action name}’时出错。原因:为“要返回的记录数上限”提供的值无效:。应提供正数。

如果发生严重错误,例如凭据错误、无法连接到服务器等:

“执行操作‘{action name}’时出错。Reason: {0}''.format(error.Stacktrace)

常规
案例墙表格

表名称:Available Chats

表列:

  • ID - id
  • 类型 - chatType
  • Members - csv of members/display
  • Names Topic - topic
常规

发送聊天消息

在 Microsoft Teams 中发送聊天消息。

参数

参数显示名称 类型 默认值 为必填项 说明
Chat ID DDL 不适用 是 指定要向其发送消息的对话的 ID。
文本 字符串 不适用 是 指定消息的内容。
等待回复 复选框 勾选 是 如果启用,该操作会等待回复。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "id": "1632820681737",
    "replyToId": null,
    "etag": "1632820681737",
    "messageType": "message",
    "createdDateTime": "2021-09-28T09:18:01.737Z",
    "lastModifiedDateTime": "2021-09-28T09:18:01.737Z",
    "lastEditedDateTime": null,
    "deletedDateTime": null,
    "subject": null,
    "summary": null,
    "chatId": "19:5af81bea-9c9f-4f9f-8745-9df1fdba8e12_b786d3cf-e97d-4511-b61c-0559e9f4da75@unq.gbl.spaces",
    "importance": "normal",
    "locale": "en-us",
    "webUrl": null,
    "channelIdentity": null,
    "policyViolation": null,
    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "b786d3cf-e97d-4511-b61c-0559e9f4da75",
            "displayName": "ג'יימס בונד",
            "userIdentityType": "aadUser"
        }
    },
    "body": {
        "contentType": "text",
        "content": "qqq"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}
案例墙
结果类型 值/说明 类型
输出消息*

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

如果报告了 201 状态代码 (is_success = true):“已成功在 ID 为 {Chat ID} 的 Microsoft Teams 聊天中发送消息。”

如果回复可用 (is_success = true):“已成功在 ID 为 {Chat ID} 的 Microsoft Teams 聊天中发送消息并收到回复。”

异步消息:等待回复…

操作应失败并停止 playbook 执行:

如果报告了严重错误:“执行‘发送聊天消息’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果报告了 404 状态代码:“执行‘发送聊天消息’操作时出错。原因:在 Microsoft Teams 中找不到具有该 ID 的聊天。

如果超时:“执行‘发送聊天消息’操作时出错。”原因:消息已发送,但操作在等待回复时超时。请在 IDE 中增加超时时间,然后重试。注意:如果您重试,该操作将发送另一条消息。

常规

发送消息回复

在 Microsoft Teams 中回复频道消息。

参数

参数 类型 默认值 为必填项 说明
团队名称 字符串 不适用 是 指定要向哪个团队发送回复。
频道名称 字符串 不适用 是 指定要将回复发送到的频道。
邮件 ID 字符串 不适用 是 指定要回复的消息的 ID。
内容类型 DDL 文本 否

指定消息的内容类型。

可能的值:

  • 文本
  • HTML

文本 字符串 不适用 是 指定消息的内容。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams('192c0699-fad2-4d02-88a2-84efd6369894')/channels('19%3A4649fcf41fa5417f9aa78a5840bea442%40thread.tacv2')/messages('1686652339690')/replies/$entity",
"id": "1686653341151",
"replyToId": "1686652339690",
"etag": "1686653341151",
"messageType": "message",
"createdDateTime": "2023-06-13T10:49:01.151Z",
"lastModifiedDateTime": "2023-06-13T10:49:01.151Z",
"lastEditedDateTime": null,
"deletedDateTime": null,
"subject": null,
"summary": null,
"chatId": null,
"importance": "normal",
"locale": "en-us",
"webUrl": "https://teams.microsoft.com/l/message/19%3A4649fcf41fa5417f9aa78a5840bea442%40thread.tacv2/1686653341151?groupId=192c0699-fad2-4d02-88a2-84efd6369894&tenantId=d48f52ca-5b1a-4708-8ed0-ebb98a26a46a&createdTime=1686653341151&parentMessageId=1686652339690",
"policyViolation": null,
"eventDetail": null,
"from": {
"application": null,
"device": null,
"user": {
"@odata.type": "#microsoft.graph.teamworkUserIdentity",
"id": "b786d3cf-e97d-4511-b61c-0559e9f4da75",
"displayName": "ג'יימס בונד",
"userIdentityType": "aadUser"
}
},
"body": {
"contentType": "text",
"content": "Reply"
},
"channelIdentity": {
"teamId": "192c0699-fad2-4d02-88a2-84efd6369894",
"channelId": "19:4649fcf41fa5417f9aa78a5840bea442@thread.tacv2"
},
"attachments": [],
"mentions": [],
"reactions": []
}
案例墙
结果类型 值/说明 类型
输出消息* 该操作不应失败,也不应停止 playbook 执行:

如果一个操作返回 201 (is_success = true):
print "Successfully sent a reply to the message in Microsoft Teams."

操作应失败并停止 Playbook 执行:
如果出现严重错误:
print "Error executing action "Send Message Reply". Reason: {0}''.format(error.Stacktrace)
如果未找到团队:
print "Error executing action "Send Message Reply". 原因:在 Microsoft Teams 中找不到名为“{team name}”的团队。请检查拼写。
如果找不到频道:
print "Error executing action "Send Message Reply". 原因:在 Microsoft Teams 中找不到名为“{channel name}”的频道。请检查拼写。
If "error" in response:
print "Error executing action "Send Message Reply". 原因:{error.message}。
常规

作业

如需在 Google SecOps 中配置作业,请前往响应 > 作业调度器。

刷新令牌续订作业

刷新令牌续订作业的目标是定期更新集成中使用的刷新令牌。

默认情况下,刷新令牌每 90 天过期一次,因此集成在过期后无法使用。建议每 7 天或 14 天运行一次此作业,以确保刷新令牌是最新的。

作业输入

如需配置作业,请使用以下参数:

参数
登录 API 根地址 必需

用于向 Microsoft Identity Platform 进行身份验证的 API 根。

默认值为 https://login.microsoftonline.com。

API 根 必需

Microsoft Graph 实例的 API 根。

默认值为 https://graph.microsoft.com。

集成环境 可选

作业为其更新刷新令牌的集成环境。

此参数接受多个值,以逗号分隔的字符串形式表示。请用英文引号 (" ") 将各个值括起来。

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