2016-07-23 160 views
0

我有我用来发送以下合成模板发送信封:的DocuSign REST API使用复合模板

  1. 1号文件签署
  2. 并不需要签署另一份文件,但包括
  3. 保存在模板中的文档

我收到此错误:执行Web请求时出错。 { “errorCode”:“Addresses_ERROR”, “message”:“Base-64字符数组或字符串的无效长度。”我已经证实Base64是4的倍数。我认为问题是我没有正确的内容类型。我正在使用Nintex和SharePoint将Rest API发送给DocuSign。

内容类型:多重/ form-data的;边界= MY_BOUNDARY

Accept: application/json 
Host: na2.docusign.net 


--MY_BOUNDARY 
Content-Type: application/json 
Content-Disposition: form-data 

{ 
"emailSubject": "Contract Package for {ItemProperty:Title}", 
"status" : "sent", 
"compositeTemplates": [ 
{ 
"inlineTemplates": [ 
    { 
     "sequence" : 2, 
     "recipients": { 
      "signers" : [ 
      { 
       "email": "{WorkflowVariable:varCreatedByEmail}", 
       "name": "{WorkflowVariable:varCreatedByName}", 
       "recipientId": "1", 
       "roleName": "MI Employee", 
       "routingOrder": "1", 
       "tabs": 
        {"signerAttachmentTabs": [ 
         {"anchorString": "/ea1/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0", 
          "tabLabel": "Scope of Work Attachment", 
          "optional": "true", 
          "tabOrder": 1}, 
         {"anchorString": "/ea2/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0", 
          "tabLabel": "Pricing Attachment", 
          "optional": "true", 
          "tabOrder": 3}], 
        "textTabs":[ 
         {"anchorString": "/ec1/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0", 
          "tabLabel": "Scope of Work Text", 
          "disableAutoSize": true, 
          "width": 550, 
          "height": 220, 
          "tabOrder": 2}, 
         {"anchorString": "/ec2/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0", 
          "tabLabel": "Pricing Text", 
          "disableAutoSize": true, 
          "width": 550, 
          "height": 220, 
          "tabOrder": 4}] 
        } 
      }, 
      { 
       "email": "{ItemProperty:E_x002d_Mail}", 
       "name": "{ItemProperty:Primary_x0020_Contact}", 
       "recipientId": "2", 
       "roleName": "Vendor", 
       "routingOrder": "2", 
       "tabs": 
        {"fullNameTabs": [ 
         {"anchorString": "/vn/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
       , 
        "signHereTabs":[ 
         {"anchorString": "/vs/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
       , 
        "dateSignedTabs":[ 
         {"anchorString": "/dvs/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
       , 
        "initialHereTabs":[ 
         {"anchorString": "/vi/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
       , 
        "titleTabs":[ 
         {"anchorString": "/vt/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
       , 
        "emailAddressTabs":[ 
         {"anchorString": "/ve/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
       , 
        "textTabs":[ 
         {"anchorString": "/va1/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0", 
          "tabLabel": "Address Line 1"}, 
         {"anchorString": "/va2/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0", 
          "tabLabel": "Address Line 2", 
          "required": false}, 
         {"anchorString": "/va3/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0", 
          "tabLabel": "Address Line 3",}, 
         {"anchorString": "/vc/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0", 
          "tabLabel": "Vendor Name", 
          "disableAutoSize": true, 
          "width": 225, 
          "height": 32}] 
        } 
      }, 
      { 
       "email": "{WorkflowVariable:varContractApproverEmail}", 
       "name": "{WorkflowVariable:varContractApproverName}", 
       "recipientId": "3", 
       "roleName": "MI Approver", 
       "routingOrder": "3", 
       "tabs": 
        {"signHereTabs":[ 
         {"anchorString": "/as/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
       , 
        "dateSignedTabs":[ 
         {"anchorString": "/das/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
       , 
        "fullNameTabs":[ 
         {"anchorString": "/an/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
       , 
        "titleTabs":[ 
         {"anchorString": "/at/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
       , 
        "emailAddressTabs":[ 
         {"anchorString": "/ae/", 
          "anchorXOffset": "1", 
          "anchorYOffset": "0"}] 
        } 
      }   ] 
        } 
    }    ], 
    "document": { 
     "documentId": 1, 
     "name": "{WorkflowVariable:varContractName}", 
     "documentbase64": "{WorkflowVariable:varContractBase64}" 
    } 
}, 
{ 
"inlineTemplates": [ 
    { 
     "sequence" : 3, 
     "recipients": { 
      "carbonCopies" : [ 
      { 
       "email": "{WorkflowVariable:varCreatedByEmail}", 
       "name": "{Common:InitiatorsDisplayName}", 
       "recipientId": "1", 
       "roleName": "MI Employee", 
       "routingOrder": "1" 
      }, 
      { 
       "email": "{ItemProperty:E_x002d_Mail}", 
       "name": "{ItemProperty:Primary_x0020_Contact}", 
       "recipientId": "2", 
       "roleName": "Vendor", 
       "routingOrder": "2" 
      }, 
      { 
       "email": "{WorkflowVariable:varContractApproverEmail}", 
       "name": "{WorkflowVariable:varContractApproverName}", 
       "recipientId": "3", 
       "roleName": "MI Approver", 
       "routingOrder": "3" 
      }] 
     } 
    }], 
    "document": { 
     "documentId": 2, 
     "name": "{WorkflowVariable:varExhibitAName}", 
     "documentbase64": "{WorkflowVariable:varExhibitABase64}" 
    } 
}, 
{ 
    "serverTemplates": [ 
    { 
     "sequence" : 6, 
     "templateId": "D7472F81-46F9-4BEB-9017-DFAD3C0BCE83" 
    }], 
    "inlineTemplates": [ 
    { 
     "sequence" : 7, 
     "recipients": { 
      "signers" : [{ 
       "email": "{WorkflowVariable:varCreatedByEmail}", 
       "name": "{Common:InitiatorsDisplayName}", 
       "recipientId": "1", 
       "roleName": "MI Employee", 
       "routingOrder": "1" 
      }, 
      { 
       "email": "{ItemProperty:E_x002d_Mail}", 
       "name": "{ItemProperty:Primary_x0020_Contact}", 
       "recipientId": "2", 
       "roleName": "Vendor", 
       "routingOrder": "2", 
       "tabs": { 
       "textTabs": [ 
       { 
       "tabLabel": "VendorName"}]} 
      }, 
      { 
       "email": "{WorkflowVariable:varContractApproverEmail}", 
       "name": "{WorkflowVariable:varContractApproverName}", 
       "recipientId": "3", 
       "roleName": "MI Approver", 
       "routingOrder": "3" 
      } 
      ] 
     } 
    }], 
    "document": { 
     "documentId": 4, 
     "name": "CCare_Pledge.pdf" 
    } 
}] 
} 

--MY_BOUNDARY 
Content-Type: application/pdf 
Content-Disposition: file; filename="{WorkflowVariable:varContractName}";  documentid="1" 

<document bytes removed> 

--MY_BOUNDARY-- 
Content-Type: application/pdf 
Content-Disposition: file; filename="{WorkflowVariable:varExhibitAName}";  documentid="2" 

<document bytes removed> 

--MY_BOUNDARY-- 
Content-Type: application/pdf 
Content-Disposition: file; filename="CCare_Pledge.pdf"; documentid="4" 

链接base64- http://www.mihomes.com/corp/vit/Base64.txt

+0

你引用的错误消息退出e清楚了,但是你已经删除了消息的基本64部分,所以我们看不到它是否合理。 – AdrianHHH

+0

因此,如果认为错误是由此API调用的documentbase64部分引发的,请确保提供的b64编码字符串是一个连续的行。不应该包含任何换行符。 –

+0

我尝试删除换行符,但仍然收到相同的错误。 – KishRandle

回答

0

在查看请求您已发布的几件事情跳到我身边:

首先,您错误地指定了零件的边界分隔符,该零件指定了documentid = 2为“--MY_BOUNDARY--

--MY_BOUNDARY-- 
Content-Type: application/pdf 
Content-Disposition: file; filename="{WorkflowVariable:varExhibitAName}";  documentid="2" 

通过包括-在这个边界字符串的结尾,你指示多消息的结束,所以它的很可能DocuSign不读取该字符串后面的任何请求内容。我建议改变这个以“--MY_BOUNDARY”

其次,你指定两个文件的文件字节多次(documentid = 1和documentid = 2) - 曾经作为的一部分文档对象(使用documentbase64属性)在每个复合模板中,并再次在多部分请求的其他部分。我建议从每个Composite Template对象的文档对象中删除documentbase64属性 - 如果要在多部分消息的其他部分中指定文档字节,则不需要该属性。

接下来,如果CCare_Pledge.pdf是包含在你使用模板的头文件,那么你应该删除从复合模板对象文件属性(对象):

"document": { 
    "documentId": 4, 
    "name": "CCare_Pledge.pdf" 
} 

并删除请求的最后部分:

--MY_BOUNDARY-- 
Content-Type: application/pdf 
Content-Disposition: file; filename="CCare_Pledge.pdf"; documentid="4" 

这不是必须的,因为文档来自模板本身,因此您无需指定d请求中的ocument信息。

最后,请确保您的请求与正确的边界终止字符串结尾:(这个问题的答案other post显示总体要求结构的关于边界分隔一个很好的例子)

--MY_BOUNDARY-- 

一旦你实现这些建议的更改,您的请求结构应该是这样的:

--MY_BOUNDARY 
Content-Type: application/json 
Content-Disposition: form-data 

{ 
    "emailSubject": "Contract Package for {ItemProperty:Title}", 
    "status" : "sent", 
    "compositeTemplates": [ 
     { 
      "inlineTemplates": [ 
       { 
        "sequence" : 2, 
        "recipients": { 
         ... 
        } 
       } 
      ], 
      "document": { 
       "documentId": 1, 
       "name": "{WorkflowVariable:varContractName}" 
      } 
     }, 
     { 
      "inlineTemplates": [ 
       { 
        "sequence" : 3, 
        "recipients": { 
         ... 
        } 
       } 
      ], 
      "document": { 
       "documentId": 2, 
       "name": "{WorkflowVariable:varExhibitAName}" 
      } 
     }, 
     { 
      "serverTemplates": [ 
       { 
        "sequence" : 6, 
        "templateId": "D7472F81-46F9-4BEB-9017-DFAD3C0BCE83" 
       } 
      ], 
      "inlineTemplates": [ 
       { 
        "sequence" : 7, 
        "recipients": { 
         ... 
        } 
       } 
      ] 
     } 
    ] 
} 

--MY_BOUNDARY 
Content-Type: application/pdf 
Content-Disposition: file; filename="{WorkflowVariable:varContractName}"; documentid="1" 

<document bytes removed> 

--MY_BOUNDARY 
Content-Type: application/pdf 
Content-Disposition: file; filename="{WorkflowVariable:varExhibitAName}"; documentid="2" 

<document bytes removed> 

--MY_BOUNDARY--