调用DocuSign createEnvelope返回'invalid Template Id'错误求助
问题
使用现有模板通过邮件请求签名时,JWT授权成功后调用docusign.EnvelopesApi(dsApiClient).createEnvelope接口,传入包含templateId的新信封,返回错误:
{"errorCode":"TEMPLATE_ID_INVALID","message":"Invalid template ID."}
已确认以下信息:
- 服务器授权成功
- 仅拥有一个DocuSign管理员账号(本人)
- TemplateId经多次核对确认正确
- 账号为付费账号
相关代码:
async function main(){ const args = makeEnvelope({ email: "signer email", name: "Signer name", templateId: "some template id", }); // Make the envelope request body let envelope = makeEnvelope(args) let results = await new docusign.EnvelopesApi(dsApiClient).createEnvelope( accountInfo.apiAccountId, {envelopeDefinition: envelope}); return results; } function makeEnvelope(args){ let env = new docusign.EnvelopeDefinition(); env.templateId = args.templateId; let signer = docusign.TemplateRole.constructFromObject({ email: args.signerEmail, name: args.signerName, roleName: 'signer'}); env.templateRoles = [signer]; env.status = "sent"; return env; } main();
解决方案
修正参数传递错误
代码中main函数存在逻辑错误:第一次调用makeEnvelope返回的是EnvelopeDefinition对象,却把它当作参数传给第二次makeEnvelope调用,导致args.templateId等参数无法正确获取。修正后的main函数如下:async function main(){ // 直接定义参数对象 const args = { signerEmail: "signer email", signerName: "Signer name", templateId: "some template id", }; let envelope = makeEnvelope(args) let results = await new docusign.EnvelopesApi(dsApiClient).createEnvelope( accountInfo.apiAccountId, {envelopeDefinition: envelope}); return results; }这是最可能导致模板ID无效的直接原因。
核对模板归属账号与API调用账号
确认模板创建时所属的账号ID和代码中accountInfo.apiAccountId完全一致。登录DocuSign后台查看模板详情,对比两个账号ID是否匹配。验证模板角色名称一致性
确保代码中roleName: 'signer'和模板内设置的签署者角色名称完全相同(区分大小写),若模板角色名不同,需同步修改代码中的对应值。确认JWT授权用户的模板访问权限
即使是管理员账号,也要确保JWT授权的用户是模板创建者,或已通过模板共享设置获得该模板的使用权限。
内容的提问来源于stack exchange,提问作者Jonas B
相关产品推荐
相关产品推荐

