DocuSign API: заполнение динамических полей

#c# #docusignapi

#c# #docusignapi

Вопрос:

Я пытаюсь заполнить поля в моем шаблоне при вызове post-запроса моего API, в настоящее время я получаю шаблон, который я создал в создателе шаблонов DocuSign. Но мне нужно иметь возможность динамически изменять содержимое этих полей.

Как мне найти пользовательское поле, которое я создал? В настоящее время я использую TextCustomField . Единственное, что я вижу, что могло бы найти пользовательское поле FieldId , — это то, что на веб-сайте нет возможности установить или найти его. Поэтому я не уверен, что делать дальше. Вот фрагмент кода о том, как я пробовал это до сих пор, но безуспешно.

Я младший разработчик, и я новичок в docusign, и я чувствую, что документация оставляет желать лучшего.

          CustomFields cf = new CustomFields();
         cf.TextCustomFields = new List<TextCustomField>();
         TextCustomField tcf = new TextCustomField();
         
         tcf.FieldId = "001";
         tcf.Name = "test";
         tcf.Value = "NewValueFor test_field_1";
         cf.TextCustomFields.Add(tcf);
         env.CustomFields = cf;
  

Я установил метку данных на веб-сайте в 001.

введите описание изображения здесь

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

1. Для подтверждения, пытаетесь ли вы заполнить пользовательское поле конверта (скрытые метаданные, заблокированные в момент отправки, подписывающее лицо никогда не взаимодействует) или текстовую вкладку (отображается в документе, который нужно подписать, может быть или не быть доступным подписывающему лицу)? docusign.com/blog/dsdev-trenches-tabs-and-custom-fields

2. Да, но я создал шаблон с помощью веб-сайта, поэтому у меня возникли проблемы с поиском пользовательских полей.

Ответ №1:

Похоже, в словаре DocuSign произошло недоразумение. На вашем скриншоте показано «поле», которое в терминах API eSignature является «вкладкой». TextCustomField Объект, который у вас есть в данный момент, будет использоваться для заполнения пользовательского поля Envelope, а не для того, что вы сейчас пытаетесь сделать.

Если вы разместили эту вкладку в своем шаблоне, вы можете заполнить ее значение, создав TextTab объект и назначив его в свой signer список вкладок, например, так. TabLabel Соответствует параметру веб-консоли Name , и Value это то, чем вы хотите его заполнить.

         Text exampleTab1 = new Text //Create the Tab definition
        {
            Value = "Example Value",
            TabLabel = "test_field_1",
        };

        Signer signer1 = new Signer //Create a Signer
        {
            Email = signerEmail,
            Name = signerName,
            RecipientId = "1",
            RoutingOrder = "1",
        };

        Tabs signer1Tabs = new Tabs //Assign Tab to Signer
        {
            TextTabs = new List<Text> { exampleTab1 }
        };
  

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

1. Спасибо, это сработало. Хотя, если это на самом деле не называется пользовательским полем, веб-сайт не должен указывать, что это пользовательское поле. Функциональность DocuSign великолепна, но документация — одна из худших, которые я использовал.

Ответ №2:

Вероятно, вы можете использовать функцию C #, называемую LINQ, вам нужно добавить в свой класс следующее пространство имен:

 using System.Linq;
  

И затем вы можете найти свои объекты с помощью этого кода:

 var mycustomField = cf.TextCustomFields.FirstOrDefault(f => f.FieldId == "MYIDENTIFICATOR");
  

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

1. У меня нет возможности установить идентификатор поля на веб-сайте в моем шаблоне, единственный вариант, который у меня есть, — это метка данных, так как же это будет интегрироваться с этим?

2. В предоставленном вами примере кода вы устанавливаете пользовательский идентификатор поля: tcf. fieldId = «001»;

3. Да, но я создал пользовательское поле на веб-сайте, в котором нет опции для идентификатора поля.