首页 > 解决方案 > 如何为没有电子邮件和姓名的收件人获取嵌入式签名 URL

问题描述

我的用例是,使用代理创建一个信封以指定以下签名者的姓名和电子邮件。

我通过 POST 创建了信封{{baseUrl}}/v2.1/accounts/{{accountId}}/envelopes,请求正文:

{
  "recipients": {
    "agents": [
      {
        "clientUserId": "1",
        "email": "aaa@example.com.au",
        "name": "Agent",
        "recipientId": "1",
        "routingOrder": "1"
      }
    ],
    "signers": [
      {
        "clientUserId": "2",
        "email": "",
        "name": "",
        "recipientId": "2",
        "routingOrder": "2",
        "tabs": {
          "signHereTabs": [
            {
              "anchorIgnoreIfNotPresent": "false",
              "anchorString": "Signature_anchor_1",
              "anchorUnits": "pixels",
              "anchorYOffset": "0",
              "name": "Please sign here",
              "recipientId": "1"
            }
          ]
        }
      }
    ]
  },
  "emailSubject": "DocuSign API - Signature Request on Document Call",
  "documents": [
    {
      "documentId": "1",
      "name": "{{fileName}}",
      "documentBase64": "{{fileBase64}}"
    }
  ],
  "status": "sent"
}

在代理指定签名者的姓名和电子邮件地址后,我无法通过 POST 获取签名 URL {{baseUrl}}/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}/views/recipient,请求正文:

{
  "clientUserId": "2",
  "userName": "",
  "email": "",
  "recipientId": "2",
  "returnUrl": "https://www.sample.com",
  "authenticationMethod": "email"
}

回应是:

{
    "errorCode": "INVALID_REQUEST_PARAMETER",
    "message": "The request contained at least one invalid parameter. A value was not found for parameter 'userName'."
}

我尝试使用新的指定名称和电子邮件来获取它:

{
  "clientUserId": "2",
  "userName": "new",
  "email": "new@example",
  "recipientId": "2",
  "returnUrl": "https://www.sample.com",
  "authenticationMethod": "email"
}

但仍然得到错误响应:

{
    "errorCode": "UNKNOWN_ENVELOPE_RECIPIENT",
    "message": "The recipient you have identified is not a valid recipient of the specified envelope."
}

我试图recipientId通过调用 get envelop API 来获取 并使用recipientId来检索视图但仍然无法正常工作。

如何生成此 URL?它应该是什么请求主体?


更新:下面的场景:

  1. 信封有1个代理和1个收件人,当发件人发出信封时,发件人不知道收件人的电子邮件和姓名,只有代理人知道信息(这就是为什么我将收件人的姓名和电子邮件设置为空)。
  2. 代理收到请求并输入该收件人的姓名和电子邮件地址
  3. 我们想为收件人获取嵌入的签名链接,但现在似乎即使使用通过调用 GET 获得的信息我们也无法检索它GET /restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients

更新 2:

正如建议为名称和电子邮件放置一个占位符并为签名者添加 clientUserId 一样,我使用请求正文调用创建信封 API:

{
  "recipients": {
    "agents": [
      {
        "clientUserId": "1",
        "email": "aaa@example.com.au",
        "name": "Agent",
        "recipientId": "1",
        "routingOrder": "1"
      }
    ],
    "signers": [
      {
        "clientUserId": "2",
        "email": "example@example.com",
        "name": "example",
        "recipientId": "2",
        "routingOrder": "2",
        "tabs": {
          "signHereTabs": [
            {
              "anchorIgnoreIfNotPresent": "false",
              "anchorString": "Signature_anchor_1",
              "anchorUnits": "pixels",
              "anchorYOffset": "0",
              "name": "Please sign here",
              "recipientId": "1"
            }
          ]
        }
      }
    ]
  },
  "emailSubject": "DocuSign API - Signature Request on Document Call",
  "documents": [
    {
      "documentId": "1",
      "name": "{{fileName}}",
      "documentBase64": "{{fileBase64}}"
    }
  ],
  "status": "sent"
}

对于代理,他无法更改签名者的电子邮件/姓名,因为当他访问 DocuSign 签名链接时,DocuSign 会弹出一条消息“所有收件人都已分配”。

所以我尝试使用intermediaries而不是agents调用请求正文:

{
  "recipients": {
    "intermediaries": [
      {
        "clientUserId": "1",
        "email": "aaa@example.com.au",
        "name": "Intermediary",
        "recipientId": "1",
        "routingOrder": "1"
      }
    ],
    "signers": [
      {
        "clientUserId": "2",
        "email": "example@example.com",
        "name": "example",
        "recipientId": "2",
        "routingOrder": "2",
        "tabs": {
          "signHereTabs": [
            {
              "anchorIgnoreIfNotPresent": "false",
              "anchorString": "Signature_anchor_1",
              "anchorUnits": "pixels",
              "anchorYOffset": "0",
              "name": "Please sign here",
              "recipientId": "1"
            }
          ]
        }
      }
    ]
  },
  "emailSubject": "DocuSign API - Signature Request on Document Call",
  "documents": [
    {
      "documentId": "1",
      "name": "{{fileName}}",
      "documentBase64": "{{fileBase64}}"
    }
  ],
  "status": "sent"
}

