Docusignapi 为嵌入签名创建收件人视图时,收件人未知\u信封\u
在创建的许多信封中,有一个信封无法创建用于嵌入签名的收件人视图URL。在下面的示例测试中,两个信封ID中的一个失败Docusignapi 为嵌入签名创建收件人视图时,收件人未知\u信封\u,docusignapi,Docusignapi,在创建的许多信封中,有一个信封无法创建用于嵌入签名的收件人视图URL。在下面的示例测试中,两个信封ID中的一个失败 DocuSign.eSign.Client.ApiException : Error calling CreateRecipientView: { "errorCode": "UNKNOWN_ENVELOPE_RECIPIENT", "message": "The recipient you have identified is not a va
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."
}
而另一个envevlope ID通过。注意,我们创建的信封将ClientUserId和电子邮件设置为相同的值。我们使用的技术是将用户名设置为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错误
我们正在使用的解决方法是,在创建信封时,通过使用ClientUserId的随机字符串,强制每个信封使用新的Docusign用户id。这并不完全令人满意,因为用户的签名体验不再是最佳的——他们必须接受每个信封上的“电子签名和记录”条款,而且他们将无法维护签名列表。而且这对所有破损的信封和我们已经创建的信封都没有帮助。正如kayjeta所指出的,存在一个边缘案例,涉及多个飞行中的信封和同一个俘虏签名人的多个签名。最终结果是一个信封,其中getEnveloperRecipients调用返回的签名者名称与信封中的名称不匹配,从而导致对收件人令牌的请求失败 要解决此问题,应用程序可以: 1) 使用创建信封时定义的原始名称发出收件人令牌请求 2) 获取getEnveloperRecipients调用的结果,并将其插入到对信封进行“重新同步”的调用中,然后将所有内容重新对齐
已针对此行为提交产品问题。内部跟踪为EC-1965。如果受约束收件人尚未完成签名,原始收件人信息将继续有效。如果他们已完成签名,并且您希望在随后的某个时间点将其返回信封,则您需要获取现在更新的名称,并将其用于收件人视图API,或者您可以获取用户ID,并将其用于“收件人视图”的所有后续使用,以代替名称和电子邮件。我建议采用后一种方法,因为签名者对名称的更改不会影响分配的“userId”值 我们在创建信封时不设置RecipientId。让我们困惑的是,这个错误只发生在一个信封id上,而不是其他任何信封id上。这就像API在信封中对收件人撒谎一样。我们已经做了一些工作,并将其范围缩小到ClientUserid——如果我们传入UserId和ClientUserid对,那么“控制”信封ID仍然会通过,但测试中的信封ID会失败。如果我们只传入UserId,那么两个信封id都会传入。(但是,生成的嵌入式签名体验是只读的。)每个收件人都有一个与之关联的recipientID。如果您不知道它是什么,您可以通过拨打GET电话来找到它,以获取收件人的所有信息。您必须传递clientUserId才能嵌入签名体验是的,我们知道嵌入签名体验需要clientUserId;我们正试图分离出API不喜欢的内容——它显然无法匹配这个特定有问题的enveopeId的ClientUserId。另外,请参考上面的编辑——以上次编辑的方式构造视图请求选项应该是防弹的。是的,现在看到了,您正在传递RecipientId。您确定收件人ID、用户名和电子邮件与信封上的内容相同吗?