Я создал конверт DocuSign из шаблона. Я сохранил конверт id для будущих операций. Использование этого конверт id Я могу только получить конверт, который я создал, но мне нужен и шаблон id. Есть ли способ получить шаблон id из конверта или FolderItems? Пожалуйста, помогите :(Как получить идентификатор шаблона из конверта docusign
ответ
Я не уверен, если вы создадите конверт из шаблона, если templateId
сохранен как метаданные в любом месте конверта (я не верю, что это так). Таким образом, вы можете просто сделать это сами - попробуйте использовать Envelope пользовательских полей для хранения templateId
в момент создания, и что templateId
будут сохранены в качестве метаданных на конверте на протяжении его жизненного цикла
Выполните поиск в API документации DocuSign найти. более подробно о «Envelope Custom Fields». Например, here - страница для их создания.
Спасибо @Ergin. Я попытался реализовать вашу идею, и она работает. Но есть и другие проблемы, что я сделал. Я разделяю некоторые части своего кода.
//Getting available folder list of my DocuSign account.
DocuSignServiceRef.AvailableFolders folders = DocuSignHelper.GetDocuSignServiceClient().GetFolderList(new DocuSignServiceRef.FoldersFilter { AccountId = DocuSignHelper.UserID });
//Creating a FolderFilter item to get folder items using this filter.
DocuSignServiceRef.FolderFilter filter = new DocuSignServiceRef.FolderFilter();
filter.AccountId = DocuSignHelper.UserID;
filter.FolderTypeInfo = new DocuSignServiceRef.FolderTypeInfo();
filter.FolderTypeInfo = folders.Folders[1].FolderTypeInfo; //Filter Send Items
//Getting sent items
DocuSignServiceRef.FolderResults results = DocuSignHelper.GetDocuSignServiceClient().GetFolderItems(filter);
if (results != null && results.ResultSetSize > 0)
{
foreach (DocuSignServiceRef.FolderItem item in results.FolderItems)
{
foreach (DocuSignServiceRef.RecipientStatus recipient in item.RecipientStatuses)
{
//Filtering items by Recipient
if (recipient.Email.Equals(RecipientEmail))
{
//Getting envelope of the folder item
DocuSignServiceRef.Envelope sentEnvelope = DocuSignHelper.GetDocuSignServiceClient().RequestEnvelope(item.EnvelopeId, false);
if (sentEnvelope.CustomFields != null)
{
//Checking envelope's custom fields for template id
foreach (DocuSignServiceRef.CustomField customField in sentEnvelope.CustomFields)
{
if (string.Equals(customField.Name, "TemplateID"))
{
if (customField.Value == "{CurrentTemplateID}")
{
HasAlreadySignedSameTemplate = true;
//I will not request the recipient for another signature on same template.
}
}
}
}
}
}
}
}
Приведенный выше код работает для меня. Но для загрузки всех отправленных предметов требуется слишком много времени. Я не вижу способа установить информацию о получателях в FolderFilter. Если я могу установить электронную почту получателя в первый раз, пока я загружаю отправленные элементы, тогда время будет сохранено для меня. В противном случае этот код станет непригодным.
Есть ли у вас какие-либо идеи по модификации моей реализации?
Если вы создаете конверты с вызовом REST, вы можете получить информацию по телефону templatesv2/accounts/:accountId/envelopes/:envelopeId/templates
Пошлите in the envelope tab. Я заметил, что в конвертах, созданных с помощью SOAP sdk, эта информация не заполняется.