gpt4 book ai didi

java - DocuSign 事件通知包括在 REST AP 上被忽略的文档

转载 作者:行者123 更新时间:2023-12-02 10:46:29 25 4
gpt4 key购买 nike

我正在尝试在 docusign 中为信封事件和收件人事件设置事件通知,但是我没有得到预期的结果。

我正在使用官方 java SDK 中的 java 模型,因此我假设这是正确的。

我的代码是:

private EventNotification createEventNotificationForRequest()
{
EventNotification eventNotification = new EventNotification();

eventNotification.setUrl(webhooksEnvelopeUpdateUrl);

envelopeEventToIncludeDocumentsMap.forEach(
(eventType, includeDocuments) ->
eventNotification.addEnvelopeEventsItem(
new EnvelopeEvent().envelopeEventStatusCode(eventType).includeDocuments(includeDocuments)));

recipientEventToIncludeDocumentsMap.forEach(
(eventType, includeDocuments) ->
eventNotification.addRecipientEventsItem(
new RecipientEvent().recipientEventStatusCode(eventType).includeDocuments(includeDocuments)));

return eventNotification;
}

这样创建的两张 map :

//We want to be notified of all events, and receive a copy of the document if it is completed
// Map<EventType, IncludedDocumentsBooleanAsString>
private static Map<String, String> envelopeEventToIncludeDocumentsMap = ImmutableMap.<String, String>builder()
.put("Completed", TRUE)
.put("Declined", FALSE)
.put("Delivered", FALSE)
.put("Sent", FALSE)
.put("Voided", FALSE)
.build();

private static Map<String, String> recipientEventToIncludeDocumentsMap = ImmutableMap.<String, String>builder()
.put("AuthenticationFailed", FALSE)
.put("AutoResponded", FALSE)
.put("Completed", FALSE)
.put("Declined", FALSE)
.put("Delivered", FALSE)
.put("Sent", FALSE)
.build();

基于此,我的预期行为是,我将通过 Webhook 在提供的每种事件类型的 url 上获取事件通知,但是当信封移至已完成的步骤时,我们还会在 Webhook 中获取已完成的文档。我们正在正常处理事件,但已完成的文档事件通知未发送到签名的 pdf 副本。

通过一个小的调整,如下所示,我可以更改 EventNotification 对象,以便它确实返回文档,但是它现在为每个事件返回文档,并且仍然忽略特定事件的 includeDocuments 字段。

private EventNotification createEventNotificationForRequest()
{
EventNotification eventNotification = new EventNotification();

eventNotification.setUrl(webhooksEnvelopeUpdateUrl);
// BELOW LINE IS CHANGE
eventNotification.includeDocuments(TRUE);

envelopeEventToIncludeDocumentsMap.forEach(
(eventType, includeDocuments) ->
eventNotification.addEnvelopeEventsItem(
new EnvelopeEvent().envelopeEventStatusCode(eventType).includeDocuments(includeDocuments)));

recipientEventToIncludeDocumentsMap.forEach(
(eventType, includeDocuments) ->
eventNotification.addRecipientEventsItem(
new RecipientEvent().recipientEventStatusCode(eventType).includeDocuments(includeDocuments)));

return eventNotification;
}

我对这种行为的预期是否错误,或者还有其他可以看到的问题吗?

请参阅下面发送的相关 JSON 片段:

  "eventNotification": {
"envelopeEvents": [
{
"envelopeEventStatusCode": "Completed",
"includeDocuments": "true"
},
{
"envelopeEventStatusCode": "Declined",
"includeDocuments": "false"
},
{
"envelopeEventStatusCode": "Delivered",
"includeDocuments": "false"
},
{
"envelopeEventStatusCode": "Sent",
"includeDocuments": "false"
},
{
"envelopeEventStatusCode": "Voided",
"includeDocuments": "false"
}
],
"recipientEvents": [
{
"includeDocuments": "false",
"recipientEventStatusCode": "AuthenticationFailed"
},
{
"includeDocuments": "false",
"recipientEventStatusCode": "AutoResponded"
},
{
"includeDocuments": "false",
"recipientEventStatusCode": "Completed"
},
{
"includeDocuments": "false",
"recipientEventStatusCode": "Declined"
},
{
"includeDocuments": "false",
"recipientEventStatusCode": "Delivered"
},
{
"includeDocuments": "false",
"recipientEventStatusCode": "Sent"
}
],
"url": "{url_here}"
}

最佳答案

不幸的是,Connect 的实现有一个错误。此时,您可以始终或永远不会在连接通知消息中接收信封的文档。

如果您使用帐户级 Connect 订阅,则解决方法是创建两个订阅,其中一个仅用于 Envelope.Completed 事件。然后仅包含后一个订阅的文档。

就您而言,您通过 eventNotification 对象使用每个信封订阅。每个信封可以恰好有零个或一个这样的订阅。

最佳实践建议:不要将信封的文档包含在事件通知中。它会导致 POST 通知非常大,并且通常在处理时出现问题(在 DocuSign 客户方面)。相反,根据需要使用通知作为触发器来获取信封的文档。

此外,请务必始终向 DocuSign 返回 200 响应。并且 Action 要快。

推荐

当事件通知到达您的服务器时,将其添加到 FIFO 可靠队列,并响应 DocuSign。

在单独的执行线程上,让一个或多个工作进程处理队列上的消息。

不推荐

当事件通知到达您的服务器时,同步处理它。处理完毕后,回复 DocuSign。

随着您的容量增加,这种模式将导致大问题,导致服务器丢弃通知、重新发送导致延迟等。您不想去那里......

关于java - DocuSign 事件通知包括在 REST AP 上被忽略的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52521754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com