首页 文章

Docusign:有没有办法在“已创建”状态下创建信封,然后在以后将其放入“发送”?

提问于
浏览
0

我希望能够创建一个信封,然后将链接通过电子邮件发送给签名人。我想出的代码段是:

EnvelopesApi envelopesApi = new EnvelopesApi();

        envDef.Status = "sent";
        EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(accountId, envDef);

        RecipientViewRequest viewOptions = new RecipientViewRequest()
        {
            ReturnUrl = "https://www.docusign.com/devcenter", 
            ClientUserId = signer.ClientUserId,
            AuthenticationMethod = "email",
            UserName = signer.Name,
            Email = signer.Email // does NOT send an email
        };

        ViewUrl recipientView = envelopesApi.CreateRecipientView(accountId, envelopeSummary.EnvelopeId, viewOptions);

该段之前的代码将获得帐户,签署者的信封定义等。

如果我设置 envDef.Status =“ sent”,则此代码可以正常工作。如果未设置该状态,则将从该段的最后一行代码中获取异常。

我只想让信封进入创建状态,然后获取 URL 并以我自己的代码发送电子邮件,该代码可以中继电子邮件。

或者,我可以提供电子邮件地址并让 Docusign 发送电子邮件吗?但是,在这种情况下,如果他们的电子邮件由于某种原因失败了怎么办?

最重要的是,我想一种方法来处理如果电子邮件发送失败会如何 re-send 链接的问题。

2 回答

  • 1

    重新陈述您的目标:

    我只想让信封进入创建状态,然后获取 URL 并以我自己的代码发送电子邮件,该代码可以中继电子邮件。

    不建议使用这种方法,因为您通过CreateRecipientView获得的 URL 将在很短的时间内超时(我相信是 5 分钟)。换句话说,如果收件人没有打开您发送给他们的电子邮件,然后单击链接以在该时间段内启动其签名会话,则该链接将变为无效,并且他们将无法使用它来访问其签名会话。

    建议您仅指定收件人的信息(姓名,电子邮件,etc.)作为信封定义的一部分),而不是使用CreateRecipientView,然后 DocuSign 将向收件人发送一封电子邮件,其中包含可用于访问其信封的链接。该链接有效期为几天(不是几分钟,就像您通过CreateRecipientView生成的链接一样),因此不要求签名者立即对其进行操作。如果由于某种原因,收件人放错了位置或没有收到 DocuSign 发送的电子邮件,它们,您可以通过使用 DocuSign Web UI 或通过使用指定了resendEnvelope=trueUpdateRecipient API 操作(如弗雷德里克在其回答中所述)轻松地将 DocuSign re-send 通知电子邮件。


    更新#1

    无法检索收件人可以用来发起其签名会话的 long-lived 链接。解决您的方案的常用方法如下:

    • 向签署者发送一封电子邮件,其中包含一个链接,可将其引导到您构建的网页-并指示他们**当他们准备 review/sign document(s)**时单击该链接以启动其信封。 (链接 URL 需要包含某种查询字符串参数,您的网页可以使用该参数来识别信封和 Recipient.)

    • 设计您的网页,使其在收到入站请求时(就像收件人单击您发送给他们的电子邮件中的链接时一样),将使用 querystring 参数中的信息来标识信封和收件人,然后发出CreateRecipientView请求检索将启动该收件人的签名会话的 URL,最后自动将用户重定向到CreateRecipientView响应返回的 URL,从而为 review/sign/submit 打开收件人的信封。

    通过执行类似的过程,您就可以 craft/send 收件人收到的电子邮件(而不是依靠 DocuSign 这样做),并且可以确保仅在用户指示他们收到邮件时才检索信封 URL。重新签名(以免 short-lived 链接在使用前失效)。


    更新#2

    有关如何使用 DocuSign C#SDK 向EnvelopeDefinition对象添加 recipient(s 的示例,请参见此“ 食谱”-具体来说,请参见requestSignatureOnDocumentTest方法中的代码。基本上是一个 two-step 流程:

    1. 定义每个收件人。例如:
    // Add a recipient to sign the documeent
    Signer signer = new Signer();
    signer.Email = recipientEmail;
    signer.Name = recipientName;
    signer.RecipientId = "1";
    
    1. 用您创建的 recipient(s 填充EnvelopeDefinition对象的Recipients属性。例如:
    envDef.Recipients = new Recipients();
    envDef.Recipients.Signers = new List<Signer>();
    envDef.Recipients.Signers.Add(signer);
    
  • 0

    我将尝试回答您的两个问题:

    1. 最重要的是,我想一种方法来处理如果电子邮件发送失败会如何 re-send 链接的问题。

    为了 re-send 将 DocuSign 电子邮件发送给收件人,您可以使用UpdateRecipient()方法(请参见下面的 C#示例)。这将 re-trigger 将签名电子邮件再次发送给交易接收者:

    RecipientsUpdateSummary recipientsUpdateSummary = 
                    envelopeApi.UpdateRecipients(
                        accountId, 
                        envelope.EnvelopeId, 
                        envelope.Recipients, 
                        new EnvelopesApi.UpdateRecipientsOptions { resendEnvelope = "true" });
    

    官方文件的状态如下:

    在此处输入图片说明

    1. 有没有一种方法可以在“已创建”状态下创建信封,然后在以后将其放入“发送”状态?

    对的,这是可能的。创建信封时,请确保指定“已创建”状态,如下所示:

    Status = "created"
    

    创建您的信封:

    envelopeApi.CreateEnvelope(accountId, envelope);
    

    然后,准备就绪后,将信封状态更改为“已发送”。这将触发发送给收件人的电子邮件。瞧!

    Envelope updatedEnvelope = new Envelope
                {
                    Status = "sent"
                };
                envelopeApi.Update(
                    accountId,
                    envelopeId,
                    updatedEnvelope);
    

相关问题