You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过DocuSign eSignature API实现多现场签署人连续签署并返回应用

问题描述

当前我的应用已实现创建envelope、生成recipient view、获取链接并跳转至签署会话的功能。现有流程为:第一个签署人完成签署后返回我的应用,随后主持人会收到邮件以启动第二个签署人的托管会话。我期望实现的流程是:第一个签署人签署后,第二个签署人直接进行签署,全部完成后再返回我的应用,请问该需求是否可行?

当前创建Envelope的请求代码

{
  'emailSubject': emailSubject,
  'emailBlurb': emailBlurb,
  'status': 'sent',
  'envelopeIdStamping': 'false',
  'compositeTemplates': [{
   'document': {
     'documentId': '1',
     'name': fileName,
     'documentBase64': base64File
   },
   'inlineTemplates': [{
     'sequence': '1',
     'recipients': {
       'inPersonSigners': [{
         'hostEmail': hostEmail,
         'hostName': hostName,
         'inPersonSigningType': 'inPersonSigner',
         'recipientId': '2',
         'requireIdLookup': 'false',
         'routingOrder': '2',
         'signerEmail': signer2Email,
         'signerName': signer2Name,
         'tabs': {
           'signHereTabs': [{
             'documentId': '1',
             'anchorString': signatureAnchorString
           }],
           'initialHereTabs': [{
             'documentId': '1',
             'anchorString': initialAnchorString
           }]
         } //Tabs
       }] //Signers
     } //Recipients
   }] //Inline Templates
 }, //Documents
  'serverTemplates': [{
     'sequence': '1',
     'templateId': templateId
   }],
   'inlineTemplates': [{
     'sequence': '2',
     'recipients': {
       'inPersonSigners': [{
         'hostEmail': hostEmail,
         'hostName': hostName,
         'inPersonSigningType': 'inPersonSigner',
         'signerEmail': signer1Email,
         'signerName': signer1Name,
         'recipientId': '1',
         'requireIdLookup': 'false',
         'routingOrder': '1',
         'roleName': signer1Role
       },
       {
         'hostEmail': hostEmail,
         'hostName': hostName,
         'inPersonSigningType': 'inPersonSigner',
         'signerEmail': signer2Email,
         'signerName': signer2Name,
         'recipientId': '2',
         'requireIdLookup': 'false',
         'routingOrder': '2',
         'roleName': signer2Role
       }] //inPersonSigners
     } //Recipients
  }] //inlineTemplates
} //Template Document

当前获取Recipient View的请求代码

let viewRequest = {
        'returnUrl': myappsUrl,
        'authenticationMethod': 'none',
        'email': hostEmail,
        'userName': hostName
    }

解答:需求完全可行

通过调整路由触发逻辑和Recipient View的生成时机,就能实现连续签署后再返回应用的流程,具体方案如下:

核心调整方向

  1. 取消邮件触发后续签署:当前流程中主持人收到邮件是因为Envelope默认在路由推进时发送通知,需要改为通过API主动生成下一个签署人的会话链接,而非依赖邮件。
  2. 监听签署完成事件:通过Webhook监听recipient_completed事件,一旦第一个签署人完成,立即为第二个签署人生成签署会话链接。
  3. 统一返回时机:仅在所有签署人完成后,才跳转回你的应用,而非单个签署人完成就返回。

具体代码与流程优化

1. 修正Envelope创建代码(修复语法错误,保留路由顺序)

{
  "emailSubject": emailSubject,
  "emailBlurb": emailBlurb,
  "status": "sent",
  "envelopeIdStamping": "false",
  "compositeTemplates": [
    {
      "document": {
        "documentId": "1",
        "name": fileName,
        "documentBase64": base64File
      },
      "inlineTemplates": [
        {
          "sequence": "1",
          "recipients": {
            "inPersonSigners": [
              {
                "hostEmail": hostEmail,
                "hostName": hostName,
                "inPersonSigningType": "inPersonSigner",
                "recipientId": "2",
                "requireIdLookup": "false",
                "routingOrder": "2",
                "signerEmail": signer2Email,
                "signerName": signer2Name,
                "tabs": {
                  "signHereTabs": [
                    {
                      "documentId": "1",
                      "anchorString": signatureAnchorString
                    }
                  ],
                  "initialHereTabs": [
                    {
                      "documentId": "1",
                      "anchorString": initialAnchorString
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    },
    {
      "serverTemplates": [
        {
          "sequence": "1",
          "templateId": templateId
        }
      ],
      "inlineTemplates": [
        {
          "sequence": "2",
          "recipients": {
            "inPersonSigners": [
              {
                "hostEmail": hostEmail,
                "hostName": hostName,
                "inPersonSigningType": "inPersonSigner",
                "signerEmail": signer1Email,
                "signerName": signer1Name,
                "recipientId": "1",
                "requireIdLookup": "false",
                "routingOrder": "1",
                "roleName": signer1Role
              },
              {
                "hostEmail": hostEmail,
                "hostName": hostName,
                "inPersonSigningType": "inPersonSigner",
                "signerEmail": signer2Email,
                "signerName": signer2Name,
                "recipientId": "2",
                "requireIdLookup": "false",
                "routingOrder": "2",
                "roleName": signer2Role
              }
            ]
          }
        }
      ]
    }
  ]
}

2. 调整Recipient View生成逻辑

第一个签署人完成后,调用API生成第二个签署人的会话链接:

// 第一个签署人完成后,生成第二个签署人的Recipient View
let viewRequest = {
        "returnUrl": myappsUrl, // 仅所有签署完成后返回应用
        "authenticationMethod": "none",
        "email": signer2Email, // 改为第二个签署人的邮箱
        "userName": signer2Name // 改为第二个签署人的姓名
    }

3. 完整流程执行步骤

  • 应用创建Envelope并设置status: "sent",Envelope进入路由顺序1(第一个签署人)。
  • 生成第一个签署人的Recipient View,跳转至签署页面。
  • 监听Webhook的recipient_completed事件,确认签署人ID为1的签署完成。
  • 立即调用Create Recipient View API,为签署人ID为2的用户生成链接并自动跳转。
  • 第二个签署人完成签署后,Envelope状态变为completed,此时跳转至returnUrl回到你的应用。

内容的提问来源于stack exchange,提问作者Nathan Allan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:00:15