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