CreateEnvelopeFromTemplates отсутствующие вкладки шаблонов

#docusignapi

#docusignapi

Вопрос:

Я пытаюсь использовать шаблон DocuSign, указав имя получателя и адрес электронной почты, а также байты документа из моего приложения. Код на C # с использованием SOAP API:

 List<DocuSignService.DocuSignWS.Recipient> RecipientList = new List<DocuSignService.DocuSignWS.Recipient>();

string templateID = string.Empty;
List<DocuSignService.DocuSignWS.TemplateReferenceRoleAssignment> roleassignlist = new List<DocuSignService.DocuSignWS.TemplateReferenceRoleAssignment>();


foreach (Element e in recipients)
{
    DocuSignService.DocuSignWS.Recipient tr = new DocuSignService.DocuSignWS.Recipient();
    tr.RoleName = Convert.ToString(e["rolename"]);
    tr.SignerName = Convert.ToString(e["name"]);
    tr.Email = Convert.ToString(e["email"]);
    tr.ID = Convert.ToString(e["id"]);
    tr.UserName = tr.SignerName;

    DocuSignService.DocuSignWS.TemplateReferenceRoleAssignment roleassign = new DocuSignService.DocuSignWS.TemplateReferenceRoleAssignment();
    roleassign.RecipientID = tr.ID;
    roleassign.RoleName = tr.RoleName;
    roleassignlist.Add(roleassign);

    RecipientList.Add(tr);
}
DocuSignService.DocuSignWS.TemplateReference templateReference = new DocuSignService.DocuSignWS.TemplateReference();
templateReference.Template = <templateID>
templateReference.Document = GetDocumentBytes();
templateReference.RoleAssignments = roleassignlist.ToArray();
DocuSignService.DocuSignWS.EnvelopeInformation envelopeInfo = new DocuSignService.DocuSignWS.EnvelopeInformation();
envelopeInfo.AccountId = credentials.dsaccountid;

client.UserName = <loginemail>
client.Password = <loginpassword>;
client.IntegratorKey = IntegratorKey;
DocuSignService.DocuSignWS.EnvelopeStatus status = client.CreateEnvelopeFromTemplates(new DocuSignService.DocuSignWS.TemplateReference[] { templateReference },
                        RecipientList.ToArray(), envelopeInfo, false);
 

Это создает черновик конверта с моим документом и получателями, но единственным признаком того, что использовался мой шаблон DocuSign, является строка темы письма и рекламный текст электронной почты. У моих получателей нет порядка маршрутизации, который шаблон имеет для их ролей, и в результирующем конверте вообще нет вкладок.

Я видел, что у других была эта проблема, но решил ее, указав свойство TemplateReferenceRoleAssignment TemplateReference , но я не увидел никаких изменений, как только начал это делать.

 <RoleAssignments>
    <RoleAssignment>
        <RoleName>Employee</RoleName>
        <RecipientID>1</RecipientID>
    </RoleAssignment>
    <RoleAssignment>
        <RoleName>Processor</RoleName>
        <RecipientID>2</RecipientID>
    </RoleAssignment>
</RoleAssignments>
</TemplateReference>
</TemplateReferences>
<Recipients>
    <Recipient>
        <ID>1</ID>
        <UserName>signer one</UserName>
        <SignerName>signer one</SignerName>
        <Email>testemail@test.com</Email>
        <Type>Signer</Type>
        <AccessCode xsi:nil="true" />
        <RoleName>Employee</RoleName>
    </Recipient>
    <Recipient>
        <ID>2</ID>
        <UserName>signer two</UserName>
        <SignerName>signer two</SignerName>
        <Email>fakeemail@fake.com</Email>
        <Type>Signer</Type>
        <AccessCode xsi:nil="true" />
        <RoleName>Processor</RoleName>
    </Recipient>
</Recipients>
 

Ответ №1:

В дополнение к получателю name email и вам необходимо указать действительное имя роли шаблона. В существующем шаблоне сервера должна быть определена одна или несколько ролей, которые называются ролями-заполнителями или ролями шаблонов, и для использования данной роли вы должны roleName точно соответствовать (с учетом регистра) роли, сохраненной в шаблоне.

Комментарии:

1. Привет, Эргин. Я думал, что делаю это с помощью tr.RoleName = Convert . toString(e[«rolename»]); оператор, а также tr.RoleName = Преобразовать. toString(e[«rolename»]); . Перед этим кодом я выполняю вызов API GetTemplateList, выбираю соответствующий шаблон, затем запрашиваю у пользователя имена и адреса электронной почты для всех получателей в выбранном шаблоне. e[«rolename»] вернет свойство RoleName данного получателя в выбранном шаблоне. Я обновлю исходное сообщение, чтобы включить xml Roleassignments из моего вызова CreateEnvelopesFromTemplates.

2. Похоже, это было все, чего мне не хватало:

3. Ссылка на шаблон. Последовательность = «1»;

Ответ №2:

Кажется, все, что мне было нужно, это установить последовательность в ссылке на шаблон:

 templateReference.Sequence = "1";