Microsoft Teams
集成版本:23.0
本文档提供了有关如何将 Microsoft Teams 与 Google Security Operations (Google SecOps) 集成的指南。
配置 Microsoft Teams 集成以与 Google Security Operations 搭配使用
确保用于集成配置的账号已启用 Microsoft Teams 许可。为此,请前往 Microsoft 管理中心,查看所需用户应用了哪些许可。
确认所需用户拥有许可后,您就可以开始创建 Microsoft Teams 应用了。首先,您需要依次前往 Azure Active Directory > 应用注册。
点击新注册,然后提供以下信息:
- Teams 应用的名称
- 重定向 URI:“https://localhost”
请务必将重定向 URI 保存到某个位置,因为您稍后需要用到它。
前往概览页面,然后复制:
- 应用(客户端)ID:对应于集成配置中的“客户端 ID”参数
- 目录(租户)ID:它对应于集成配置中的“租户”参数
添加必要的权限。所有应用的权限均为“委托”,应如下所示:
请务必为相应权限授予管理员同意。
前往证书和密钥标签页,然后添加新的客户端密钥。生成客户端密钥后,您需要复制值列中的数据。集成配置的“客户端密钥”参数需要此值。
前往 Google SecOps SOAR 配置页面,然后输入以下参数:
- 客户端 ID
- 客户端密钥
- 重定向 URI
- 租户
为“刷新令牌”参数输入占位符字符串,然后保存配置。
前往支持请求标签页,然后打开任意支持请求。如果您没有保护壳,可以模拟一个。
选择支持请求中的某个提醒,然后点击手动操作。
前往 Microsoft Teams 集成,然后运行“获取授权”操作。此操作会生成一个用于向应用进行身份验证的链接。
如需获取结果,请前往“支持请求墙”标签页,然后点击查看结果。
您应该会看到类似如下所示的输出:
点击操作提供的链接。确保您登录的用户是用于此集成的用户。在浏览器中打开该链接后,您会发现系统将您重定向到了其他网页。此页面应如下所示:
https://localhost/?code=0.ATwAylKP1BpbCEeO0…&session_state=a149d18b-4131-4649-8956-2f0d09a98743# Copy everything till "&session_state"
,例如:https://localhost/?code=0.ATwAylKP1BpbCEeO0…
运行“生成令牌”操作。
前往案例墙标签页查看结果。在输出消息中,您会找到一个令牌。复制此令牌并将其粘贴到“刷新令牌”参数中。
如果一切操作正确无误,您会看到一个绿色对勾标记。
在 Google SecOps 中配置 Microsoft Teams 集成
有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成。
集成参数
使用以下参数配置集成:
参数名称 | 类型 | 默认 | 是否为必需属性 | 说明 |
---|---|---|---|---|
实例名称 | 字符串 | 不适用 | 否 | 您打算为其配置集成的实例的名称。 |
说明 | 字符串 | 不适用 | 否 | 实例的说明。 |
客户端 ID | 字符串 | 不适用 | 是 | 不适用 |
密钥 ID | 密码 | 不适用 | 是 | 不适用 |
租户 | 字符串 | 不适用 | 是 | 不适用 |
刷新令牌 | 密码 | 不适用 | 是 | 不适用 |
重定向网址 | 字符串 | http://localhost | 否 | 指定将用于对集成进行身份验证的重定向网址。默认值为 http://localhost。此参数会影响“获取授权”和“生成令牌”操作。 |
操作
等待回复
说明
操作等待指定消息中的预期回复。
此操作会异步运行。根据需要调整 Google SecOps IDE 中操作的脚本超时值。
参数
参数显示名称 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
团队名称 | 字符串 | 不适用 | 是 | 指定球队名称。 |
频道名称 | 字符串 | 不适用 | 是 | 指定频道的名称。 |
邮件 ID | 字符串 | 不适用 | 是 | 指定预期会收到回复的消息的 ID。 |
预期回复 | 字符串 | 不适用 | 是 | 指定预期回复的文本。 如果未提供此值,则操作会在收到任何回复时停止执行。 |
等待方法 | DDL | 查看首次回复 可能的值:
|
否 | 指定操作的等待方法。 如果选择了 Check First Reply,该操作会返回第一个回复或将其与预期值进行比较。 如果选择等待直至超时,该操作会等待预期值,直到超时,或者返回超时期间发送的所有消息。 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
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 Team 的用户名 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
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 | 文本 可能的值:
|
来自实体和用户标识符 可能的值:
|
指定应为用户使用的选择类型。 如果选择“来自实体和用户标识符”,操作会同时在相关实体和“用户标识符”参数中提供的值中进行搜索。 如果提供了“来自实体”,则操作仅适用于相关实体,并忽略“用户标识符”参数中提供的值。 如果选择“来自用户标识符”,则该操作仅适用于“用户标识符”中的值,并且“用户标识符”参数会变为必需参数。 |
运行于
此操作适用于以下实体:
- 用户名
- 电子邮件地址
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
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 执行:
如果未找到与实体相关的聊天(is_success = true): “无法在 Microsoft Teams 中向以下用户发送消息:{entity.identifier}。” 如果找不到与实体关联的所有对话 (is_success = false):“未向 Microsoft Teams 中提供的用户发送任何消息。” 异步消息: “正在等待以下用户的回复:{entity.identifier}。” 操作应失败并停止 playbook 执行: 如果报告了严重错误:“执行操作‘发送用户消息’时出错。原因:{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 执行:
操作应失败并停止 playbook 执行: 如果报告了严重错误:“执行操作‘创建频道’时出错。原因:{0}''.format(error.Stacktrace) 如果找不到团队:“执行操作‘创建频道’时出错。原因:在 Microsoft Teams 中找不到名称为 {team, name} 的团队。 如果报告了 400 状态代码:“执行操作‘创建频道’时出错。原因:{innerError/message}。 |
常规 |
删除通道
说明
删除 Microsoft Teams 中的频道。
参数
参数显示名称 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
团队名称 | 字符串 | 不适用 | 是 | 指定需要删除相应频道的团队的名称。 |
频道名称 | 字符串 | 不适用 | 是 | 指定需要删除的渠道的名称。 |
运行于
此操作不会在实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
is_success | True/False | is_success:False |
案例墙
结果类型 | 值/说明 | 类型 |
---|---|---|
输出消息* | 操作不应失败,也不应停止 playbook 执行:
如果未找到频道(is_success = true):“频道 "{channel name}" 在 Microsoft Teams 的团队 "{team name}" 中本来就不存在。” 操作应失败并停止 playbook 执行: 如果系统报告严重错误:“执行操作‘删除频道’时出错。原因:{0}''.format(error.Stacktrace) 如果找不到团队:“执行操作‘删除频道’时出错。原因:在 Microsoft Teams 中找不到名称为 {team, name} 的团队。 |
常规 |
向频道添加用户
说明
将用户添加到 Microsoft Teams 中的私密频道。
参数
参数显示名称 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
团队名称 | 字符串 | 不适用 | 是 | 指定要在哪个团队中搜索频道。 |
频道名称 | 字符串 | 不适用 | 是 | 指定要向其中添加用户的频道的名称。 |
运行于
此操作适用于以下实体:
- 用户名
- 电子邮件地址
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
is_success | True/False | is_success:False |
案例墙
结果类型 | 值/说明 | 类型 |
---|---|---|
输出消息* | 操作不应失败,也不应停止 playbook 执行:
如果未找到某个实体的用户 (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 执行: 如果报告了严重错误:“执行操作‘将用户添加到频道’时出错。原因:{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 |
案例墙
结果类型 | 值/说明 | 类型 |
---|---|---|
输出消息* | 操作不应失败,也不应停止 playbook 执行:
如果用户不是频道成员 (is_success = true):“以下用户已不是 Microsoft Teams 中团队 "{team name}" 的频道 "{Channel Name}" 的成员:{entity.identifier}” 如果所有用户都不是相应频道的成员 (is_success = true):“所提供的用户都不是 Microsoft Teams 中团队 "{team name}" 的频道 "{Channel Name}" 的成员。” 操作应失败并停止 playbook 执行: 如果系统报告严重错误:“执行操作‘从频道中移除用户’时出错。原因:{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):“无法在 Microsoft Teams 中与指定用户创建聊天。” 操作应失败并停止 playbook 执行: 如果报告了严重错误:“执行操作‘创建聊天’时出错。原因:{0}''.format(error.Stacktrace) |
常规 |
列出聊天
说明
列出 Microsoft Teams 中的可用对话。
参数
参数显示名称 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
聊天类型 | DDL | 全部 可能的值:
|
否 | 指定应返回哪种类型的聊天。 |
过滤键 | DDL | 选择一项 可能的值:
|
否 | 指定需要用于过滤对话的键。 |
过滤逻辑 | DDL | 未指定 可能的值:
|
否 | 指定应应用哪些过滤条件逻辑。过滤逻辑基于“过滤键”参数中提供的值运行。 |
过滤条件值 | 字符串 | 不适用 | 否 | 指定应在过滤条件中使用什么值。如果选择“相等”,操作会尝试在结果中找到完全匹配项。如果选择“包含”,操作会尝试查找包含该子字符串的结果。如果此参数中未提供任何内容,则不会应用过滤条件。过滤逻辑基于“过滤键”参数中提供的值运行。 |
要返回的记录数上限 | 整数 | 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):“已成功在 Microsoft Teams 中找到符合所提供条件的对话”。 如果数据不可用 (is_success=false):“未在 Microsoft Teams 中找到符合所提供条件的对话。” 如果“过滤值”参数字段为空 (is_success=true): “未应用过滤条件,因为参数‘过滤条件值’的值为空。” 操作应失败并停止 playbook 执行: 如果“过滤键”形参设置为“选择一个”,并且“过滤逻辑”形参设置为“等于”或“包含”: “执行操作‘{action name}’时出错。原因:您需要从“过滤键”参数中选择一个字段。 如果为“要返回的最大记录数”参数提供的值无效: “执行操作‘{action name}’时出错。原因:为“要返回的最大记录数”提供的值无效:。应提供正数"。" 如果出现严重错误,例如凭据错误、无法连接到服务器、其他错误: “执行操作‘{action name}’时出错。原因:{0}''.format(error.Stacktrace) |
常规 |
“案例墙”表格 | 表格名称:Available Chats 表格列:
|
常规 |
发送聊天消息
说明
在 Microsoft Teams 中发送聊天消息。
参数
参数显示名称 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
聊天 ID | DDL | 不适用 | 是 | 指定要向哪个聊天发送消息。 |
文本 | 字符串 | 不适用 | 是 | 指定消息的内容。 |
等待回复 | 复选框 | 勾选 | 是 | 如果已启用,则操作会等待回复。 |
运行于
此操作不会在实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
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 中发送 ID 为 {Chat ID} 的聊天消息。” 如果回复可用(is_success = true):“已成功发送消息,并在 Microsoft Teams 中收到了 ID 为 {Chat ID} 的聊天回复。” 异步消息:正在等待回复… 操作应失败并停止 playbook 执行: 如果报告了严重错误:“Error executing action "Send Chat Message". 原因:{0}''.format(error.Stacktrace) 如果报告了 404 状态代码:“执行操作‘发送聊天消息’时出错。原因:在 Microsoft Teams 中找不到相应 ID 的聊天。 如果超时:“执行操作‘发送 Chat 消息’时出错。”原因:已发送消息,但在等待回复时操作超时。请在 IDE 中增加超时时间,然后重试。注意:如果您重试,系统会再次发送消息。 |
常规 |
发送消息回复
说明
在 Microsoft Teams 中回复频道消息。
参数
参数 | 类型 | 默认值 | 为必需参数 | 说明 |
---|---|---|---|---|
团队名称 | 字符串 | 不适用 | 是 | 指定要向哪个团队发送回复。 |
频道名称 | 字符串 | 不适用 | 是 | 指定要将回复发送到的渠道。 |
邮件 ID | 字符串 | 不适用 | 是 | 指定您要回复的消息的 ID。 |
内容类型 | DDL | 文本 | 否 | 指定消息的内容类型。 可能的值:
|
文本 | 字符串 | 不适用 | 是 | 指定消息的内容。 |
运行于
此操作不会在实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
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): 打印“已成功向 Microsoft Teams 中的消息发送回复。” 操作应失败并停止 playbook 执行: 如果出现严重错误: 打印“执行操作‘发送消息回复’时出错”。原因:{0}''.format(error.Stacktrace) 如果未找到团队: print "Error executing action "Send Message Reply". 原因:在 Microsoft Teams 中找不到名为 {team name} 的团队。请检查拼写。 如果未找到频道: 打印“Error executing action "Send Message Reply"”。原因:在 Microsoft Teams 中找不到名为 {channel name} 的频道。请检查拼写。 如果响应中包含“错误”: 打印“执行操作‘发送消息回复’时出错”。原因:{error.message}。 |
常规 |
作业
如需在 Google Security Operations 中配置作业,请前往响应 > 作业调度器。
刷新令牌续订作业
刷新令牌续订作业的目标是定期更新集成中使用的刷新令牌。
默认情况下,刷新令牌每 90 天过期一次,因此集成在过期后将无法使用。建议每 7 天或 14 天运行一次此作业,以确保刷新令牌是最新的。
作业输入
如需配置作业,请使用以下参数:
参数 | |
---|---|
登录 API 根地址 | 必需
用于向 Microsoft Identity Platform 进行身份验证的 API 根。 默认值为 |
API 根 | 必需
Microsoft Graph 实例的 API 根。 默认值为 |
集成环境 | 可选
作业为其更新刷新令牌的集成环境。 此参数接受多个值,这些值以英文逗号分隔的字符串形式表示。请用引号 ( |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。