Docusign:有没有办法在“创建”中创建一个信封。状态,然后把它放入'发送'后来?

时间:2018-02-06 16:35:28

标签: c# docusignapi

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

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 ="发送"此代码可以正常工作。如果我没有设置该状态,我会从该段的最后一行代码中获得异常。

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

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

最重要的是,如果电子邮件无法发送,我想要一种方法来解决如何重新发送链接的问题。

2 个答案:

答案 0 :(得分:1)

重申你的既定目标:

  

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

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

我建议您只是将收件人的信息(姓名,电子邮件等)指定为信封定义的一部分,而不是使用CreateRecipientView,然后DocuSign会向收件人发送包含链接的电子邮件他们可以用来访问他们的信封。此链接将在几天内有效(不是分钟,例如您通过CreateRecipientView自行生成的链接),因此不要求签名者立即对其进行操作。如果由于某种原因收件人错放或未收到DocuSign发送的电子邮件,您可以通过使用DocuSign Web UI或使用UpdateRecipient API操作轻松让DocuSign重新发送该电子邮件通知。 1}}指定(正如弗雷德里奇在他的回答中所描述的那样)。

更新#1

无法检索收件人可用于启动签名会话的长期链接。解决您的方案的常用方法如下:

  • 向签名者发送一封电子邮件,其中包含指向您构建的网页的链接,以及指示他们在准备好的时候点击该链接以启动其信封 的说明审核/签署文件 。 (链接URL需要包含某种查询字符串参数,您的网页可用于识别信封和收件人。)

  • 设计您的网页,以便在收到入站请求时(就像收件人点击您发送的电子邮件中的链接一样),它会使用查询字符串参数中的信息来识别信封和收件人然后发出resendEnvelope=true请求以检索将启动该收件人签名会话的URL,最后自动将用户重定向到CreateRecipientView响应返回的URL,从而打开收件人的信封审查/符号/提交。

通过遵循此类流程,您可以制作/发送收件人收到的电子邮件(而不是依赖DocuSign这样做),并且可以确保您每次只检索信封URL表示他们已准备好签名(从而避免短期链接在使用之前到期的可能性)。

更新#2

有关如何使用DocuSign C#SDK将收件人添加到CreateRecipientView对象的示例,请参阅此“recipe” - 具体来说,请参阅{{3}中的代码} 方法。这基本上分为两个步骤:

1)定义每个收件人。例如:

EnvelopeDefinition

2)使用您创建的收件人填充// Add a recipient to sign the documeent Signer signer = new Signer(); signer.Email = recipientEmail; signer.Name = recipientName; signer.RecipientId = "1"; 对象的Recipients属性。例如:

EnvelopeDefinition

答案 1 :(得分:0)

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

1)最重要的是,如果电子邮件无法发送,我想要一种方法来解决如何重新发送链接的问题。

为了将DocuSign电子邮件重新发送给收件人,您可以使用UpdateRecipient()方法(请参阅下面的C#示例)。这将重新触发签名电子邮件再次发送给交易收件人:

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

以下是official documentation陈述的内容:

enter image description here

2)有没有办法在'创建'中创建信封?状态,然后把它放入'发送'以后?

是的,有可能。 创建信封时,请务必指定"创建"状态如下:

Status = "created"

创建信封:

envelopeApi.CreateEnvelope(accountId, envelope);

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

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