创建和发送邮件
重要
Microsoft 365 连接器 (以前称为 Office 365 连接器) 即将弃用,并且即将阻止创建新的 Microsoft 365 连接器。 有关计划以及工作流应用如何提供更灵活、更安全的体验的详细信息,请参阅 停用 Microsoft Teams 中的 Microsoft 365 连接器。
如何在 Teams 中创建 Webhook?
若要在收到 Webhook 请求时自动发布到聊天或频道,请使用预定义的工作流模板,或使用 收到 Teams Webhook 请求时 触发器从头开始创建工作流。 有关详细信息,请参阅 在 Microsoft Teams 中收到 Webhook 请求时发布工作流。
有关 收到 Teams Webhook 请求时 触发器的详细信息,请参阅 Microsoft Teams - Webhook。
如果已生成Office 365连接器:
创建 Power Automate 连接器:Power Automate 增强了 Teams 中广泛使用的工作流应用。 它是以编程方式将数据传入和传出 Teams 的可缩放且安全的方法。 如果采用此方法,则可以创建工作流模板,用于将产品中的警报发布到 Teams 频道。 此方法简化了用户采用新方法。 有关详细信息,请参阅 面向企业开发人员、ISV 和合作伙伴的 Power Automate。
更新 Teams 应用:可以增强当前 Teams 应用。 例如,可以让用户基于系统中的触发器事件设置主动消息。 有关详细信息,请参阅 机器人如何通过主动消息发布到通道。
已知问题
- 工作流应用不能作为流机器人在专用频道中发布。 但是,它可以代表用户发布。
- 工作流仅支持自适应卡片。 它不支持Office 365连接器使用的较旧消息卡格式。 从 10 月中旬开始,支持在工作流中使用消息卡格式。 有关详细信息,请参阅如何将连接器消息卡格式转换为自适应卡片。
- 工作流不提供 DataDog 和 Jenkins 等第三方连接器。
- 只能在默认环境中创建工作流。
限制
工作流仅链接到特定用户 (称为工作流) 所有者,而不是 Teams 团队或频道。 如果没有分配共同所有者,如果没有所有者,工作流可能会成为孤立流。 为了保持流自动化业务流程的连续性,管理员可以添加一个或多个共同所有者,并授予他们对工作流的完全控制权限。 他们还可以为连接添加身份验证(如果有),并在已禁用流时启用流。 有关详细信息,请参阅 管理孤立流。
若要创建和发送可操作的消息,请使用传入 Webhook 或 Microsoft 365 连接器。 但是,只有具有Exchange Online许可证的用户才能访问可操作消息。
创建可操作邮件
可操作邮件包括卡片上的六个可见按钮。 每个按钮通过使用ActionCard
操作在消息的 属性中potentialAction
定义,每个按钮都具有输入类型、文本字段、日期选取器或多选列表。 每个 ActionCard
都具有关联的操作,例如 HttpPOST
。
连接器卡支持以下操作:
-
ActionCard
: 显示一个或多个输入类型和关联的操作。 -
HttpPOST
: 向 URL 发送 POST 请求。 -
OpenUri
:在单独的浏览器或应用中打开 URI。 (可选)基于操作系统以不同的 URI 为目标。
ActionCard
操作支持三种输入类型:
-
TextInput
: 具有可选长度限制的单行或多行文本字段。 -
DateInput
: 具有可选时间选择器的日期选择器。 -
MultichoiceInput
: 提供单项选择或多重选择的选项枚举列表。
MultichoiceInput
支持控制列表最初是否完全展开的 style
属性。
style
: 的默认值取决于 isMultiSelect
的值,如下所示:
isMultiSelect |
违约 style |
---|---|
false 或未指定 |
compact |
true |
expanded |
若要以紧凑样式显示多选列表,请指定 "isMultiSelect": true
和 "style": true
。
有关连接器卡操作的详细信息,请参阅 操作。
注意
- 在 Microsoft Teams 中指定
style
属性的compact
与在 Microsoft Outlook 中指定style
属性的normal
相同。 - 对于 HttpPOST 操作,请求中包括承载令牌。 此令牌包括执行操作的 Microsoft 365 用户的Microsoft Entra标识。
通过传入 Webhook 或连接器发送消息,以便Microsoft 365 组
若要通过传入 Webhook 或连接器发送消息,Microsoft 365 组,请将 JSON 有效负载发布到 Webhook URL。 此有效负载必须采用连接器的形式,卡Microsoft 365 组。
还可使用此 JSON 创建包含丰富输入内容 (如文本输入、多重选择或选择日期和时间) 的卡。 生成卡并将其发布到 Webhook URL 的代码可以在任何托管服务上运行。 这些卡片定义为可操作消息的一部分,在 Teams 机器人和消息扩展中使用的 卡片 中也受支持。
连接器消息示例
连接器消息示例如下所示:
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"themeColor": "0076D7",
"summary": "Larry Bryant created a new task",
"sections": [{
"activityTitle": "Larry Bryant created a new task",
"activitySubtitle": "On Project Tango",
"activityImage": "https://adaptivecards.io/content/cats/3.png",
"facts": [{
"name": "Assigned to",
"value": "Unassigned"
}, {
"name": "Due date",
"value": "Mon May 01 2017 17:07:18 GMT-0700 (Pacific Daylight Time)"
}, {
"name": "Status",
"value": "Not started"
}],
"markdown": true
}],
"potentialAction": [{
"@type": "ActionCard",
"name": "Add a comment",
"inputs": [{
"@type": "TextInput",
"id": "comment",
"isMultiline": false,
"title": "Add a comment here for this task"
}],
"actions": [{
"@type": "HttpPOST",
"name": "Add comment",
"target": "https://learn.microsoft.com/outlook/actionable-messages"
}]
}, {
"@type": "ActionCard",
"name": "Set due date",
"inputs": [{
"@type": "DateInput",
"id": "dueDate",
"title": "Enter a due date for this task"
}],
"actions": [{
"@type": "HttpPOST",
"name": "Save",
"target": "https://learn.microsoft.com/outlook/actionable-messages"
}]
}, {
"@type": "OpenUri",
"name": "Learn More",
"targets": [{
"os": "default",
"uri": "https://learn.microsoft.com/outlook/actionable-messages"
}]
}, {
"@type": "ActionCard",
"name": "Change status",
"inputs": [{
"@type": "MultichoiceInput",
"id": "list",
"title": "Select a status",
"isMultiSelect": "false",
"choices": [{
"display": "In Progress",
"value": "1"
}, {
"display": "Active",
"value": "2"
}, {
"display": "Closed",
"value": "3"
}]
}],
"actions": [{
"@type": "HttpPOST",
"name": "Save",
"target": "https://learn.microsoft.com/outlook/actionable-messages"
}]
}]
}
下图是通道中卡连接器消息的示例:
使用 cURL 和 PowerShell 发送消息
若要使用 cURL 在 Webhook 中发布消息,请按照以下步骤进行:
从 cURL 网站 安装 cURL。
在命令行中输入以下 cURL 命令:
// on macOS or Linux curl -H 'Content-Type: application/json' -d '{"text": "Hello World"}' <YOUR WEBHOOK URL>
// on Windows curl.exe -H "Content-Type:application/json" -d "{'text':'Hello World'}" <YOUR WEBHOOK URL>
注意
如果 POST 成功,则必须看到
curl
简单输出 1。检查 Teams 客户端以查看已发布的新卡片。
使用传入 webhook 发送自适应卡
注意
- 完全支持所有本机自适应卡片架构元素 (
Action.Submit
除外)。 - 受支持的操作有 Action.OpenURL、Action.ShowCard,以及 Action.ToggleVisibility
若要通过传入 Webhook 发送带有文本或 Base64 编码图像的自适应卡片,请执行以下步骤:
- 在 Teams 中设置自定义 Webhook。
- 使用以下代码创建自适应卡的 JSON 文件:
{
"type":"message",
"attachments":[
{
"contentType":"application/vnd.microsoft.card.adaptive",
"contentUrl":null,
"content":{
"$schema":"http://adaptivecards.io/schemas/adaptive-card.json",
"type":"AdaptiveCard",
"version":"1.2",
"body":[
{
"type": "TextBlock",
"text": "For Samples and Templates, see [https://adaptivecards.io/samples](https://adaptivecards.io/samples)"
}
]
}
}
]
}
自适应卡 JSON 文件的属性如下所示:
-
"type"
字段必须为"message"
。 -
"attachments"
阵列包含一组卡对象。 -
"contentType"
字段必须设置为自适应卡类型。 -
"content"
对象为采用 JSON 格式的卡。
使用 Postman 测试自适应卡:
- 使用 Postman 测试自适应卡,向为设置传入 Webhook 而创建的 URL 发送 POST 请求。
- 将 JSON 文件粘贴至请求主体中,并在 Teams 中查看自适应卡。
提示
使用自适应卡 代码示例和模板 测试 POST 请求的主体。
连接器的速率限制
应用程序速率限制可以控制允许连接器或传入 Webhook 在频道上生成的流量。 Teams 使用固定速率窗口和以秒为单位的增量计数器跟踪请求。 如果在一秒内发出的请求超过四个,则客户端连接会受到限制,直到窗口刷新的持续时间为固定速率。
每秒事务数阈值
下表提供了基于时间的事务详细信息:
时间 (秒) | 允许的最大请求数 |
---|---|
1 | 4 |
30 | 60 |
3600 | 100 |
7200 | 150 |
86400 | 1800 |
注意
具有指数补偿的重试逻辑 将减轻速率限制,以应对请求在一秒内超出限制的情况。 请参阅 HTTP 429 响应以避免达到速率限制。
// Please note that response body needs to be extracted and read
// as Connectors do not throw 429s
try
{
// Perform Connector POST operation
var httpResponseMessage = await _client.PostAsync(IncomingWebhookUrl, new StringContent(content));
// Read response content
var responseContent = await httpResponseMessage.Content.ReadAsStringAsync();
if (responseContent.Contains("Microsoft Teams endpoint returned HTTP error 429"))
{
// initiate retry logic
}
}
这些限制已就位,通过连接器减少频道垃圾邮件,并确保用户获得最佳体验。