[英]UNKNOWN_ENVELOPE_RECIPIENT When making Embedded Signing API Call
[英]UNKNOWN_ENVELOPE_RECIPIENT when creating recipient view for embedded signing
在创建的许多信封中,我们有一个无法为嵌入式签名创建收件人查看 URL。 在下面的示例测试中,两个信封 ID 之一失败并显示
DocuSign.eSign.Client.ApiException : Error calling CreateRecipientView: {
"errorCode": "UNKNOWN_ENVELOPE_RECIPIENT",
"message": "The recipient you have identified is not a valid recipient of the specified
envelope."
}
而另一个信封 ID 通过。 请注意,我们创建了 ClientUserId 和 Email 设置为相同值的信封。 我们使用将 UserName 设置为由 GetRecipientsList 指定的值的技术(并且始终具有),但它仍然失败,因此这似乎与已经回答的类似问题不同。
[Theory]
[InlineData("redacted")]
[InlineData("redacted")]
public async Task ShouldCreateRecipientView(string envelopeId)
{
var accountId = await new DocuSignCredentials().GetDocuSignAccountIdAsync();
var envelopesApi = new EnvelopesApi();
var recipientList = await envelopesApi.ListRecipientsAsync(accountId, envelopeId);
Assert.Single(recipientList.Signers);
var signer = recipientList.Signers.First();
var viewOptions = new RecipientViewRequest()
{
ReturnUrl = "http://localhost/return",
ClientUserId = signer.Email,
AuthenticationMethod = "password",
UserName = signer.Name,
Email = signer.Email,
};
var viewUrl = await envelopesApi.CreateRecipientViewAsync(accountId, envelopeId, viewOptions);
}
编辑:如果我们像下面这样设置 viewOptions,它仍然会以同样的方式失败。 控制信封 ID 继续通过。
var viewOptions = new RecipientViewRequest()
{
ReturnUrl = "http://localhost/return",
AuthenticationMethod = "password",
ClientUserId = signer.ClientUserId,
Email = signer.Email,
UserId = signer.UserId,
RecipientId = signer.RecipientId
};
您可以将 RecipientId 添加到 RecipientViewRequest 对象吗? 并确保它与您在创建信封时使用的内容相匹配? 这应该有助于确定系统正在寻找哪个收件人。
结果证明这是采用签名的 Docusign 错误。
如果您的嵌入式签名代码可以找出最新采用的全名,并在创建收件人视图时将其用于 UserName 参数,那么它将起作用。 但是由于授权限制,很难获得最新的全名。
我们正在使用的解决方法是通过在创建信封时为 ClientUserId 使用随机字符串来为每个信封强制使用新的 Docusign 用户 ID。 并不完全令人满意,因为用户签名体验不再是最佳的——他们必须接受每个信封上的“电子签名和记录”条款,而且他们将无法维护签名列表。 它对所有损坏的信封和我们已经创建的信封没有帮助。
正如 kayjeta 所指出的,存在一个边缘情况,涉及多个飞行中的信封和为同一个俘虏签名者采用的多个签名。 最终结果是一个信封,其中 GetEnvelopeRecipients 调用返回的签名者姓名与信封中的内容不匹配,从而导致对收件人令牌的请求失败。
为了解决这个问题,应用程序可以:
1) 使用创建信封时定义的原始名称发出接收者令牌请求
2) 获取 GetEnvelopeRecipients 调用的结果并将其插入到UpdateEnvelopeRecipients调用中以“重新同步”信封并使所有内容重新对齐。
已针对此行为提交了产品问题。 它在内部被跟踪为 EC-1965。
如果受限制的收件人尚未完成签名,则原始收件人信息将继续有效。 如果他们已完成签名并且您想在随后的某个时间点将它们归还到信封中,那么您将需要获取现在更新的名称并将其用于收件人视图 API,或者您可以获取 userId 并使用该名称在“收件人视图”的所有后续使用中代替姓名和电子邮件。 我推荐后一种方法,因为签名者对名称的更改不会影响分配的“userId”值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.