从 Microsoft Dynamics 365 CRM 在线调用外部 API

Call external API from Microsoft Dynamics 365 CRM online

提问人:Mathee 提问时间:11/15/2023 最后编辑:Arun Vinoth-Precog Tech - MVPMathee 更新时间:11/15/2023 访问量:58

问:

我想在 CRM 帐户和联系人上调用地址验证 API(绿色 ID)。 在两个触发点中,有两种 API POST 方法可以调用, 1 - 当标志字段(准备验证)更改为 true 时,需要调用 Basic_Verification() 2 - 当用户手动单击窗体上的功能区按钮时,需要调用 Specific_Addr_Verification() (PowerApps 窗体命令)

这是一个 SOAP API,在调用 API POST 方法时,我必须使用客户/联系人记录详细信息构建 SOAP 消息正文。

我不确定开发此功能的理想方式是什么。我正在考虑的选项如下:

  1. 创建自定义 API 和 MS Flow (Power Automate) 以调用 API。然后使用操作、power fx row update 或通过 javascript 触发流。请针对上述两种情况分别提出最佳方法。
  2. 在 Power Automate 中创建 HTTP 请求,并在行更新时触发该请求
  3. 在按钮单击和表单字段更新事件时使用 javascript 函数 (webresource) 直接调用 API
  4. 自定义插件触发事件,c#代码发送web请求

否则,请为此方案提出任何其他合适的实现方法。

Power-Automate Dynamics-CRM-365

评论


答:

1赞 Arun Vinoth-Precog Tech - MVP 11/15/2023 #1

解决方案没有对错之分。根据您的要求/可重用性需求,所有这些都是合适的可行选项 - 建议采用一种或另一种方法。

我将解释我们最近做了什么,我们有一些企业级 Mulesoft API,我们围绕该 API 开发了自定义连接器。因此,现在所有 CRM 开发团队都可以根据自己的需求在其流中使用该连接器。即使需要,也可以从 JS Web 资源调用 Flow。

基本上,这是每个级别的标准最佳实践,因此以后可以合理化。会有一些意见,这是矫枉过正。

1赞 Andrew Butenko 11/15/2023 #2

我多次构建了类似的功能,以下架构对我来说总是很好:

  1. 使用接受地址的输入和返回验证结果的输出创建操作/自定义 API。
  2. 开发基于提供的输入执行验证的插件,并将其绑定到您在上一步中创建的操作/自定义 API。
  3. 创建一个 JavaScript,用于处理从按钮调用新操作/自定义 API 的地址字段/按需调用的更改,并使用结果。

将 Web 服务调用放入 Action 的一件很酷的事情是可重用性 - 可以在任何需要的地方使用相同的机制 - 从 JS 代码、其他插件/工作流,最后从外部应用/集成,很好的例子是 Power Automate Flow。

评论

0赞 Mathee 11/16/2023
嗨,安德鲁,非常感谢您的回答。澄清一下,用这种方法编写的实际 API 请求在哪里?它是否作为 HTTP 请求在插件代码中?这是否意味着SOAP请求的创建是通过插入输入参数作为字符串连接工作完成的?是否有更好的方法来使用 MS Flow 或 Power Automate 创建 SOAP 请求?
0赞 Andrew Butenko 11/16/2023
此方法中对外部 API 的调用将驻留在 Action/Custom API 后面的插件中。