如何将Apex类设置为Salesforce Web服务,以便将其用作DocuSign的EventNotification的回调URL?

时间:2014-12-10 16:59:35

标签: salesforce apex-code docusignapi

我想在Salesforce上公开Apex类作为公共Web服务,并在DocuSignAPI.EventNotification中将其配置为“已完成”或“已签名”事件的回调URL。 任何人都可以指点我的示例代码吗?

1 个答案:

答案 0 :(得分:0)

我认为有几种方法可以解决这个问题。我之前在原型中提到的一个就是抓住DocuSign的Connect更新内容。在这种情况下,我必须创建一个站点,然后在Salesforce中创建一个REST服务:

@RestResource(urlMapping='/FlexibleConnectListener')
global with sharing class FlexibleConnectListener {
    @HttpPost
    global static String connectUpdate() {
        RestRequest req = RestContext.request;
        Blob body = req.requestBody;

        Id id = saveUpdate(body);

        String bodyString = body.toString();        
        XMLDom dom = new XMLDom(bodyString);
        List<XMLDom.Element> els = dom.root.getElementsByPath('/DocuSignEnvelopeInformation/EnvelopeStatus/Status');

        return 'Connect update successful.  Status=' + els[0].nodeValue;
    }

    static Id saveUpdate(Blob body) {
        ConnectUpdate__c u = new ConnectUpdate__c();
        insert u;
        Id updateId = u.Id;

        Attachment a = new Attachment();
        a.Body = body;
        a.ParentId = u.Id;
        a.ContentType = 'text/xml';
        a.Name = 'Connect Blob';
        insert a;

        return updateId;
    }
}

connectUpdate()方法用于接收Connect消息,saveUpdate()只是您可以使用它做的一个示例。在这种情况下,它将整个请求保存为自定义对象上的附件。但是,一般情况下,您可以根据需要处理内容。