通过 Dynamics 365 将 Azure Blob 存储映像集成到 PowerApps 中

PowerApps

使用外部图像存储增强应用程序视觉效果

在 PowerApps 中构建需要动态内容检索的应用程序(例如来自 Dynamics 365 的电子邮件)时,开发人员经常面临正确显示嵌入图像的挑战。当图像存储在外部(例如 Azure Blob 存储中)时,情况会变得更加棘手。将这些图像集成到 PowerApps 中通常涉及通过直接链接访问它们,这预先假定图像 URL 存储或在电子邮件正文中引用。然而,当图像显示为断开的链接或空帧时,此过程会遇到障碍,这表明检索或显示逻辑中出现了失误。

根本问题通常源于 PowerApps、Dynamics 365 和 Azure Blob 存储之间的身份验证和连接障碍。这些平台需要特定的凭据和配置才能无缝交互。如果没有必要的标识符(例如客户端 ID、帐户名或租户详细信息),添加 Azure Blob 存储连接器来促进此集成可能看起来令人畏惧。本介绍为探索应对这些挑战的解决方案奠定了基础,从而能够直接在 PowerApps 中无缝显示嵌入电子邮件正文中的图像,而无需全面了解底层 Azure 基础设施。

命令 描述
Connect-AzAccount 对 Azure 用户进行身份验证,允许访问 Azure 服务和资源。
Get-AzSubscription 检索管理资源的 Azure 订阅详细信息。
Set-AzContext 将当前 Azure 上下文设置为指定的订阅,从而能够针对其资源运行命令。
Get-AzStorageBlobContent 将 blob 从 Azure 存储容器下载到本地计算机。
function 定义 JavaScript 函数,即设计用于执行特定任务的代码块。
const 声明一个 JavaScript 常量,为其分配一个不会更改的字符串或对象的值。
async function 声明一个异步函数,该函数返回一个 AsyncFunction 对象并允许在其中进行异步操作。
await 暂停异步函数的执行并等待 Promise 的解析。

将 Azure 存储与 PowerApps 集成以增强图像显示

所提供的脚本中概述的过程在 PowerApps 应用程序中获取和显示存储在 Azure Blob 存储中的图像方面发挥着至关重要的作用,特别是在使用 Dynamics 365 电子邮件正文时。该脚本的第一部分使用 PowerShell 进行身份验证并连接到 Azure Blob 存储。它使用 Connect-AzAccount 命令通过服务主体对用户进行身份验证,这需要租户 ID、应用程序(客户端)ID 和机密(密码)。此步骤是基础步骤,因为它建立与 Azure 的安全连接,从而支持用户订阅中的后续操作。接下来,该脚本使用 Get-AzSubscription 和 Set-AzContext 命令检索并设置指定 Azure 订阅的上下文。此上下文对于指导脚本在正确的 Azure 资源范围内运行至关重要。

下一个关键步骤涉及使用 Get-AzStorageBlobContent 从 Azure Blob 存储检索 Blob 的内容。此命令获取 blob 内容,允许在应用程序中对其进行操作或显示。对于集成的 PowerApps 端,JavaScript 脚本概述了如何定义一个函数来构造存储在 Azure Blob 存储中的图像的 URL。这涉及将存储帐户名称、容器名称、blob 名称和 SAS 令牌组装到 URL 中。然后,可以在 PowerApps 中利用生成的 URL 将图像嵌入到 HTML 文本控件中,从而有效克服在从 Dynamics 365 获取的电子邮件正文中显示嵌入图像的限制。这种方法可确保用户可以按预期查看图像,从而增强用户体验通过在 Azure Blob 存储和 PowerApps 之间提供无缝集成。

通过 Azure 存储访问 PowerApps 中的嵌入图像

用于 Azure 身份验证的 PowerShell 脚本

$tenantId = "your-tenant-id-here"
$appId = "your-app-id-here"
$password = ConvertTo-SecureString "your-app-password" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($appId, $password)
Connect-AzAccount -Credential $credential -Tenant $tenantId -ServicePrincipal
$context = Get-AzSubscription -SubscriptionId "your-subscription-id"
Set-AzContext $context
$blob = Get-AzStorageBlobContent -Container "your-container-name" -Blob "your-blob-name" -Context $context.StorageAccount.Context
$blob.ICloudBlob.Properties.ContentType = "image/jpeg"
$blob.ICloudBlob.SetProperties()

在 Dynamics 365 电子邮件中嵌入 Azure Blob 图像以用于 PowerApps 显示

