#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";