首页 文章

使用Azure功能构建SOAP侦听器

提问于
浏览
3

我正在使用Azure Functions在各种系统之间构建一些集成 . 我的新要求是响应Salesforce中的记录更新 . 一些快速的研究产生了Salesforce方面看起来很好的解决方案 . 使用可以在记录修改时发送SOAP请求的出站消息传递 .

How to create Salesforce application that will send record to external web service when record created/changedhttps://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 回答

  • 9

    该通知只是通过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:

    {
      "bindings": [
        {
          "type": "httpTrigger",
          "direction": "in",
          "webHookType": "sfsoap",
          "name": "req"
        },
        {
          "type": "http",
          "direction": "out",
          "name": "res"
        }
      ],
      "disabled": false
    }
    
    • 切换到 Develop 选项卡 . 我们准备编写代码了 .

    这是ASP.NET WebHooks接收器闪耀的地方!它将为您解析通知,公开您可以使用的强类型对象 . 您需要做的就是修改模板使用 SalesforceNotifications 类型的方法/函数签名,确保引用所需的程序集( Microsoft.AspNet.WebHooks.Receivers.Salesforce ,可供您使用,因此不需要包引用)和命名空间参考( Microsoft.AspNet.WebHooks ) .

    以下是将接收请求并记录组织ID,操作ID,获取第一个通知并记录其所有属性的函数的完整示例:

    #r "Microsoft.AspNet.WebHooks.Receivers.Salesforce"
    using Microsoft.AspNet.WebHooks;
    
    public static void Run(SalesforceNotifications req, TraceWriter log)
    {
        log.Info($"Salesforce webhook was triggered!");
    
        log.Info(req.OrganizationId);
        log.Info(req.ActionId);
    
        var notification = req.Notifications.First();
    
        foreach (var p in notification.Keys)
        {
            log.Info($"{p} = {notification[p]}");
        }
    }
    

    当接收器得到官方支持时,这个过程会更顺畅,但即使添加了步骤,这仍然需要自己解析SOAP消息:)

    我希望这有帮助!

相关问题