适用于 PowerApps 自定义连接器的 JavaScript

function getImageUrlFromAzureBlob(blobName) {
    const accountName = "your-account-name";
    const sasToken = "?your-sas-token";
    const containerName = "your-container-name";
    const blobUrl = `https://${accountName}.blob.core.windows.net/${containerName}/${blobName}${sasToken}`;
    return blobUrl;
}

async function displayImageInPowerApps(emailId) {
    const imageUrl = getImageUrlFromAzureBlob("email-embedded-image.jpg");
    // Use the imageUrl in your PowerApps HTML text control
    // Example: '<img src="' + imageUrl + '" />'
}
// Additional logic to retrieve and display the image
// depending on your specific PowerApps and Dynamics 365 setup

通过 Azure Blob 存储优化 PowerApps 中的图像管理

扩大围绕 Azure Blob 存储集成以在 PowerApps 中显示图像的讨论,尤其是在处理 Dynamics 365 电子邮件内容时,需要了解 Azure Blob 存储的功能和优势。 Azure Blob 存储为图像、视频和日志等大量非结构化数据提供高度可扩展、安全且经济高效的存储解决方案。这使其成为存储需要在 PowerApps 中动态显示的图像的理想平台。在 PowerApps 中显示存储在 Azure Blob 存储中的图像的过程不仅解决了 Dynamics 365 电子邮件中图像链接损坏的问题,而且还利用 Azure 强大的基础设施来增强应用程序性能和可靠性。此外,使用 Azure Blob 存储进行图像托管可以显着减少 PowerApps 和 Dynamics 365 服务器上的负载,因为图像直接从 Azure 提供,并且针对高速数据检索进行了优化。

然而,设置这种集成需要仔细考虑安全性和访问控制。 Azure Blob 存储支持细粒度的权限和访问策略,允许开发人员安全地与 PowerApps 共享图像,而不会暴露敏感数据。例如,使用共享访问签名 (SAS) 可以实现对特定 blob 的安全、限时访问,确保只有授权的 PowerApps 用户才能查看或下载图像。 Azure Blob 存储的这一方面不仅确保电子邮件中的嵌入图像在 PowerApps 中正确显示,而且还符合数据安全和隐私的最佳实践。

Azure Blob 存储和 PowerApps 集成常见问题解答

  1. 我可以在没有 Azure 订阅的情况下使用 Azure Blob 存储吗?
  2. 不需要,您需要 Azure 订阅才能使用 Azure Blob 存储,因为它是 Azure 云服务的一部分。
  3. Azure Blob 存储用于存储图像的安全性如何?
  4. Azure Blob 存储高度安全,提供传输中和静态加密,以及细粒度的访问控制以及使用共享访问签名 (SAS) 实现安全访问的能力。
  5. PowerApps 可以显示来自 Azure Blob 存储的图像而无需编码吗?
  6. 在 PowerApps 中直接显示来自 Azure Blob 存储的图像通常需要一定程度的编码或配置,例如设置自定义连接器或使用 Azure 函数生成 URL。
  7. 我是否需要知道 Azure Blob 存储帐户名称和密钥才能在 PowerApps 中显示图像?
  8. 是的,您将需要帐户名以及帐户密钥或 SAS 令牌来对 Azure Blob 存储进行身份验证和检索图像。
  9. 图像可以从 Azure Blob 存储动态加载到 PowerApps 中吗?
  10. 是的,通过使用正确的 URL 并确保您的应用程序具有访问存储的必要权限,可以将图像从 Azure Blob 存储动态加载到 PowerApps 中。

通过探索将 Azure Blob 存储与 PowerApps 集成以显示 Dynamics 365 电子邮件正文中嵌入的图像,很明显,这个过程虽然因其技术性质而看似令人畏惧,但既可行又有益。成功的关键在于了解 Azure Blob 存储的功能、保护必要的 Azure 凭据以及实现用于获取和显示图像的正确脚本。这不仅解决了 PowerApps 中参考图标损坏的问题,而且还利用 Azure 强大的云存储解决方案来实现无缝的动态内容显示。此外,集成强调了使用 Azure 安全功能(例如共享访问签名)的重要性,以确保应用程序用户可以在不影响数据安全的情况下访问图像。最终,这种集成增强了 PowerApps 中的用户体验,使其成为在 Microsoft 生态系统中工作的开发人员的宝贵努力。该过程体现了 Microsoft 各种云服务之间强大的协同作用,并为克服应用程序开发中的类似挑战提供了路线图。