使用自定义连接器构建 Teams Power App 第 2 部分:将 Power App Flow 集成到更新信息





5.00/5 (1投票)
在本文中,我们将学习如何将外部数据导入您的应用程序,自动为您的 Meetup Teams 应用填充有关即将举行的活动的最新信息。
本文是系列文章的第二篇,旨在探索将 Teams 与 Power Apps 相结合,为业务用户创建有用的应用程序。在第一篇文章中,我们创建了一个简单的活动信息 Power App,并将其连接到一个手动输入数据的表中。
在本文中,我们将修改该表并使用流来填充会议列表,自动带来相关信息以帮助我们的用户协调活动。
创建 Power App Flow
将数据导入 Power App 的一种方法是使用预定义的连接器。标准的 Power Apps 使您可以使用大量的现有连接器。使用完整的 Office Power Automate,您可以创建自定义连接器。目前,Teams 中的 Power Apps 不允许您创建这些连接器。
首先,我们确保我们在正确的 Power Automate 环境中,以便访问我们 Teams 环境中的 MeetingList 表。从正确的环境进行此操作至关重要。通过查看 Power Automate 的右上角来检查您是否在正确的环境中。您应该会看到您团队的名称。
我们将使用 Meetup.com 的数据来探索 .NET Foundation 的虚拟用户组活动。我们使用一个不需要身份验证的简单 API 调用,该调用会返回一个JSON 会议列表。
让我们开始打开我们上一篇文章中的应用程序
在上一篇文章中,我们创建了一个名为 MeetingList 的表,其中包含表示 API 调用信息的字段。现在,我们将创建一个 Power Automate 流来使用 Meetup 的数据填充此表。
打开 Power App 后,我们单击“设置”右侧的省略号菜单,可以看到其中一个选项是 Power Automate。
我们选择 Power Automate,右侧会弹出一个窗口,其中有一个 + 选项可用于创建新流。我们单击 +。
注意:如果您有现有的流,它们最初不会列出。如果您想查看当前流,请单击 新建。然后,当 Power Automate 在新的 Web 实例中出现时,单击左侧菜单中的 我的流。此体验可能会随着未来更新而改变。
当我们单击 + 创建新流时,会显示一个空白流,准备添加步骤。在本教程中,我们将创建一个简单的、手动触发的应用程序,以便每次运行流时都能获取所有当前的(即未来的)会议。
流看起来不是空白的,它在等待我们创建第一步。我们在这里添加手动触发器,但也可以按计划触发流。
手动触发器是第一步,所以我们继续单击 手动触发流。我们不会对此做任何事情,但我们看到我们现在有了第一步。
注意:要进行此演示,您需要一个付费订阅(每人每月 40 美元,用于Power Automate 或Power Apps,每应用 10 美元,或免费 30 天试用)。您需要此付费订阅才能访问高级 HTTP 和 DATAVERSE 操作。
此外,您的默认 Office 365 环境与 Teams Dataverse 不同。每个 Teams 团队都有一个独立且私有的 Dataverse,与其他 Dataverse 不易通信。您可以将 Teams 环境升级到 Dataverse,这将在您的常规 Office 365 Power Automate 仪表板中可见。升级需要 Dataverse 容量(每月每 GB 40 美元)。
选择 手动触发流 后,我们单击 + 新建步骤,搜索 HTTP,然后选择它。然后我们填写所需信息。我们为方法选择 GET,并将 URI 设置为 Meetup URL
https://api.meetup.com/dotnet-virtual-user-group/events
现在,我们为我们的流命名,例如 CheckForNewMeetings,然后单击 保存。我们忽略上一步中的参数。
接下来,我们需要获取 API 调用的输出并解析 JSON 以访问各个字段。首先,我们添加一个名为“JSON”的新 操作 步骤并进行搜索。我们在操作列表中看到“解析 JSON”并单击它。内容将来自 HTTP 步骤的 正文。
我们可以手动创建架构,但使用示例数据要容易得多。我们隔离 JSON 数据的一个记录,并将结尾的“,”替换为“]”。我们还删除了大部分描述以缩短它,但它仍然适用于生成架构。我们将此粘贴到示例数据中
[{"created":1625058549000,"duration":3600000,"id":"279169076","name":"Building dynamic applications with blazor","date_in_series_pattern":false,"status":"upcoming","time":1625920200000,"local_date":"2021-07-10","local_time":"05:30","updated":1625652672000,"utc_offset":-25200000,"waitlist_count":0,"yes_rsvp_count":45,"venue":{"id":26906060,"name":"Online event","repinned":false,"country":"","localized_country_name":""},"is_online_event":true,"group":{"created":1588792976000,"name":".NET Virtual User Group","id":33695761,"join_mode":"open","lat":47.61000061035156,"lon":-122.33000183105469,"urlname":"dotnet-virtual-user-group","who":"Members","localized_location":"Seattle, WA","state":"WA","country":"us","region":"en_US","timezone":"US/Pacific"},"link":"https://www.meetup.com/dotnet-virtual-user group/events/279169076/","description":"
关于 Microsoft .NET Foundation 顾问委员会主席的会议。
","visibility":"public","member_pay_fee":false}]
生成的架构如下
{
"type": "array",
"items": {
"type": "object",
"properties": {
"created": {
"type": "integer"
},
"duration": {
"type": "integer"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"date_in_series_pattern": {
"type": "boolean"
},
"status": {
"type": "string"
},
"time": {
"type": "integer"
},
"local_date": {
"type": "string"
},
"local_time": {
"type": "string"
},
"updated": {
"type": "integer"
},
"utc_offset": {
"type": "integer"
},
"waitlist_count": {
"type": "integer"
},
"yes_rsvp_count": {
"type": "integer"
},
"venue": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"repinned": {
"type": "boolean"
},
"country": {
"type": "string"
},
"localized_country_name": {
"type": "string"
}
}
},
"is_online_event": {
"type": "boolean"
},
"group": {
"type": "object",
"properties": {
"created": {
"type": "integer"
},
"name": {
"type": "string"
},
"id": {
"type": "integer"
},
"join_mode": {
"type": "string"
},
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"urlname": {
"type": "string"
},
"who": {
"type": "string"
},
"localized_location": {
"type": "string"
},
"state": {
"type": "string"
},
"country": {
"type": "string"
},
"region": {
"type": "string"
},
"timezone": {
"type": "string"
}
}
},
"link": {
"type": "string"
},
"description": {
"type": "string"
},
"visibility": {
"type": "string"
},
"member_pay_fee": {
"type": "boolean"
}
},
"required": [
"created",
"duration",
"id",
"name",
"date_in_series_pattern",
"status",
"time",
"local_date",
"local_time",
"updated",
"utc_offset",
"waitlist_count",
"yes_rsvp_count",
"venue",
"is_online_event",
"group",
"link",
"description",
"visibility",
"member_pay_fee"
]
}
}
此输出与我们制作的 MeetingList 表非常匹配!
创建流的最后一步是将解析后的 JSON 并将所有记录插入我们的数据库表 MeetingList。再次,我们单击 + 新建步骤。这次,我们搜索“Dataverse”并选择 添加新行。
为了配置我们的行,我们选择表名 MeetingLists。然后,我们单击 显示高级选项 并填写空白以将 JSON 中的字段映射到表中。请注意,有多个 ID 字段,我们必须确定选择哪一个。经过一番调查,我们发现从解析的 JSON 中的第二个字段包含会议 ID。为了验证,我们确保它们都不同。
重命名并保存步骤后,我们将得到以下结果
现在我们可以保存我们的流,它会自动运行流检查器。如果没有错误,我们单击 测试 并选择 手动。接下来,我们单击底部的 测试,然后单击 运行流。我们的流开始执行并显示结果。如果我们看到所有绿色的复选标记,则表示我们的流已成功。流检查器在右侧窗口中标记并显示错误。我们可以仔细阅读错误以确定可能的问题。
注意:我们添加了额外的操作 列出行 和 删除所有行,以便每次都清除表。更好的逻辑可能是只导入新行,例如,但您可以确定最适合您的内容。
最后,我们可以返回 Teams Power App 并检查插入的行。
后续步骤
Teams 中的 Power Apps 是一款强大的提高生产力的工具,可将有用的功能集成到您的组织已在使用中的通信中心。使用数百个预配置的连接器,并通过流用外部数据填充您的自定义表,为自定义打开了无限的可能性。
在这里,我们使用了强大的内置操作,无需编写任何代码即可将数据导入我们的自定义应用程序。随着 Teams 中的 Power Apps 不断改进和扩展其功能,其功能仅受您的想象力限制。
继续阅读本系列的第三篇,也是最后一篇文章,了解如何编辑 Power App 中的数据并将其写回应用程序,从而帮助您的组织团队快速轻松地管理活动并保持信息一致。