如何在信封中包含多个模板?
How can I include multiple templates in an envelope?
我无法弄清楚如何使用 DocuSign C# SDK 在信封内发送多个填充的 DocuSign 模板。我能够在信封中填充和发送单个模板,但无法使用多个模板执行此操作。
这是我使用的成功填充和发送模板的代码片段:
var rolesList = new List<TemplateRole>();
var tRole = new TemplateRole
{
Tabs = new Tabs(),
RoleName = "rolename"
};
tRole.Name = "joe smith";
tRole.Email = "email-address";
var tabData = new List<Text>();
// Populate the tabData
tRole.Tabs.TextTabs = tabData;
rolesList.Add(tRole);
var envDef = new EnvelopeDefinition
{
EmailSubject = "Pleae sign this",
TemplateRoles = rolesList,
TemplateId = "first template id",
Status = "sent",
};
var envelopesApi = new EnvelopesApi();
await envelopesApi.CreateEnvelopeAsync("accountId", envDef);
对于多个模板,我假设我需要使用 CompositeTemplate,所以我尝试了以下代码:
var envDef = new EnvelopeDefinition
{
EmailSubject = subject,
TemplateRoles = roles,
Status = send? "sent" : "created",
};
var compositeTemplate = new CompositeTemplate()
{
ServerTemplates = new List<ServerTemplate>(),
CompositeTemplateId = Guid.NewGuid().ToString(),
};
envDef.CompositeTemplates = new List<CompositeTemplate>();
envDef.CompositeTemplates.Add(compositeTemplate);
ServerTemplate first = new ServerTemplate()
{
TemplateId = "first template id",
Sequence = "1"
};
ServerTemplate second = new ServerTemplate()
{
TemplateId = "second template id",
Sequence = "2",
};
compositeTemplate.ServerTemplates.Add(first);
compositeTemplate.ServerTemplates.Add(second);
var envelopesApi = new EnvelopesApi();
await envelopesApi.CreateEnvelopeAsync("accountId", envDef);
但是,对于此代码,CreateEnvelopeAsync 调用会抛出以下异常:
DocuSign.eSign.Client.ApiException:调用 CreateEnvelope 时出错:{
"errorCode": "ENVELOPE_IS_INCOMPLETE",
"message": "The Envelope is not Complete. A Complete Envelope Requires Documents, Recipients, Tabs, and a Subject Line."
}
我显然没有正确配置 CompositeTemplate(很可能没有填充文档),但我似乎找不到关于如何正确填充它的示例。
由于您的两个服务器模板相互独立,我相信您希望创建一个包含两个复合模板的数组。每个复合模板项将包含一个服务器模板。
请参阅 this example. 的第 93 行及以下行 该示例发送一个包含
的信封
- 来自 DocuSign 的模板 ("server template")
- 本地创建的 HTML 源文档。
对于您的情况,请重复添加项目 1 而不是现有项目 2 的方式。
关键是两个不同的复合模板项,而不是一个复合模板项中的两个服务器模板。
您不应在同一信封定义中混合使用 TemplateRole 和 CompositeTemplate,因为两者是不同的设计策略。
正如 Larry 所建议的,如果您想从两个不同的模板中添加要添加到信封中的文档,那么您需要添加两个 CompositeTemplate 项目。此外,当您引用服务器模板时,您还需要指定内联模板以提供 RecipientRole 详细信息。在服务器模板中,您有收件人的占位符,但没有收件人的姓名和电子邮件,因此通过 InlineTemplate,您可以提供收件人的姓名和电子邮件占位符,您希望将信封发送给他们。
我无法弄清楚如何使用 DocuSign C# SDK 在信封内发送多个填充的 DocuSign 模板。我能够在信封中填充和发送单个模板,但无法使用多个模板执行此操作。
这是我使用的成功填充和发送模板的代码片段:
var rolesList = new List<TemplateRole>();
var tRole = new TemplateRole
{
Tabs = new Tabs(),
RoleName = "rolename"
};
tRole.Name = "joe smith";
tRole.Email = "email-address";
var tabData = new List<Text>();
// Populate the tabData
tRole.Tabs.TextTabs = tabData;
rolesList.Add(tRole);
var envDef = new EnvelopeDefinition
{
EmailSubject = "Pleae sign this",
TemplateRoles = rolesList,
TemplateId = "first template id",
Status = "sent",
};
var envelopesApi = new EnvelopesApi();
await envelopesApi.CreateEnvelopeAsync("accountId", envDef);
对于多个模板,我假设我需要使用 CompositeTemplate,所以我尝试了以下代码:
var envDef = new EnvelopeDefinition
{
EmailSubject = subject,
TemplateRoles = roles,
Status = send? "sent" : "created",
};
var compositeTemplate = new CompositeTemplate()
{
ServerTemplates = new List<ServerTemplate>(),
CompositeTemplateId = Guid.NewGuid().ToString(),
};
envDef.CompositeTemplates = new List<CompositeTemplate>();
envDef.CompositeTemplates.Add(compositeTemplate);
ServerTemplate first = new ServerTemplate()
{
TemplateId = "first template id",
Sequence = "1"
};
ServerTemplate second = new ServerTemplate()
{
TemplateId = "second template id",
Sequence = "2",
};
compositeTemplate.ServerTemplates.Add(first);
compositeTemplate.ServerTemplates.Add(second);
var envelopesApi = new EnvelopesApi();
await envelopesApi.CreateEnvelopeAsync("accountId", envDef);
但是,对于此代码,CreateEnvelopeAsync 调用会抛出以下异常: DocuSign.eSign.Client.ApiException:调用 CreateEnvelope 时出错:{ "errorCode": "ENVELOPE_IS_INCOMPLETE", "message": "The Envelope is not Complete. A Complete Envelope Requires Documents, Recipients, Tabs, and a Subject Line." }
我显然没有正确配置 CompositeTemplate(很可能没有填充文档),但我似乎找不到关于如何正确填充它的示例。
由于您的两个服务器模板相互独立,我相信您希望创建一个包含两个复合模板的数组。每个复合模板项将包含一个服务器模板。
请参阅 this example. 的第 93 行及以下行 该示例发送一个包含
的信封- 来自 DocuSign 的模板 ("server template")
- 本地创建的 HTML 源文档。
对于您的情况,请重复添加项目 1 而不是现有项目 2 的方式。
关键是两个不同的复合模板项,而不是一个复合模板项中的两个服务器模板。
您不应在同一信封定义中混合使用 TemplateRole 和 CompositeTemplate,因为两者是不同的设计策略。 正如 Larry 所建议的,如果您想从两个不同的模板中添加要添加到信封中的文档,那么您需要添加两个 CompositeTemplate 项目。此外,当您引用服务器模板时,您还需要指定内联模板以提供 RecipientRole 详细信息。在服务器模板中,您有收件人的占位符,但没有收件人的姓名和电子邮件,因此通过 InlineTemplate,您可以提供收件人的姓名和电子邮件占位符,您希望将信封发送给他们。