自适应卡片模板服务
自适应卡片模板服务是一项概念证明服务,允许任何人查找、贡献以及共享一组已知的模板。
如果你要显示一些数据,但不想为其编写自定义的自适应卡片,则可使用此服务。
有关此方面的内容,请参阅自适应卡片模板化概述
重要
条款和协议
此 Alpha 级别服务“按原样”提供,包含所有错误,且不提供任何方式的支持。 从服务进行的任何数据收集都需遵循 Microsoft 隐私声明的要求。
这些功能为预览版,可能会更改。 我们欢迎你的反馈,它很重要,可以确保我们提供你需要的功能。
此服务如何帮助我?
假设我刚获得一份数据,该数据可能是财务数据、Microsoft Graph 数据、schema.org 数据或来自我的组织中的自定义数据。
现在,我想要向用户显示该数据。
传统上,这意味着在我向最终用户提供的所有前端堆栈中编写自定义 UI 代码。
但如果我的应用可以根据数据类型“学习”新的 UI 模板,会出现什么情况? 任何人都可以在自己的项目中、组织内或整个 Internet 上参与、增强和共享公共 UI 模板。
什么是卡片模板服务?
卡片模板服务是一个简单的 REST 终结点,它有助于:
- 通过分析数据的结构来查找模板
- 获取模板,以便直接将其绑定到客户端,无需将数据发送到服务器或离开设备
- 当客户端数据绑定不合适或不可行时,填充服务器上的模板
其背后的事实是:
- 有一个 GitHub 支持的共享开源模板存储库。 (存储库目前为专用,但一旦我们准备就绪,就会将其公开)
- 在存储库中,所有模板都是平面 JSON 文件,因此可以很自然地在开发人员工作流中进行编辑、贡献和共享。
- 此服务的代码将可用,因此你可以在自己感觉最合理的任何位置进行托管。
使用服务
获取所有模板
此终结点返回一个包含所有已知模板的列表。
HTTP GET https://templates.adaptivecards.io/list
响应摘录
{
"graph.microsoft.com": {
"templates": [
{
"file": "Files.json",
"fullPath": "graph.microsoft.com/Files.json"
},
{
"file": "Profile.json",
"fullPath": "graph.microsoft.com/Profile.json"
}
]
}
查找模板
此终结点尝试通过分析数据的结构来查找模板。
HTTP POST https://templates.adaptivecards.io/find
示例
假设我刚访问 Microsoft Graph 终结点来获取有关我的组织数据。
HTTP GET https://graph.microsoft.com/v1.0/me/
该 API 返回了 JSON 数据,但我如何使用自适应卡片向用户显示它?
首先,我想要查看是否存在此类数据的模板,因此使用 POST body
中的数据向 /find
终结点发出 HTTP 请求。
HTTP POST https://templates.adaptivecards.io/find
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"businessPhones": [
"+1 412 555 0109"
],
"displayName": "Megan Bowen",
"givenName": "Megan",
"jobTitle": "Auditor",
"mail": "MeganB@M365x214355.onmicrosoft.com",
"mobilePhone": null,
"officeLocation": "12/1110",
"preferredLanguage": "en-US",
"surname": "Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"id": "48d31887-5fad-4d73-a9f5-3c356e68a038"
}
响应:
[
{
"templateUrl": "graph.microsoft.com/Profile.json",
"confidence": 1
}
]
服务返回任何匹配模板的列表,以及一个 confidence
,指示匹配程度。 现在,我可以使用该模板 URL 来获取模板,或在服务器端填充它。
获取模板
从此终结点检索的模板可以在运行时使用模板化 SDK 填充数据。
HTTP GET https://templates.adaptivecards.io/[TEMPLATE-PATH]
还可以让“示例数据”包含在模板中,这样就可以在设计器中更方便地进行编辑:
HTTP GET https://templates.adaptivecards.io/[TEMPLATE-PATH]?sampleData=true
示例
让我们获取已从上面的 /find
返回的 Microsoft Graph 配置文件模板。
HTTP GET https://templates.adaptivecards.io/graph.microsoft.com/Profile.json
响应摘录
{
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "{name}"
},
{
// ...snip
}
]
}
现在,请将此模板与模板化 SDK 配合使用,创建可以呈现的自适应卡片。
在服务器端填充模板
某些情况下,在客户端填充模板可能没有意义。 对于这些用例,可以让服务返回一张完全填充的自适应卡片,该卡片可以传递给任何自适应卡片呈现器。
HTTP POST https://templates.adaptivecards.io/[TEMPLATE-PATH]
示例
让我们使用上面的数据填充已从 /find
返回的 Microsoft Graph 配置文件模板。
HTTP POST https://templates.adaptivecards.io/graph.microsoft.com/Profile.json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"businessPhones": [
"+1 412 555 0109"
],
"displayName": "Megan Bowen",
"givenName": "Megan",
"jobTitle": "Auditor",
"mail": "MeganB@M365x214355.onmicrosoft.com",
"mobilePhone": null,
"officeLocation": "12/1110",
"preferredLanguage": "en-US",
"surname": "Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"id": "48d31887-5fad-4d73-a9f5-3c356e68a038"
}
响应摘录
{
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "Megan Bowen"
},
{
// ...snip
}
]
}
请注意响应如何将第一个 TextBlock
的文本替换为 "Megan Bowen"
而不是 "{name}"
,如 GET
请求中所示。 现在可以将此 AdaptiveCard 传递给任何自适应卡片呈现器,无需进行客户端模板化。
贡献模板
模板托管在 GitHub 上的 adaptivecards-templates 存储库中。
我们希望使用 GitHub 作为模板的后备存储,这样就可以“推广”创作、增强和共享模板的过程。 任何人都可以提交包含一个全新模板的拉取请求,或者对现有模板进行增强操作,这一切都在便于开发人员使用的 GitHub 体验中提供。
自托管此服务
并非所有类型的数据都适用于 https://templates.adaptivecards.io
上托管的自适应卡片模板“中心”服务。
我们希望确保任何人都可以在你的组织内托管模板服务,因此,源代码已在 GitHub 上提供,并且可以轻松部署到你自己的 Azure 函数。
从此处开始➡ adaptivecards-templates