2018年8月31日,星期五

Using a custom Azure Function in PowerApps(e.g. to call the Graph)

在上一篇文章中,我们看了 如何从Flow调出您的自定义代码。在本文中,我想讨论一下PowerApps的类似过程,以便我们可以了解我们自己的代码正在运行的时间-也许是在PowerApp中单击按钮或加载应用程序的屏幕时。本文本质上是最后一篇的配套文章。实际上,我们在创建自定义连接器(PowerApp和Flow都需要调用我们的功能代码)方面做了重要工作。– so if you’重新使用我的帖子作为指导,您’即使您仍然需要参考我的Flow文章’仅与PowerApps一起使用。再次是这些链接:

在两种情况下’创建一个与您的Azure函数对话的自定义连接器,然后在PowerApps / Flow中正确使用该连接器就可以了。

总体流程回顾

本质上是’PowerApps和Flow之间的不同之处在于最后一点–整个过程如下所示:

SNAGHTMLafc3aa

一个PowerApp更新用户’s profile

在上一篇文章中,我使用了可以更新用户的Azure Function /自定义连接器的想法’Flow的Office 365配置文件。我们’这次将使用与PowerApps相同的Azure Function /自定义连接器。由于我们已经定义了连接器,因此它’在PowerApps中开始使用它相当容易。

我创建了一个使用每个API的相当简单的PowerApp’s functions:

  • 个人资料详细信息–> run when the “Lookup user” button is clicked
  • 更新资料 个人资料详细信息–> run when the “Update user” button is clicked

在某些方面,这可能是企业中有用的PowerApp,需要做更多的工作。对于很少使用台式机但偶尔需要更新其个人资料的一线员工来说,这可能很有用。无论如何,可以通过调用Azure函数来执行强大功能的PowerApp的整体配方无疑是工具箱中有用的技术。

对于我的应用程序,我没有’在用户界面上做得太多-在这里’看起来像:

SNAGHTML8ea620

在现实生活中’d lose the “Lookup user”按钮,只有用户’加载现有数据 应用加载时 –但就目前而言,使用这两个按钮有助于说明我的两种方法以及如何进行接线。 如果您确实想在不单击按钮的情况下获取数据,则只需将PowerApps公式用作“Lookup user” button’■OnSelect事件并在第一个屏幕中使用它’改为使用OnStart或OnVisible事件。

添加数据源

创建连接器并使其可用后,要在PowerApps中使用它,您需要 添加数据源 指向连接器。然后,您可以在PowerApps公式中使用您的方法。创建数据源是这样完成的:

SNAGHTML5b972e8

SNAGHTML5b9d2da

在现在出现的面板中,找到代表您的API / Azure函数的连接器:

SNAGHTML5bbf760

然后应成功添加:

SNAGHTML5bc6378

那’s it –您现在可以从PowerApps调用Azure函数。

连线至应用程式控制项

本质上,你’我会发现,当你’在PowerApps中的某个位置重新键入公式,您的API可用并且在方法上具有一些自动完成/ IntelliSense。因此,就我而言,我可以开始输入‘cob’ and then my API’s methods appear:

SNAGHTML5c00799

选择方法时,系统提示您输入所需的参数:

SNAGHTML5c13aaa

SNAGHTML5c1c140

在实践中使用

我们要做的第一件事是将文本输入控件的默认值设置为从获取用户返回的JSON对象的适当值’s data – for example, here’显示名称文本框:

SNAGHTML9d9ffd

我们所有人’这样做是在PowerApps中使用变量,但是如果您’与编码相比,这有点新奇。您需要了解PowerApps命令,例如Set,UpdateContext,Collect / ClearCollect等。本指南可帮助您- 了解PowerApps中的canvas-app变量

将我们的文本输入控件设置为显示“fetchedUserData”变量,我们通过调用自定义连接器填充该对象。

在“Lookup user” button’s OnSelect event (或屏幕上的OnVisible事件)– note that we’重新传递当前用户’照片旁边的标签中的帐户名称。只需从PowerApps的User()函数(特别是User())获得。’m(在这种情况下,假设电子邮件地址与帐户名匹配):

考虑一下我们在这里要做的是一次调用该函数,然后将返回的整个JSON存储为变量。这与我为文本输入控件分配默认值的方式匹配,即 fetchedUserData.displayName.

在“Update user” button:

注意:唐’t make the mistake of calling your function multiple times, once for each time you reference a value. 那 would look like this:

根据评论,这种方法意味着您的函数被多次调用,而不是一次。相反,请确保只调用一次函数,然后将返回的JSON存储在变量中。然后,每个表单控件都引用该JSON的子元素。

概要

那’是的!现在,您可以在PowerApps中使用Azure函数,这可以带来很多可能性。在生产中’我将需要考虑与谁共享自定义连接器/如何使自定义连接器可用(以及其他方法),但是一旦您完成了一般过程,就很简单了’已经完成了定义Open API定义等的艰苦工作。