我正在使用Azure Functions在各种系统之间构建一些集成 . 我的新要求是响应Salesforce中的记录更新 . 一些快速的研究产生了Salesforce方面看起来很好的解决方案 . 使用可以在记录修改时发送SOAP请求的出站消息传递 .
How to create Salesforce application that will send record to external web service when record created/changed (https://salesforce.stackexchange.com/questions/73425/how-to-create-salesforce-application-that-will-send-record-to-external-web-servi)
现在的挑战是能够在Azure功能中创建SOAP侦听器 . 我为其他听众创建了基本的HTTP触发器 . Azure函数是否有“内置”功能可以让我轻松使用传入的SOAP请求?
Salesforce具有基于更传统的Web服务和ASMX文件的解决方案的基础知识,但我不确定是否或如何在Azure功能中应用它 . (https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_om_outboundmessaging_listener.htm)
1 回答
该通知只是通过HTTP发出的SOAP请求,因此与常规HTTP触发器请求实际上没有太大区别 .
虽然您可以将其视为普通请求并自行解析内容,但Azure Functions确实公开了我们从ASP.NET WebHooks获得的出色WebHook支持,幸运的是,有一个Salesforce receiver可以显着简化此任务 .
DISCLAIMER: 它's worth noting that although the receiver is technically enabled in Azure Functions, there'尚未获得官方支持,因此您将找不到大量文档,并且帮助仅限于您在SO和论坛上获得的内容 . 希望这个和其他接收器的官方支持很快就会到来,这意味着可以获得文档,模板和UI支持 .
要开始使用,您需要以下内容:
创建一个新函数,选择 GenericWebHook - CSharp 模板(这也适用于节点,但我会在这里专注于C# .
按照ASP.NET WebHooks integration with Salesforce post中列出的步骤创建出站邮件 . 在这里你想使用门户网站_819049给你的 Function Url (代码不会受到伤害,但是接收者不会使用这些信息) .
IMPORTANT :获取将用于身份验证的Salesforce组织ID,位于 Administer > Company Profile > Company Information > Salesforce.com Organization ID 下,然后返回Azure功能门户,打开 Keys 面板,删除 default 功能键(不是主机密钥)并创建一个名为的新密钥 default (此名称很重要)使用您从Salesforce获得的组织ID值 .
转到 Integrate
在集成页面上,选择右上方的 Advanced Editor (如上所述,'s no official support, so the UI does not expose this. We'重新放入我们的资源管理器帽子,并在此处冒险进入更高级的工作流程:))
将
webHookType
属性值更改为sfsoap
并保存配置 . 您的function.json配置应如下所示:function.json:
这是ASP.NET WebHooks接收器闪耀的地方!它将为您解析通知,公开您可以使用的强类型对象 . 您需要做的就是修改模板使用
SalesforceNotifications
类型的方法/函数签名,确保引用所需的程序集(Microsoft.AspNet.WebHooks.Receivers.Salesforce
,可供您使用,因此不需要包引用)和命名空间参考(Microsoft.AspNet.WebHooks
) .以下是将接收请求并记录组织ID,操作ID,获取第一个通知并记录其所有属性的函数的完整示例:
当接收器得到官方支持时,这个过程会更顺畅,但即使添加了步骤,这仍然需要自己解析SOAP消息:)
我希望这有帮助!