C#调用API发送含Pre-Filled/Sender标签的模板时预填值、签名区异常
解决方案
问题1:预填充标签内容未写入的修复
错误原因
Sender/Pre-Filled标签属于发件人预填充字段,不归属任何签署者角色,你将PrefillTabs放在了签署人角色(TemplateRole)的Tabs下,绑定位置错误导致填充失效。
修复要点
- 预填充标签需要配置在信封级的文档标签中,建议通过
CompositeTemplates结构关联模板时注入,是官方推荐的标准实现方式 - 确认
TabLabel的值与模板中预填充标签的标签名称完全匹配,大小写、特殊字符均不能有差异 - 确认
DocumentId与模板中对应文档的ID一致,单文档模板默认值为1,多文档场景需要逐一对应
问题2:SignHere签名字段不可见的修复
修复要点
- 修正
TemplateRole的Name字段赋值错误:你当前代码中将Name设置为了signer.Email,该字段应填写签署人的真实姓名 - 确认
TemplateRole的RoleName参数值与模板中配置的签署者角色名称完全一致,大小写、空格都需要严格匹配 - 确认模板中的
SignHere字段已分配给对应RoleName的签署角色,未分配或分配错角色会导致字段无法绑定到当前签署人,自然不可见 - 检查模板中
SignHere字段的配置,确认未设置隐藏、条件显示等特殊规则
修正后代码示例
var env = new EnvelopeDefinition { Status = "sent" }; // 用复合模板结构关联现有模板,同时注入预填充字段和签署人配置 var compositeTemplate = new CompositeTemplate { CompositeTemplateId = "1", ServerTemplates = new List<ServerTemplate> { new ServerTemplate { TemplateId = templateId, Sequence = "1" } }, InlineTemplates = new List<InlineTemplate> { new InlineTemplate { Sequence = "2", // 预填充字段配置在文档级Tabs下 Documents = new List<Document> { new Document { DocumentId = "1", Tabs = new Tabs { PrefillTabs = new PrefillTabs { TextTabs = new List<Text> { new Text { DocumentId = "1", TabLabel = "business-details.BusinessInformation.BusinessName", Value = "PreFill: BusinessName" } } } } } }, // 配置签署人信息 Recipients = new Recipients { Signers = new List<Signer> { new Signer { Email = signer.Email, Name = signer.FullName, // 替换为签署人真实姓名 RoleName = templateRoleName, RecipientId = "1" // 签署人专属的可编辑字段可放在此处的Tabs属性下,不要放PrefillTabs } } } } } }; env.CompositeTemplates = new List<CompositeTemplate> { compositeTemplate }; // 发送信封 await envelopesApi.CreateEnvelopeAsync(accountId, env);
内容的提问来源于stack exchange,提问作者Zeeshan
相关产品推荐
相关产品推荐

