DocuSign API - 在每个收件人的不同文档中填充相同的选项卡名称
DocuSign API - Populating identical tab names in different documents for each recipient
我对 DocuSign 的世界相当陌生,我正在尝试为多个收件人填充选项卡,这些收件人在 DocuSign 的特定服务器模板中设置了不同的文档。这些文档中的选项卡名称相同。
下面的代码将毫无问题地为收件人 1 填充文档中的选项卡,这是有道理的,因为我将选项卡的收件人值设置为 1。但是,我不知道如何使用这些选项卡来填充发送给收件人 2 和 3 的文档。我尝试遍历数组中的收件人并以这种方式设置 recipientid,但这只会使文档中正在工作的选项卡空白。
Type MyClassType = MyClass.GetType();
//add all the neccessary instances of the DocuSignWeb.TAB object into a dictionary
//giving each one a unique name based on the property it represents
var tabNames = new Dictionary<string, DocuSignWeb.Tab>();
foreach (PropertyInfo propertyInfoTabs in MyClassType.GetProperties())
{
string tabName = propertyInfoTabs.Name;
tabNames.Add(tabName, new DocuSignWeb.Tab());
}
//dynamically populate each tab with the relevant data
//and add each one to a list.
List<DocuSignWeb.Tab> tabs = new List<DocuSignWeb.Tab>();
foreach (PropertyInfo propertyInfo in MyClassType .GetProperties())
{
DocuSignWeb.Tab t = tabNames[propertyInfo.Name];
t.TabLabel = propertyInfo.Name;
t.Value = Convert.ToString(propertyInfo.GetValue(MyClass, null));
//document info is defined in server template
t.RecipientID = "1";
t.TemplateLocked = true;
t.Type = TabTypeCode.Custom;
t.CustomTabLocked = true;
t.CustomTabDisableAutoSize = true;
t.CustomTabWidth = 20;
tabs.Add(t);
}
inlineTemplate.Envelope.Tabs = tabs.ToArray();
如果有人这样做过并且可以提供帮助,我将不胜感激。
DocuSign 标签总是与给定的收件人相关(而不是文档本身)。因此,例如,如果您有 3 个唯一的收件人,那么您必须至少在请求中指定 3 个完全独立的选项卡,即使这些选项卡具有相同的名称。每个选项卡都有一个唯一的 recipientId
,表明它属于哪个收件人。
很难判断您发送的是哪种请求,因为您 post 编辑了代码而不是代码生成的 JSON 正文,如果您 post 原始 JSON。
无论如何,为了使示例简短,如果您要发送给 2 个不同的收件人,您的请求将如下所示:
{
"recipients": {
"signers": [
{
"email": "sally@email.com",
"name": "Sally Doe",
"recipientId": 1,
"tabs": {
"textTabs": [
{
"tabLabel": "Data Field 1",
"value": "12345",
"xPosition": "100",
"yPosition": "100",
"documentId": "1",
"pageNumber": "1"
}
]
}
},
{
"email": "jon@email.com",
"name": "Jon Doe",
"recipientId": 2,
"tabs": {
"textTabs": [
{
"tabLabel": "Data Field 1",
"value": "12345",
"xPosition": "100",
"yPosition": "100",
"documentId": "1",
"pageNumber": "1"
}
]
}
}
]
}
}
如您所见,定义了两个单独的选项卡,每个选项卡都有唯一的 recipientId
,即使它们具有与我们设置的相同的名称和值。要调试,请查看您的代码发送的请求(注意:您可以通过您的帐户首选项启用请求日志记录,以便轻松查看您的请求),然后返回您的代码并确保它正在创建您期望的请求。
我对 DocuSign 的世界相当陌生,我正在尝试为多个收件人填充选项卡,这些收件人在 DocuSign 的特定服务器模板中设置了不同的文档。这些文档中的选项卡名称相同。
下面的代码将毫无问题地为收件人 1 填充文档中的选项卡,这是有道理的,因为我将选项卡的收件人值设置为 1。但是,我不知道如何使用这些选项卡来填充发送给收件人 2 和 3 的文档。我尝试遍历数组中的收件人并以这种方式设置 recipientid,但这只会使文档中正在工作的选项卡空白。
Type MyClassType = MyClass.GetType();
//add all the neccessary instances of the DocuSignWeb.TAB object into a dictionary
//giving each one a unique name based on the property it represents
var tabNames = new Dictionary<string, DocuSignWeb.Tab>();
foreach (PropertyInfo propertyInfoTabs in MyClassType.GetProperties())
{
string tabName = propertyInfoTabs.Name;
tabNames.Add(tabName, new DocuSignWeb.Tab());
}
//dynamically populate each tab with the relevant data
//and add each one to a list.
List<DocuSignWeb.Tab> tabs = new List<DocuSignWeb.Tab>();
foreach (PropertyInfo propertyInfo in MyClassType .GetProperties())
{
DocuSignWeb.Tab t = tabNames[propertyInfo.Name];
t.TabLabel = propertyInfo.Name;
t.Value = Convert.ToString(propertyInfo.GetValue(MyClass, null));
//document info is defined in server template
t.RecipientID = "1";
t.TemplateLocked = true;
t.Type = TabTypeCode.Custom;
t.CustomTabLocked = true;
t.CustomTabDisableAutoSize = true;
t.CustomTabWidth = 20;
tabs.Add(t);
}
inlineTemplate.Envelope.Tabs = tabs.ToArray();
如果有人这样做过并且可以提供帮助,我将不胜感激。
DocuSign 标签总是与给定的收件人相关(而不是文档本身)。因此,例如,如果您有 3 个唯一的收件人,那么您必须至少在请求中指定 3 个完全独立的选项卡,即使这些选项卡具有相同的名称。每个选项卡都有一个唯一的 recipientId
,表明它属于哪个收件人。
很难判断您发送的是哪种请求,因为您 post 编辑了代码而不是代码生成的 JSON 正文,如果您 post 原始 JSON。
无论如何,为了使示例简短,如果您要发送给 2 个不同的收件人,您的请求将如下所示:
{
"recipients": {
"signers": [
{
"email": "sally@email.com",
"name": "Sally Doe",
"recipientId": 1,
"tabs": {
"textTabs": [
{
"tabLabel": "Data Field 1",
"value": "12345",
"xPosition": "100",
"yPosition": "100",
"documentId": "1",
"pageNumber": "1"
}
]
}
},
{
"email": "jon@email.com",
"name": "Jon Doe",
"recipientId": 2,
"tabs": {
"textTabs": [
{
"tabLabel": "Data Field 1",
"value": "12345",
"xPosition": "100",
"yPosition": "100",
"documentId": "1",
"pageNumber": "1"
}
]
}
}
]
}
}
如您所见,定义了两个单独的选项卡,每个选项卡都有唯一的 recipientId
,即使它们具有与我们设置的相同的名称和值。要调试,请查看您的代码发送的请求(注意:您可以通过您的帐户首选项启用请求日志记录,以便轻松查看您的请求),然后返回您的代码并确保它正在创建您期望的请求。