每个收件人的DocuSign Prepoluate选项卡值

时间:2014-02-20 19:46:29

标签: c# tabs docusignapi

当我有多个具有不同值的收件人时,使用SOAP API可以预先填充信封中的标签。一个例子是;我在模板中有2个收件人(或可能更多)和一个标签/标签(文本)。我希望这个标签预先填充了收件人的名字,这样当他们得到它时,收件人1将在文件标签上看到他/她的名字,收件人2将看到他/她的名字。

我尝试获取模板选项卡并根据已存在的值(主要是定位和类型等)创建新选项卡,我只是更改了值和收件人ID并将这些选项卡添加到列表中。但是,每当我更改选项卡的值/收件人ID时,列表中的其他ID都会更改。我通过将列表转换为数组并将信封选项卡设置为新的选项卡数组来完成该过程。

这是过程:

    newEnvelope.Tabs = GetTabs(newEnvelope);

    private Tab[] GetTabs(Envelope envelope) {

     Tab[] exsitingTabs = envelope.Tabs;
     List<Tab> newTabs = new List<Tab>();

     foreach(Recipient r in envelope.Recipients) {
        Tab tab = exsitingTabs .ElementAt(14); // Just a custom text tag
        tab.RecipientID = r.ID;
        tab.Value = r.UserName;
        newTabs.Add(tab); //The older tab info gets replaced by the new tab info.
                          // all are still there, the old ones just have the same info
                          // as the latest added one
     }
     return newTabs.ToArray();
  }

2 个答案:

答案 0 :(得分:0)

是的,你绝对可以通过DocuSign预先填充多个收件人的标签。尝试为收件人设置不同的TabLabel,这可能会解决重复问题。我认为可能是问题的原因是因为当TabLabel相同时,字段将使用相同的值更新,但如果它们不同,则它们不会。

来自DocuSign SOAP API指南:

"Making custom tab’s TabLabel the same will cause the all like fields to update when the user enters data."

所以在你的for循环中试试这个:

foreach(Recipient r in envelope.Recipients) {
    Tab tab = newTabs.ElementAt(14); // Just a custom text tag
    tab.RecipientID = r.ID;
    tab.Value = r.UserName;

    tab.TabLabel = r.ID; // or some other unique value for each recipient

    newTabs.Add(tab); //The older tab info gets replaced by the new tab info.
                      // all are still there, the old ones just have the same info
                      // as the latest added one


 }

答案 1 :(得分:0)

我认为您可能遇到的问题是DocuSign标签是每个收件人,即它们被分配给信封中的特定收件人(或收件人角色)。

例如,如果您要发送贷款申请并拥有“签名者1”和“签名者2”,您需要有一个“Signer1Name”字段来捕获签名者1的名字,并使用“Signer2Name”来签署签名者2(但是,在收件人签名时,DocuSign会自动填充FullName字段。您不会有一个“名称”选项卡,然后尝试使用两个不同的值(这是您的代码似乎正在执行的操作)填充它。

您的代码可能看起来像@Ergin上面写的那样:

List<Tab> tabList = new List<Tab>();
Recipient[] recipients = newEnvelope.Recipients;

foreach (Recipient r in recipients)
{
    Tab tab = new Tab();
    tab.RecipientID = r.ID;
    tab.TabLabel = string.Format("Recipient{0}Name", r.ID);
    tab.Value = r.UserName;
    tab.DocumentID = "1";

    tabList.Add(tab);
}

newEnvelope.Tabs = tabList.ToArray();

要获取收件人#1的名称,您的标签标签将为“Recipient1Name”。