如何在使用TemplateId的Docusign .NET项目中添加签署见证人
在使用DocuSign模板ID创建信封时添加见证人的解决方案
当你基于DocuSign模板ID创建信封时,API确实不允许同时指定TemplateId和Recipients属性,必须通过TemplateRoles来管理收件人。要添加见证人,有两种可行方案:
方案一:在模板中预先配置见证人角色
- 登录DocuSign UI,打开目标模板,添加一个见证人角色(这是特殊收件人类型,并非普通签署角色)。
- 在代码中通过
TemplateRole指定该见证人的信息,逻辑与处理签署人一致:
// 配置签署人 TemplateRole signer = new TemplateRole { Email = "example@mail.com", Name = "David", RoleName = "Guarantor", Tabs = tabs, }; // 配置见证人(角色名需与模板中配置的完全一致) TemplateRole witness = new TemplateRole { Email = "witness@mail.com", Name = "John Witness", RoleName = "Witness", }; List<TemplateRole> templateRoles = new List<TemplateRole> { signer, witness }; EnvelopeDefinition env = new EnvelopeDefinition { TemplateId = templateId, Status = envStatus, TemplateRoles = templateRoles, };
方案二:使用复合模板(Composite Templates)无需修改原模板
如果不想改动现有模板,可以通过复合模板结合原模板和额外的收件人配置:
// 原模板的签署人角色配置 TemplateRole signer = new TemplateRole { Email = "example@mail.com", Name = "David", RoleName = "Guarantor", Tabs = tabs, }; // 构建复合模板 CompositeTemplate compositeTemplate = new CompositeTemplate(); compositeTemplate.TemplateId = templateId; // 内联模板整合模板角色与见证人 compositeTemplate.InlineTemplates = new List<InlineTemplate> { new InlineTemplate { Recipients = new Recipients { TemplateRoles = new List<TemplateRole> { signer }, Witnesses = new List<Witness> { new Witness { Email = "witness@mail.com", Name = "John Witness", RecipientId = "2", RoutingOrder = "2" // 设置见证顺序,确保在签署人完成后触发 } } } } }; EnvelopeDefinition env = new EnvelopeDefinition { Status = envStatus, CompositeTemplates = new List<CompositeTemplate> { compositeTemplate } };
注意事项
- 见证人是DocuSign专属的收件人类型,不能用普通
Signer角色替代,需确保类型匹配。 - 使用复合模板时,通过
RoutingOrder控制流程顺序,避免见证环节提前触发。
内容的提问来源于stack exchange,提问作者Pranavan
相关产品推荐
相关产品推荐

