2015-10-14 3 views
0

Я создал конверт DocuSign из шаблона. Я сохранил конверт id для будущих операций. Использование этого конверт id Я могу только получить конверт, который я создал, но мне нужен и шаблон id. Есть ли способ получить шаблон id из конверта или FolderItems? Пожалуйста, помогите :(Как получить идентификатор шаблона из конверта docusign

ответ

0

Я не уверен, если вы создадите конверт из шаблона, если templateId сохранен как метаданные в любом месте конверта (я не верю, что это так). Таким образом, вы можете просто сделать это сами - попробуйте использовать Envelope пользовательских полей для хранения templateId в момент создания, и что templateId будут сохранены в качестве метаданных на конверте на протяжении его жизненного цикла

Выполните поиск в API документации DocuSign найти. более подробно о «Envelope Custom Fields». Например, here - страница для их создания.

0

Спасибо @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. Если я могу установить электронную почту получателя в первый раз, пока я загружаю отправленные элементы, тогда время будет сохранено для меня. В противном случае этот код станет непригодным.

Есть ли у вас какие-либо идеи по модификации моей реализации?

0

Если вы создаете конверты с вызовом REST, вы можете получить информацию по телефону templatesv2/accounts/:accountId/envelopes/:envelopeId/templates Пошлите in the envelope tab. Я заметил, что в конвертах, созданных с помощью SOAP sdk, эта информация не заполняется.