2017-07-07 75 views
0

我尝试通过DocuSign Rest API(Java)创建基于模板的信封时出现以下错误。获取错误消息作为不存在的特定文档ID。我曾经上传文档ID为“1”的文档,但是对于一个模板,我得到的错误不是这样。DocuSign Rest API - TAB_REFERS_TO_MISSING_DOCUMENT

Exception: com.docusign.esign.client.ApiException: { 
    "errorCode": "TAB_REFERS_TO_MISSING_DOCUMENT", 
    "message": "The DocumentId specified in the tab element does not refer to a document in this envelope. Tab refers to DocumentId 69681238 which is not present." 
} 

任何人都可以解释为上述情况?我是否需要在模板或代码中进行更改?任何额外的参数,我必须通过?

信封创建代码:

try { 
    Path path = Paths.get(file); 
    fileBytes = Files.readAllBytes(path); 
} catch (IOException ioExcp) { 
    System.out.println("Exception: " + ioExcp); 
    return null; 
} 
// add a document to the envelope 
Document doc = new Document(); 
String base64Doc = Base64.encodeBase64String(fileBytes); 

doc.setDocumentBase64(base64Doc); 
doc.setName(fileName); 

doc.setDocumentId("1"); 

List<Document> docs = new ArrayList<Document>(); 
docs.add(doc); 
envDef.setTemplateId(templateId()); 
envDef.setDocuments(docs); 

List<TemplateRole> templateRolesList = new LinkedList<TemplateRole>(); 
TemplateRole templateRole = new TemplateRole(); 

templateRole.setEmail(signerEmail); 
templateRole.setName(signerName); 
templateRole.setRoleName("Signer1"); 
templateRole.setRoutingOrder("1"); 
templateRolesList.add(templateRole); 

TemplateRole templateRole2 = new TemplateRole(); 
templateRole2.setName(signerName1); 
templateRole2.setRoleName("Signer2"); 
templateRole2.setRoutingOrder("2"); 
templateRole2.setEmail(signerEmail1);    
templateRolesList.add(templateRole2); 

envDef.setTemplateRoles(templateRolesList); 

envDef.setAllowRecipientRecursion("true"); 
envDef.setStatus("created"); 

try { 
    EnvelopesApi envelopesApi = new EnvelopesApi(); 

    EnvelopeSummary envelopeSummary = envelopesApi.createEnvelope(accountId(), envDef); 

    DocumentTemplateList documentTemplateList = new DocumentTemplateList(); 
    DocumentTemplate documentTemplate = new DocumentTemplate(); 
    documentTemplate.setTemplateId(templateId()); 
    documentTemplate.setDocumentId(doc.getDocumentId()); 
    documentTemplateList.getDocumentTemplates().add(documentTemplate); 

    envelopesApi.applyTemplateToDocument(accountId, 
      envelopId(), doc.getDocumentId(), 
      documentTemplateList); 


} catch (com.docusign.esign.client.ApiException ex) { 
    System.out.println("Exception: " + ex); 
    ex.printStackTrace(); 
} 

正如你提到的,从模板列表获得文档ID。我将文档数组视为空。这是回应。

class EnvelopeTemplateResult { 
    templateId: <templateId> 
    name: Template 1 
    shared: true 
    password: 
    description: 
    lastModified: 2017-06-06T19:45:35.7670000Z 
    pageCount: 15 
    uri: /templates/<uri> 
    folderName: Templates 
    folderId: <folderId> 
    folderUri: /folders/<folderUri> 
    parentFolderUri: null 
    owner: class UserInfo { 
     userName: User Name 
     email: [email protected] 
     userId: userID 
     userType: null 
     userStatus: null 
     uri: null 
     errorDetails: null 
    } 
    documents: [] 
    recipients: null 
    transactionId: null 
    status: null 
    documentsUri: null 
    recipientsUri: null 
    asynchronous: null 
    envelopeUri: null 
    emailSubject: Sign Document 
    emailBlurb: Please sign this document 
    envelopeId: null 
    signingLocation: Online 
    customFieldsUri: null 
    envelopeIdStamping: null 
    authoritativeCopy: false 
    notification: null 
    notificationUri: null 
    enforceSignerVisibility: false 
    enableWetSign: true 
    allowMarkup: false 
    allowReassign: false 
    createdDateTime: null 
    lastModifiedDateTime: null 
    deliveredDateTime: null 
    sentDateTime: null 
    completedDateTime: null 
    voidedDateTime: null 
    voidedReason: null 
    deletedDateTime: null 
    declinedDateTime: null 
    statusChangedDateTime: null 
    documentsCombinedUri: null 
    certificateUri: null 
    templatesUri: null 
    messageLock: null 
    recipientsLock: null 
    brandLock: null 
    brandId: null 
    useDisclosure: null 
    emailSettings: null 
    purgeState: null 
    lockInformation: null 
    is21CFRPart11: null 
    isUniversalSignatureEnvelope: null 
} 
+0

请分享您的信封创建代码和文档的ID。您可以使用[listTemplateDocuments](https://docs.docusign.com/esign/restapi/Templates/TemplateDocuments/list/)api来检索模板上的文档ID。另请参阅此[答案](https://stackoverflow.com/a/36614213/1219543) –

回答

0

在没有看到您的信封创建代码的情况下,很难告诉您确切的问题。

您最有可能在创建信封时使用了错误的DocumentId。

使用listTemplateDocuments api检索您的模板上的文档ID。在信封创建过程中使用模板中的确切DocumentId。

也看到您的模板此answeranswer

+0

感谢您的回复。我已经更新了代码片段并添加了getListOfTemplates的响应。再次感谢。 – Manikandan

+0

你的templateId是什么? –

+0

我在您的模板上看到1个文档,4个收件人和12个选项卡。您是否在创建信封时尝试替换模板上的文档? –