中介可以更新签名者的姓名/电子邮件。但在中介更改信息后,DocuSign 将向更新后的电子邮件地址发送一封电子邮件,即使该clientUserId签名者的请求正文中已经设置了该地址。

我想知道这是否是预期的行为:

  1. 每当中介更新签名者的姓名/电子邮件时,DocuSign 都会将电子邮件发送到更新的电子邮件地址,无论是否clientUserId为该签名者设置

这可能是另一个问题,但似乎 DocuSign 以不同的方式处理签名者和见证人的更新电子邮件事件。我想知道我观察到的情况是预期的情况:

  1. clientUserId当签名者更新/添加他的见证人的姓名/电子邮件时,如果为该见证人设置了,DocuSign 将不会将电子邮件发送到更新的电子邮件地址

更新3:

使用参数调用后intermediaries,我可以通过使用请求正文调用来检索签名者的签名 URL:

{
  "clientUserId": "2",
  "userName": "example",
  "email": "example@example.com",
  "recipientId": "2",
  "returnUrl": "https://www.google.com",
  "authenticationMethod": "email"
}

或者

{
  "clientUserId": "2",
  "userId": {{userId retrieved from get envelope recipients}},
  "recipientId": "2",
  "returnUrl": "https://www.google.com",
  "authenticationMethod": "email"
}

但是在中介更改了收件人的电子邮件/姓名后,上述请求正文都无法检索到签名 URL。我尝试了原始和更新clientId以及(email+ name)组合,但仍然无法正常工作。

我假设这是 DocuSign 的设计:在中介更改收件人的电子邮件/姓名后,不允许检索收件人的签名 URL,此签名 URL 只能通过 DocuSign 发送的电子邮件获得。如果设置了此电子邮件,则无法关闭此电子邮件clientUserId。这是对的吗?


更新 4: 按照建议,我尝试使用workflow带有请求正文的选项:

{
  "recipients": {
    "intermediaries": [
      {
        "clientUserId": "1",
        "email": "aaa@example.com.au",
        "name": "Intermediary",
        "recipientId": "1",
        "routingOrder": "1"
      }
    ],
    "signers": [
      {
        "clientUserId": "2",
        "email": "example@example.com",
        "name": "example",
        "recipientId": "2",
        "routingOrder": "2",
        "tabs": {
          "signHereTabs": [
            {
              "anchorIgnoreIfNotPresent": "false",
              "anchorString": "Signature_anchor_1",
              "anchorUnits": "pixels",
              "anchorYOffset": "0",
              "name": "Please sign here",
              "recipientId": "1"
            }
          ]
        }
      }
    ]
  },
  "workflow": {
    "workflowSteps": [
      {
        "action": "pause_before",
        "itemId": "2",
        "triggerOnItem": "routing_order"
      }
    ]
  },
  "emailSubject": "DocuSign API - Signature Request on Document Call",
  "documents": [
    {
      "documentId": "1",
      "name": "{{fileName}}",
      "documentBase64": "{{fileBase64}}"
    }
  ],
  "status": "sent"
}

我只能在路由订单 2 之前暂停工作流,因为如果我将workflow参数设置为实现“在中间接收者之后立即插入工作流暂停”,则会出现 400 错误:

  "workflow": {
    "workflowSteps": [
      {
        "action": "pause_after",
        "itemId": "1",
        "triggerOnItem": "routing_order"
      }
    ]
  },

在中间收件人更新姓名/电子邮件后,我进行了 API 调用来设置clientUserId签名者,它工作正常。但我无法通过{{baseUrl}}/v2.1/accounts/{{accountId}}/envelopes/{{envelopeId}}?resend_envelope=true请求正文调用 URL 来恢复工作流程:

{
    "workflow": {
        "workflowStatus": "in_progress"
    }
}

签名者的状态保持不变,created无法更新为sent,因此无法检索签名者的签名 URL。我们如何取消暂停工作流程?

标签: docusignapi

解决方案


代理填写收件人的姓名和电子邮件后,Docusign 会自动为该收件人发送一封电子邮件。我想知道这个电子邮件是否可以关闭?

更好的是给代理一个应用程序,让他们设置收件人的姓名/电子邮件。该应用程序还将设置 client_user_id 属性,以便不发送电子邮件。

需要姓名和邮箱吗?是的,但是如果您不知道此人的电子邮件(并且您正在使用嵌入式签名),那么您可以制作一封包含签名者姓名的电子邮件并使用该example.com域,因为该域不存在。例如,如果签名者是 Pat Johnson,则使用 patjohnson@example.com 作为电子邮件地址。

另请记住,如果您没有签名者的电子邮件地址,那么您可能(与您的法律顾问讨论)需要某种方式让签名者获得他们签署的内容的副本。通常,DocuSign 通过发送到此人的电子邮件来执行此操作。但是,如果您知道电子邮件是假的,您将需要一个不同的计划。

更新

我相信当intermediary收件人设置签名者的姓名/电子邮件时,签名者的属性,包括 client_user_id 正在被重置。因此签名者会收到邀请电子邮件,因为他们(此时)是普通签名者。

一种解决方法是在中间收件人之后立即插入工作流暂停。然后使用该暂停将签名者更改为具有 client_user_id。


推荐阅读