Ruby docusign_esign:无法使用模板

时间:2019-01-28 19:50:46

标签: docusignapi

我正在尝试使用Docusign中的现有模板来发送信封以进行签名。但是,即使我使用模板角色来设置收件人,也会收到RECIPIENTS_NOT_PROVIDED错误消息。

如果我尝试添加签名者,则会得到ENVELOPE_IS_INCOMPLETE,我认为是因为它没有使用模板。

我知道凭据很好,并且能够创建一个新信封并在此处添加“签到”标签。但我只是不知道如何使用模板。我尝试在此处模拟node.js的示例:https://developers.docusign.com/esign-rest-api/code-examples/request-a-signature-via-email-using-a-template使代码相似,但没有用。

# Create the envelope request
envelope = DocuSign_eSign::EnvelopeDefinition.new({
  emailSubject: "my subject",   # BTW the documentation seems incorrect on this, it's camel-cased not underscore separated
  template_id: ENV['DS_TEMPLATE_ID'] || "98..........f"
})

role = DocuSign_eSign::TemplateRole.new({
  role_name: 'MyRole', # same string as defined in the template via web gui
  name: DSConfig.signer_name,
  email: DSConfig.signer_email
})

envelope.template_roles = [role];
envelope.status = "sent"

envelope_api = DocuSign_eSign::EnvelopesApi.new(@@api_client)
result = envelope_api.create_envelope(@@account_id, envelope)

应该创建一个新信封,但是给我:

message: {
  "errorCode": "RECIPIENTS_NOT_PROVIDED",
  "message": "No recipients were found in the request."
}

希望有人可以提供帮助,关于那里的红宝石用途的信息并不多。

编辑:经过大量实验并深入研究了gem代码,看来文档是不正确的,尤其是与camelCase vs下划线有关的文档。这是实际起作用的代码。希望可以帮助更多的人!

# Create the envelope request
envelope = DocuSign_eSign::EnvelopeDefinition.new({
  emailSubject: "my subject",
  emailBlurb: "Some Text for email body",
  templateId: ENV['DS_TEMPLATE_ID'] || "98..........f"
})
role = DocuSign_eSign::TemplateRole.new({
  roleName: 'MyRole', # same string as defined in the template via web gui
  name: DSConfig.signer_name,
  email: DSConfig.signer_email
})
text = [
  DocuSign_eSign::Text.new({
    tabLabel: 'texttabname', # these should match the template
    name: 'texttabname',
    value: "222.222.222-22"
  })]
tabs = DocuSign_eSign::Tabs.new
tabs.text_tabs = text
role.tabs = tabs
envelope.template_roles = [role];
envelope.status = "sent"

envelope_api = DocuSign_eSign::EnvelopesApi.new(@@api_client)
result = envelope_api.create_envelope(@@account_id, envelope)

瞧瞧!这实际上使用了模板,将其发送给签名者(作为其角色),并预先填写了文本标签。 ew!这里的主要困难是文档(https://www.rubydoc.info/github/docusign/docusign-ruby-client/DocuSign_eSign)都是用下划线分隔的名称,而实际上是驼峰式。我查看了它正在生成的REST请求,发现没有填写数据。

1 个答案:

答案 0 :(得分:0)

使用模板时,请务必记住模板中有两种类型的收件人: 1.固定 2.占位符。

第一种类型不需要其他工作。 第二种类型要求您在发送文档之前指定收件人的详细信息,电子邮件地址和姓名(即使不是第一个发送给收件人)。 为了使DocuSign与收件人匹配,我们使用不是GUID而是您称为占位符收件人的文本名称的roleName。它应与您在模板中定义收件人的方式完全匹配(而收件人ID,GUID对于模板和生成的信封将有所不同)。

这样做可以解决此问题。