我想在Salesforce上公开Apex类作为公共Web服务,并在DocuSignAPI.EventNotification中将其配置为“已完成”或“已签名”事件的回调URL。 任何人都可以指点我的示例代码吗?
答案 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()只是您可以使用它做的一个示例。在这种情况下,它将整个请求保存为自定义对象上的附件。但是,一般情况下,您可以根据需要处理内容。