docusignapi - 如何为没有电子邮件和姓名的收件人获取嵌入式签名 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个收件人,当发件人发出信封时,发件人不知道收件人的电子邮件和姓名,只有代理人知道信息(这就是为什么我将收件人的姓名和电子邮件设置为空)。
- 代理收到请求并输入该收件人的姓名和电子邮件地址
- 我们想为收件人获取嵌入的签名链接,但现在似乎即使使用通过调用 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
签名者的请求正文中已经设置了该地址。
我想知道这是否是预期的行为:
- 每当中介更新签名者的姓名/电子邮件时,DocuSign 都会将电子邮件发送到更新的电子邮件地址,无论是否
clientUserId
为该签名者设置
这可能是另一个问题,但似乎 DocuSign 以不同的方式处理签名者和见证人的更新电子邮件事件。我想知道我观察到的情况是预期的情况:
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。我们如何取消暂停工作流程?
解决方案
代理填写收件人的姓名和电子邮件后,Docusign 会自动为该收件人发送一封电子邮件。我想知道这个电子邮件是否可以关闭?
更好的是给代理一个应用程序,让他们设置收件人的姓名/电子邮件。该应用程序还将设置 client_user_id 属性,以便不发送电子邮件。
需要姓名和邮箱吗?是的,但是如果您不知道此人的电子邮件(并且您正在使用嵌入式签名),那么您可以制作一封包含签名者姓名的电子邮件并使用该
example.com
域,因为该域不存在。例如,如果签名者是 Pat Johnson,则使用 patjohnson@example.com 作为电子邮件地址。
另请记住,如果您没有签名者的电子邮件地址,那么您可能(与您的法律顾问讨论)需要某种方式让签名者获得他们签署的内容的副本。通常,DocuSign 通过发送到此人的电子邮件来执行此操作。但是,如果您知道电子邮件是假的,您将需要一个不同的计划。
更新
我相信当intermediary
收件人设置签名者的姓名/电子邮件时,签名者的属性,包括 client_user_id 正在被重置。因此签名者会收到邀请电子邮件,因为他们(此时)是普通签名者。
一种解决方法是在中间收件人之后立即插入工作流暂停。然后使用该暂停将签名者更改为具有 client_user_id。
推荐阅读
- powershell - venv中cmd和powershell的不同行为
- spring-boot - 为 mybatis 不同级别配置 yml
- image - Xlsxwriter 旋转图像
- mongodb - 使用 Lookup 加入到 Mongo 聚合的 MySQL 更新
- javascript - Nest Js文件上传不适用于javascript FormData
- python - 定义 xlsxwriter 开始写入的单元格
- firebase - Firebase 身份验证:更新丢失的电话号码
- nginx - 域名的 Nginx 配置
- sql-server - 在注册期间尝试将完整的表复制到另一个架构中
- python - 当我尝试在此函数中打印第一个索引时,我被卡住了。我不明白为什么空格打印在一起