【问题标题】:Send Envelope Using a Template Replacing Signer Name and Email使用替换签名者姓名和电子邮件的模板发送信封
【发布时间】:2019-07-12 07:10:41
【问题描述】:

我们使用 DocuSign 向业务合作伙伴请求签名。 对于每个campaing,我们在DocuSign 中创建一个模板,其中包含所需的文件和放置在这些文件中的SignHere 选项卡(签署地点)。并且这些 SignHere 选项卡与模板中定义的 Signer 相关联。

当我们准备将文件发送给用户签名(信封)时,我们希望使用上述模板。但是每个信封的签名者的姓名和电子邮件都应该改变。

我们尝试过(假设我们这里提供的模板有一个签名者,角色为Partner)

  1. 提供模板角色

        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. 使用复合模板

        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 做到这一点?

谢谢。

【问题讨论】:

  • 请阅读how to ask 并相应地编辑您的问题。目前,任何人都不太可能真正了解您的问题所在。
  • @FeRaaC 检查更新的问题。

标签: c# .net templates sdk docusignapi


【解决方案1】:

当您在 DocuSign 中创建模板时,您有两种类型的收件人: 1. 固定收件人,用用户/邮箱定义。 2. 占位符。这些只有一个“角色名称”,但没有填写电子邮件和姓名。必须在发送信封之前更新它们,否则您会收到错误消息。

我怀疑(不确定)您的信封使用的是#1 类型的收件人。您的用例表明您需要 #2。

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

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

(对于这个简单的案例,不需要使用复合模板)

【讨论】:

  • 从模板中删除收件人的姓名和电子邮件后,我们可以在创建信封时设置它。因此,如果未设置模板收件人的姓名和电子邮件,则我的问题中的第一个代码示例有效。谢谢你的解释。
【解决方案2】:

这是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";

【讨论】:

  • 感谢您的评论,但这正是我所做的(参见问题中的代码)但没有奏效。问题出在模板中。检查接受的答案。
猜你喜欢
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
相关资源
最近更新 更多