DocuSign API——为每个接收者在不同的文档中填充相同的选项卡名称

本文关键字:填充 选项 文档 API 接收者 DocuSign | 更新日期: 2023-09-27 18:16:30

我对DocuSign的世界相当陌生,我正在尝试为多个收件人填充标签,这些收件人在DocuSign的特定服务器模板中设置了不同的文档。这些文档中的选项卡名称是相同的。

下面的代码将为收件人1填充文档中的选项卡,没有任何问题,这是有意义的,因为我将选项卡的收件人值设置为1。但是,我不知道如何使用这些选项卡填充发送给收件人2和3的文档。我尝试在数组中循环使用收件人,并以这种方式设置收件人,但这只是使文档中的制表符为空。

                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 API——为每个接收者在不同的文档中填充相同的选项卡名称

DocuSign制表符总是与给定的接收者相关(而不是文档本身)。因此,例如,如果您有3个唯一的收件人,那么您至少必须在请求中指定3个完全独立的选项卡,即使这些选项卡具有相同的名称。每个选项卡都有一个唯一的recipientId,表示它属于哪个收件人。

很难判断你发送的是什么类型的请求,因为你已经发布了代码,而不是代码生成的JSON体,如果你发布原始JSON会很有帮助。

在任何情况下,为了保持示例简短,如果您发送给两个唯一的收件人,您的请求将看起来像这样:

{
    "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,尽管它们具有我们设置的相同的名称和值。要调试,请查看代码发送的请求(注意:您可以通过您的帐户偏好启用请求日志,以便轻松查看您的请求),然后返回代码并确保它正在创建您期望的请求。