DocuSign Rest API替换单个模板文档

时间:2018-05-02 08:06:30

标签: docusignapi docusigncompositetmplts

我想知道如何用复合模板替换文档。该模板有三个文档并定义签名者信息。即使我试图仅替换第一个文档,字段(标签)定义如下,它不能很好地工作。如果inlineTemplates的序列号为1且serverTemplates的数量为2,则第一个文档将按预期替换,但其余两个文档将消失。如果每个序列号更改为相反,则模板中定义的三个文档将保留在信封中,新文档不会替换为第一个文档。

只要我在stackoverview和其他网站上查找信息,我就找不到任何解决方案。

    {
    "compositeTemplates" : [
    {
                "serverTemplates": [
                    {
                        "sequence": "2",
                        "templateId": "cba8d3ae-3f0e-4329-9c7a-9da0e612f153"
                    }
                ],

                "inlineTemplates": [
                    {
                        "sequence": "1",
                        "documents": [  
                            {
                                "documentId": "1",
                                "name": "1Update.pdf",
                                "fileExtension" : "pdf",
                                "transformPdfFields" : "false",
                                "documentBase64":"<base64 content>

                            }
                            ],
                    }
                    ],


        }
        ],

        "status": "created"

}

2 个答案:

答案 0 :(得分:2)

如果您的服务器模板有三个文档,并且您想在创建信封时将第一个文档替换为另一个文档,那么Doc​​uSign将无法执行,因此DocuSign将期望您计划更换所有文档,它将会抛出错误并要求您在内联模板中发送其他文档。

这个场景的解决方案是,你需要制作多个服务器模板,至少在你的情况下是两个服务器模板,一个服务器模板应该有你想要替换的文档和另一个是静态的服务器模板它会在信封里按原样。完成后,您的复合模板将是两个复合模板的数组。第一个复合模板将具有第一个服务器模板,并使用InlineTemplate或文档节点,您可以替换服务器模板文档。第二个复合模板将只包含来自第二个服务器模板的文档,您的代码可能如下所示:

在下面的代码中,服务器模板d7697d56-e7ff-4a86-9b21-e98b81bd66c2中的文档被内联模板替换,或者您也可以在文档节点中传递它,f30d22b7-17da-4b61-af00-5f418f7916ec是服务器模板在没有文档需要替换的情况下,它将来自服务器模板。

{
   "compositeTemplates": [
      {
         "compositeTemplateId":"1",
         "inlineTemplates": [
            {  
               "documents":[
                        {
                          "documentBase64": "<PDFBytes>",
                          "documentId": "1",
                          "fileExtension": "pdf",
                          "name": "Runtime Agreement"
                 }
               ],
               "recipients": {
                  "signers": [
                     {
                        "email": "email@gmail.com",
                        "name": "John Doe",
                        "recipientId": "1",
                        "roleName": "Signer1",
                        "routingOrder": "1"
                     }
                  ]
               },
               "sequence": "1"
            }
         ],
         "serverTemplates": [
            {
               "sequence": "2",
               "templateId": "d7697d56-e7ff-4a86-9b21-e98b81bd66c2"
            }
         ]
      },
      {
         "compositeTemplateId":"2",
         "inlineTemplates": [
            {  
               "recipients": {
                  "signers": [
                     {
                        "email": "email@gmail.com",
                        "name": "John Doe",
                        "recipientId": "1",
                        "roleName": "Signer1",
                        "routingOrder": "1"
                     }
                  ]
               },
               "sequence": "2"
            }
         ],
         "serverTemplates": [
            {
               "sequence": "1",
               "templateId": "f30d22b7-17da-4b61-af00-5f418f7916ec"
            }
         ]
      }
   ],
   "status": "sent"
}

答案 1 :(得分:1)

您需要使用复合模板的文档节点,默认情况下为Sequence“0”,因此它使用文档pdf bytes vs Server XML或inline documents pdf bytes。

"compositeTemplates": [{
"serverTemplates": [{
"inlineTemplates": [{
"document": ....

以下是序列号和物理顺序需要了解的部分内容 - 在复合模板中,物理顺序优先于每个复合模板节点的“索引/序列”。

“sequence”索引是内部参照胶,但不是内存模型中的行顺序。

序列越低:服务器之间的文档节点(不是文档),内联和文档为0就是“确定PDF / DOC字节的方式,序列号越高,在一个模板中获得又名doc的功能, vs另一个或通知天数。

此外,请记住状态“已创建”表示您对所需的角色,标签等进行了全部清理,与“已发送”相比,DocuSign将删除任何不完整的标签,交换文档等。因此,它通常不会向您显示最终结果,直到您发出“已发送”。

请记住,您可以添加“阻止(高级概念)”收件人,这样您就可以在发送到客户端之前“查看”结果。只是我们一个“无法投递”的电子邮件地址,它将进行反弹,然后发出发件人视图以查看结果,然后“锁定/更正/解锁”信封,如果您需要在实际生产场景中进行验证,则删除“阻止”用户