我们使用DocuSign向业务合作伙伴请求签名。 对于每个露营,我们在DocuSign中创建一个模板,其中包含必需的文档以及在这些文档中放置的SignHere选项卡(签名位置)。并且这些SignHere选项卡与模板中定义的Signer相关。
当我们准备将文档发送给用户签名(信封)时,我们想使用上面的模板。但对于每个信封,签名人的姓名和电子邮件都应更改。
我们已经尝试过(假设我们在此处提供的模板的签名者为合作伙伴)
提供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);
使用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做到这一点?
谢谢。
答案 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";