【问题标题】:How to implement My Azure function for using it in PowerApps如何实现 My Azure 功能以便在 PowerApps 中使用它
【发布时间】:2020-05-26 21:36:00
【问题描述】:

我目前正在尝试编写一个函数来将两个图像从 azure 存储合并为一个图像。 我不知道如何设置我的函数类,以便我可以在具有 2 个选定图像的 powerapps 中触发该函数。

这是我的课

    public static class Function1
{
    [Obsolete] // switch TraceWrite to Ilogger
    [FunctionName("Function1")]
    public static void Run(string background, string overlay, CloudBlockBlob outputBlob, TraceWriter log)
    {
        log.Info($"Function triggered with blob\n Background: {background} \n Overlay: {overlay}");

        ConvertMe Converter = new ConvertMe(System.Drawing.Color.Black); // My ImageEdit Class I have written
        Bitmap _Main = new Bitmap(background);
        Bitmap Overlay = Converter.MakeTransparent(overlay);



        using (MemoryStream memory = new MemoryStream())
        {
            Converter.ComebineBitmap(_Main, Overlay).Save(memory, ImageFormat.Jpeg);
            memory.Position = 0;
            outputBlob.Properties.ContentType = "image/jpeg";
            outputBlob.UploadFromStreamAsync(memory);
        }


    }

}

【问题讨论】:

  • 到目前为止,我知道你不能直接从Power Apps 调用Azure Function,你可以使用Microsoft flowlogic App。步骤是,1.Call azure function on logic app or Microsoft flow2.Bind Power apps with flow or Logic App
  • 好吧,我不知道。你知道如何为此设置我的课程吗?我是 Azure 函数的新手,它在我的函数和 hello world 教程函数之间迈出了一大步 ^^
  • 您的意思是如何在azure function 上添加课程?
  • 我的意思是我上面的功能。我不知道如何配置和设置。我也不确定这个功能是否像这样工作。

标签: c# image azure-functions azure-blob-storage powerapps


【解决方案1】:

首先,假设你已经知道你不能直接调用你的函数,尤其是你正在使用 blob 触发函数。

然后是关于如何在电源应用程序中使用功能。有关于此的博客:Using Azure Functions in PowerApps。您需要 http 触发函数并使用 Swagger 定义 REST 签名,然后在电源应用中使用自定义 API。

最后是关于如何在http触发函数中获取两个blob。从 blob 绑定文档中您可以获得 Input-usage,您可以找到 c# 或 c# 脚本函数都支持 CloudBlockBlob 绑定。

下面是从两个带有 http 触发功能的 txt blob 读取的示例,您可以添加一个输出绑定来存储输出图像。

public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task RunAsync(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            [Blob("test/test.txt",FileAccess.ReadWrite)]CloudBlockBlob blob1,
            [Blob("test/out.txt", FileAccess.ReadWrite)]CloudBlockBlob blob2,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string test = await blob1.DownloadTextAsync();
            string outtxt = await blob2.DownloadTextAsync();
            log.LogInformation("test value: " + test);
            log.LogInformation("outtxt value: " + outtxt);

        }
    }

然后关注博客,假设这可以工作,希望这可以帮助你,如果你还有其他问题,请随时告诉我。

【讨论】:

  • 非常感谢:)。我必须下载我的 blob 还是可以通过它们的 uri 调用它们?为什么我需要 HttpRequest req ?你不叫它。我的目标是像这样实现我的 Httptrigger "azurefn.azurewebsites.net/api/ConvertMe?Image1={Placeholder1}&Image2={Placeholder2}" Placeholder1 = BlobUri1(加载到 PowerApps 中的变量中) Placeholder2 = BlobUri2(加载到 PowerApps 中的变量中)。到目前为止,这是我更改的代码。 pastebin.com/4fK26wrg
  • 如果你的代码有问题,你应该粘贴你的代码。从错误来看,应该是您的 blob 路径不正确,您是否只是部署了我的代码,甚至您的 blob 路径都没有进行任何更改?
  • 其实我叫函数url,HttpRequest是因为它是http触发函数,关于为什么要使用http trigger是因为你想在power应用中使用它。然后Placeholder1 不必是 bloburi,它可能只是 blob 名称。你可以将它绑定到这样的容器picture show.
  • 我还要提醒你一件事,从你的代码中假设你使用的是System.Drawing,这不是天蓝色函数支持的。检查这个。stackoverflow.com/a/51907024/10383250
  • @wambo,有关于这个问题的更新吗?如果这可以帮助你,请接受它作为答案。
【解决方案2】:

如果您通过 HTTP 触发函数,您可以使用 Power Apps 中的自定义 API 连接来连接到您的 API 并发送/请求数据等。

你需要将你的函数部署在某个地方,最好是 Azure。

https://powerapps.microsoft.com/es-es/blog/register-and-use-custom-apis-in-powerapps/

https://powerapps.microsoft.com/uk-ua/blog/building-a-custom-api-for-powerapps-using-azure-app-service-web-apps/

https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/register-custom-api

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2020-03-20
    • 1970-01-01
    相关资源
    最近更新 更多