创建和发送邮件
若要创建和发送可操作的消息,请使用传入 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 以发送自适应卡,请按照以下步骤进行:
在 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
}
}
这些限制已就位,通过连接器减少频道垃圾邮件,并确保用户获得最佳体验。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