如何通过DocuSign API/SDK为模板PrefillTabs设值并发起签署
如何为DocuSign模板中的PrefillTabs设置值并发送信封
我在DocuSign中存储了一个使用预填充工具(Pre-fill Tools)的模板,其中包含若干标签。
我可以通过DocuSign SDK获取TemplateTabs:
Tabs dsTabs = TemplatesApi.GetDocumentTabs(DSAccountId, DSTemplateId);
上述DocuSign SDK会返回所有标签,可通过dsTabs.PrefillTabs访问PrefillTabs。
由于PrefillTabs不属于任何特定收件人,如何为这些PrefillTabs设置值并通过EnvelopeApi.CreateEnvelope(DSAccountId, envelopeDefinition)发送模板以进行电子签署?
例如,我的DocuSign模板中已添加并定位了公司预填充工具(Company Pre-Fill Tools),如何为SenderCompany标签预填充值并发送模板进行电子签署?
我的示例代码如下:
// My Sample EnvelopeDefinition private EnvelopeDefinition CreateEnvelopeDefinition(string templateId) { EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition(); envelopeDefinition.TemplateId = templateId; envelopeDefinition.EmailSubject = "PreFill Tabs Test Document"; envelopeDefinition.EmailBlurb = "PreFill Tabs Email Blurb for Testing"; envelopeDefinition.TemplateRoles = TemplateSigner(); envelopeDefinition.Status = "sent"; return envelopeDefinition; }
private static List<TemplateRole> TemplateSigner() { List<TemplateRole> templateRoleList = new List<TemplateRole>(); TemplateRole signer1 = new TemplateRole() { RoleName = "Contributor", Name = "Sample1", Email = "sample1@test.com", }; TemplateRole signer2 = new TemplateRole() { RoleName = "Payroll Manager", Name = "Sample2", Email = "sample2@test.com" }; TemplateRole signer3 = new TemplateRole() { RoleName = "Administrator", Name = "Sample3", Email = "sample3@test.com" }; templateRoleList.Add(signer1); templateRoleList.Add(signer2); templateRoleList.Add(signer3); return templateRoleList; }
private static Tabs SetPreFillTabValues() { SenderName fullName = new SenderName() { TabLabel = "Signer1Name", Value = "Adam" }; SenderCompany senderCompany = new SenderCompany() { TabLabel = "CompanyTab1", Value = "ABC" }; Text text1 = new Text() { TabLabel = "TextTab1", Value = "Text1Val" }; Text text2 = new Text() { TabLabel = "TextTab2", Value = "Text2Val" }; PrefillTabs prefillTabs = new PrefillTabs() { SenderNameTabs = new List<SenderName> { fullName }, SenderCompanyTabs = new List<SenderCompany> { senderCompany }, TextTabs = new List<Text> { text1, text2 } }; Tabs tabs = new Tabs() { PrefillTabs = prefillTabs, }; return tabs; }
解决方案
PrefillTabs属于整个信封而非单个收件人,因此直接将预填充标签集合赋值给EnvelopeDefinition的Tabs属性即可,无需关联到某个TemplateRole。修改你的CreateEnvelopeDefinition方法,添加预填充标签的绑定逻辑:
private EnvelopeDefinition CreateEnvelopeDefinition(string templateId) { EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition(); envelopeDefinition.TemplateId = templateId; envelopeDefinition.EmailSubject = "PreFill Tabs Test Document"; envelopeDefinition.EmailBlurb = "PreFill Tabs Email Blurb for Testing"; envelopeDefinition.TemplateRoles = TemplateSigner(); // 将预填充标签绑定到信封 envelopeDefinition.Tabs = SetPreFillTabValues(); envelopeDefinition.Status = "sent"; return envelopeDefinition; }
关键注意事项
- 确保
SetPreFillTabValues中定义的TabLabel与模板里预填充标签的标签名完全一致,否则无法匹配填充。 - 预填充值会在信封创建时直接写入文档,收件人打开后将看到已填充完成的内容。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

