#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. Да, но я создал пользовательское поле на веб-сайте, в котором нет опции для идентификатора поля.