认证
此提供商需要身份验证。
- webhook_url: Teams Webhook Url(必需:True,敏感:True)
在工作流中
此提供商可用于工作流。
作为"操作"来进行更改或更新数据,示例:
yaml
actions:
- name: Query teams
provider: teams
config: "{{ provider.my_provider_name }}"
with:
message: {value} # 要发送的消息
typeCard: {value} # 卡片类型。可以是 "MessageCard"(旧版)或 "message"(用于自适应卡片)。默认为 "message"
themeColor: {value} # 十六进制颜色(仅与 MessageCard 类型一起使用)
sections: {value} # 对于 MessageCard:自定义信息部分数组。对于自适应卡片:遵循自适应卡片架构的卡片元素数组。可以作为 JSON 字符串或数组提供。
schema: {value} # 自适应卡片的架构 URL。默认为 "http://adaptivecards.io/schemas/adaptive-card.json"
attachments: {value} # 自适应卡片的自定义附件数组(覆盖默认附件结构)。可以作为 JSON 字符串或数组提供。
mentions: {value} # 要包含在自适应卡片中的用户提及列表。每个提及应该是包含 'id'(用户 ID、Microsoft Entra 对象 ID 或 UPN)和 'name'(显示名称)键的字典。
示例:[{"id": "user-id-123", "name": "John Doe"}, {"id": "john.doe@example.com", "name": "John Doe"}]请查看以下工作流示例:
- create_jira_ticket_upon_alerts.yml
- teams-adaptive-card-notifier.yaml
- teams-adaptive-cards-with-mentions.yaml
连接 Provider
新版 Teams
- 在新版 Teams 客户端中,选择 Teams 并导航至您要添加传入 Webhook 的频道。 2. 选择频道名称右侧的更多选项 ••• 。 3. 选择管理频道

::: note 对于不是频道管理员的成员,管理频道选项位于频道右上角的打开频道详情选项下。 :::
4. 选择编辑

5. 搜索传入 Webhook 并选择添加。

6. 选择添加

7. 提供 webhook 的名称并在需要时上传图片。 8. 选择创建。

9. 复制并保存对话框中存在的唯一 webhook URL。该 URL 映射到频道,您可以使用它向 Teams 发送信息。 10. 选择完成。
webhook 现在可在 Teams 频道中使用。

经典 Teams
- 在经典 Teams 客户端中,选择 Teams 并导航至您要添加传入 Webhook 的频道。 2. 从右上角选择更多选项 ••• 。 3. 从下拉菜单中选择连接器。

4. 搜索传入 Webhook 并选择添加。

5. 选择添加。

6. 提供 webhook 的名称并在需要时上传图片。 7. 选择创建。

8. 复制并保存对话框中存在的唯一 webhook URL。该 URL 映射到频道,您可以使用它向 Teams 发送信息。 9. 选择完成。

注意事项
使用自适应卡片时(typeCard="message"):
sections参数应遵循 自适应卡片架构themeColor对自适应卡片会被忽略- 如果未提供 sections,消息将显示为简单的文本块
sections和attachments都可以作为 JSON 字符串或数组提供- 您可以使用
mentions参数在自适应卡片中提及用户
工作流示例
您也可以在我们的 examples 文件夹中的 Keep GitHub 存储库中找到此示例。
yaml
id: 6bc7c72e-ab3d-4913-84dd-08b9323195ae
description: Teams Adaptive Cards Example
disabled: false
triggers:
- type: manual
- filters:
- key: source
value: r".*"
type: alert
consts: {}
name: Keep Teams Adaptive Cards
owners: []
services: []
steps: []
actions:
- name: teams-action
provider:
config: "{{ providers.teams }}"
type: teams
with:
message: ""
sections: '[{"type": "TextBlock", "text": "{{alert.name}}"}, {"type": "TextBlock", "text": "Tal from Keep"}]'
typeCard: message
# Optional: Add mentions to notify specific users
# mentions: '[{"id": "user@example.com", "name": "User Name"}]'您也可以在我们的 examples 文件夹中找到带有用户提及的示例。
::: note sections 参数是一个遵循自适应卡片架构的 JSON 字符串,但也可以是一个对象。 如果它是字符串,它将被解析为 JSON 字符串。 :::
使用 Sections
python
provider.notify(
message="Fallback text",
typeCard="message",
sections=[
{
"type": "TextBlock",
"text": "Hello from Adaptive Card!"
},
{
"type": "Image",
"url": "https://example.com/image.jpg"
}
]
)使用自定义附件
python
provider.notify(
typeCard="message",
attachments=[{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{
"type": "TextBlock",
"text": "Custom Attachment Example"
}
]
}
}]
)在自适应卡片中使用用户提及
您可以使用 mentions 参数在自适应卡片中提及用户。您的卡片中的文本应包含格式为 <at>User Name</at> 的提及,您需要在 mentions 参数中提供用户的 ID 和名称。
Teams 支持三种类型的用户 ID 进行提及:
- Teams 用户 ID(格式:
29:1234...) - Microsoft Entra 对象 ID(格式:
49c4641c-ab91-4248-aebb-6a7de286397b) - 用户主体名称 (UPN)(格式:
user@example.com)
python
provider.notify(
typeCard="message",
sections=[
{
"type": "TextBlock",
"text": "Hello <at>John Doe</at>, please review this alert!"
}
],
mentions=[
{
"id": "john.doe@example.com", # Can be UPN, Microsoft Entra Object ID, or Teams User ID
"name": "John Doe"
}
]
)您也可以在单个卡片中提及多个用户:
python
provider.notify(
typeCard="message",
sections=[
{
"type": "TextBlock",
"text": "Hello <at>John Doe</at> and <at>Jane Smith</at>, please review this alert!"
}
],
mentions=[
{
"id": "john.doe@example.com",
"name": "John Doe"
},
{
"id": "49c4641c-ab91-4248-aebb-6a7de286397b", # Microsoft Entra Object ID
"name": "Jane Smith"
}
]
)在 YAML 工作流中,您可以将提及作为 JSON 字符串提供:
yaml
actions:
- name: teams-action
provider:
config: "{{ providers.teams }}"
type: teams
with:
typeCard: message
sections: '[{"type": "TextBlock", "text": "Hello <at>John Doe</at>, please review this alert!"}]'
mentions: '[{"id": "john.doe@example.com", "name": "John Doe"}]'