使用替换签名者姓名和电子邮件的模板发送信封

时间:2019-07-12 07:10:41

标签: c# .net templates sdk docusignapi

我们使用DocuSign向业务合作伙伴请求签名。 对于每个露营,我们在DocuSign中创建一个模板,其中包含必需的文档以及在这些文档中放置的SignHere选项卡(签名位置)。并且这些SignHere选项卡与模板中定义的Signer相关。

当我们准备将文档发送给用户签名(信封)时,我们想使用上面的模板。但对于每个信封,签名人的姓名和电子邮件都应更改。

我们已经尝试过(假设我们在此处提供的模板的签名者为合作伙伴)

  1. 提供TemplateRoles

        var envelope = new EnvelopeDefinition
        {
            TemplateId = "...",
            TemplateRoles = new List<TemplateRole>
            {
                new TemplateRole
                {
                    RoleName = "Partner",
                    Name = "John Doe",
                    Email = "jd@x.com",
    
                }
            },
            EmailSubject = "...",
            Status = "created"
        };
    
        var result = await envelopeApi.CreateEnvelopeAsync(accountId, envelope); 
    
  2. 使用CompositeTemplate

        var envelope = new EnvelopeDefinition
        {
            CompositeTemplates = new List<CompositeTemplate>
            {
                new CompositeTemplate
                {
                    ServerTemplates = new List<ServerTemplate>
                    {
                        new ServerTemplate
                        {
                            TemplateId = templateId,
                            Sequence = "1",
                        }
                    },
                    InlineTemplates = new List<InlineTemplate>
                    {
                        new InlineTemplate
                        {
                            Sequence = "2",
                            Recipients = new Recipients
                            {
                                Signers = new List<Signer>
                                {
                                    new Signer
                                    {
                                        RoleName = "Partner",
                                        Name = "John Doe",
                                        Email = "jd@x.com",
                                        RecipientId = "1"
    
                                    }
                                }
                            }
                        }
                    }
                }
            },
            EmailSubject = "...",
            Status = "created"
        };
    
        var result = await envelopeApi.CreateEnvelopeAsync(accountId, envelope); 
    

但是在两种情况下,它都不会更新名称和电子邮件,但会向信封中添加一个新的签名者以及模板中现有的签名者。 (这不是我们想要的)。

如何使用.Net SDK做到这一点?

谢谢。

2 个答案:

答案 0 :(得分:2)

在DocuSign中创建模板时,您有两种类型的收件人: 1.固定收件人,由用户/电子邮件定义。 2.占位符。这些仅具有“ RoleName”,但未填充电子邮件和名称。在发送信封之前,必须先对它们进行更新,否则会出错。

我怀疑(不确定)您的信封使用的是第一类收件人。您的用例建议您需要#2。

使用#2,必须确保RoleName与模板中的完全相同(区分大小写)。 然后,您要做的就是从模板创建信封,并在API调用(PUT)中提供收件人以更新收件人。

是的,您可以从C#代码中执行此操作。 EnvelopeDefinition类还具有一个TemplateId,您可以使用它来传递用于创建信封的模板以及将传递给收件人的TemplateRoles。

(在这种简单情况下,无需使用复合模板)

答案 1 :(得分:0)

这里是C# example of setting a template's role to someone

EnvelopeDefinition env = new EnvelopeDefinition();
env.TemplateId = templateId;

TemplateRole signer1 = new TemplateRole();
signer1.Email = signerEmail;
signer1.Name =  signerName;
signer1.RoleName = "signer";

TemplateRole cc1 = new TemplateRole();
cc1.Email = ccEmail;
cc1.Name = ccName;
cc1.RoleName = "cc";

env.TemplateRoles = new List<TemplateRole> { signer1, cc1 };
env.Status = "sent";