我已经尝试了几乎所有我能想到的东西,但无法让它工作。
我正在尝试在我的代码中设置访问代码,并使用 RequestSignatureFromTemplate 调用将其发送到模板角色。 现在,我的所有配置信息都是XML格式的。 我不反对使用JSON,但并非所有开发人员都知道JSON。
这是我的XML的一个片段。
<envelopeDefinition xmlns="http://www.docusign.com/restapi">
accountId>12345</accountId>
<status>sent</status>
<emailSubject>Test Form</emailSubject>
<emailBlurb>This is a template test.</emailBlurb>
<templateId>####-########</templateId>
<templateRoles>
<templateRole>
<accessCode>AccessCode124</accessCode>" +
<addAccessCodeToEmail>true</addAccessCodeToEmail>" +
<email>jevans@eclarifire.com</email>
<name>Test User</name>
<roleName>RoleOne</roleName>
<emailNotification>
<emailSubject>This is RoleOne's subject</emailSubject>
<emailBody>This is RoleOne's email.</emailBody>
<addAccessCodeToEmail>true</addAccessCodeToEmail>
</emailNotification>
</templateRole>
<templateRole>
<accessCode>AccessCode246</accessCode>
<email>jevans@eclarifire.com</email>
<name>Test User2</name>
<roleName>RoleTwo</roleName>
<emailNotification>
<emailBody>Your access code is 24680</emailBody>
</emailNotification>
</templateRole>
</templateRoles>
</envelopeDefinition>
您会注意到我在templateRole
节点中有两个不同的实现。 这是故意的,因为我正在尝试我能想到的一切。 在 templateRole(1) 中,我在两个不同的地方添加了 addAccessCodeToEmail
节点,但它在两个地方都不起作用。 我还尝试覆盖templateRole(1)
中的emailBlurb
节点,但它也不起作用。
我已经浏览了文档,它说您应该能够添加收件人格式遵循的任何内容,但我无法让它工作。
有人有什么想法吗?
我从未在"创建/发送信封"API 请求中使用过 addAccessCodeToEmail 属性,因为在收件人收到的电子邮件中包含访问代码会完全抵消使用访问代码进行身份验证的效果。 即,要求收件人输入访问代码的全部目的是在授予对信封的访问权限之前添加另一层保证 - 除了某人仅可以访问电子邮件收件箱的事实之外。 如果您要在收件人收到的电子邮件中包含访问代码,那么使用访问代码作为身份验证形式不会提供任何额外的安全优势 - 任何有权访问该电子邮件收件箱的人都可以轻松访问信封(与您根本不使用访问代码的结果相同)。
话虽如此,有一个属性(无论出于何种原因)应该允许您在收件人收到的电子邮件中包含访问代码 - 我也无法让它工作。 也许是一个错误,但DocuSign的某个人需要确认。 根据文档,这应该会导致包含访问代码的电子邮件:
POST https://{{env}}.docusign.net/restapi/{{version}}/accounts/{{acctId}}/envelopes
{
"status" : "sent",
"emailBlurb" : "please sign",
"emailSubject" : "Please sign your document",
"templateId" : "TEMPLATE_ID",
"templateRoles" : [{
"name" : "John Doe",
"email" : "JohnsEmail@outlook.com",
"roleName" : "Signer1",
"accessCode" : "1234",
"addAccessCodeToEmail": "true"
}]
}
此请求导致收件人需要输入访问代码才能访问信封,但 addAccessCodeToEmail 属性没有达到预期效果,因为访问代码不会出现在收件人收到的电子邮件中的任何位置。
替代方法(最佳实践):使用 API 创建/发送信封并要求访问代码作为收件人身份验证的形式时,最佳做法是执行以下操作,而不是将纯文本访问代码添加到电子邮件中:
- 使用应用程序知道的有关收件人的一段数据以编程方式设置 accessCode。
- 设置"电子邮件简介"(即电子邮件正文)以提供有关访问代码的提示。
例如,假设您的应用程序知道收件人的社会保险号。发出"创建信封"API 请求时:
- 将访问代码的值设置为收件人 SSN 的最后 4 位数字。
- 将 emailBlurb 的值设置为包含消息"您的访问代码是 SSN 的最后 4 位数字"。
以这种方式做事比简单地在电子邮件本身中包含访问代码(纯文本)要安全得多。
最后,关于您关于覆盖收件人的电子邮件主题和正文的问题 - 请参阅REST API指南(http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf)第290-291页上的电子邮件通知属性的定义:
- 重要说明:如果为一个收件人启用此功能,它将覆盖信封主题和电子邮件简介。此外,您必须为所有收件人启用电子邮件通知。
听起来您需要为每个收件人设置电子邮件通知,如果您希望它有任何效果。
几个示例,它们在创建信封 API 请求中使用"复合模板"来创建信封,并使用 ID 检查或电话身份验证作为收件人身份验证的方法。
收件人身份验证 = ID 检查
POST https://{{env}}.docusign.net/restapi/{{version}}/accounts/{{acctId}}/envelopes
{
"emailSubject": "Please sign",
"emailBlurb": "Please sign...thanks!",
"status": "sent",
"compositeTemplates": [
{
"serverTemplates": [
{
"sequence" : 1,
"templateId": "TEMPLATE_ID"
}],
"inlineTemplates": [
{
"sequence" : 2,
"recipients": {
"signers" : [{
"email": "SallysEmail@outlook.com",
"name": "Sally Adamson",
"recipientId": "1",
"roleName": "ROLE_NAME",
"requireIdLookup": "true",
"idCheckConfigurationName": "ID Check $"
}]
}
}]
}]
}
收件人身份验证 = 电话身份验证
POST https://{{env}}.docusign.net/restapi/{{version}}/accounts/{{acctId}}/envelopes
{
"emailSubject": "Please sign",
"emailBlurb": "Please sign...thanks!",
"status": "sent",
"compositeTemplates": [
{
"serverTemplates": [
{
"sequence" : 1,
"templateId": "TEMPLATE_ID"
}],
"inlineTemplates": [
{
"sequence" : 2,
"recipients": {
"signers" : [{
"email": "SallysEmail@outlook.com",
"name": "Sally Adamson",
"recipientId": "1",
"roleName": "ROLE_NAME",
"requireIdLookup": "true",
"idCheckConfigurationName": "Phone Auth $",
"phoneAuthentication": {
"recipMayProvideNumber": "false",
"senderProvidedNumbers": ["206-444-5555"]
}
}]
}
}]
}]
}