2016-09-20 1 views
1

Ich verwende DocuSign NodeJS SDK, um eine Signaturanforderung aus einer Vorlage zu erstellen, die ich bereits über die DocuSign-Konsole eingerichtet habe. Ich habe auch ein Textfeld auf dem Dokument eingerichtet. Ich möchte dieses Feld automatisch ausfüllen, wenn ich die Signaturanforderung sende.Auffüllen von Registerkarten in einer DocuSign-Envelope-Definition mit NodeJs SDK

Hier ist der relevante Teil meines Codes (die meisten davon nur aus den Rezepten kopiert):

var envDef = new docusign.EnvelopeDefinition(); 
envDef.setEmailSubject('Ready for Signing'); 
envDef.setTemplateId(templateId); 

    // create a template role with a valid templateId and roleName and assign signer info 
var tRole = new docusign.TemplateRole(); 
tRole.setRoleName("Role1"); 
tRole.setName(role1FullName); 
tRole.setEmail(role1Email); 
tRole.setClientUserId(role1UserId); 

/**************SET TABS******************/ 
//set tabs 
var text = new docusign.Text(); 
text.setTabLabel("textFoo"); //This is the data label I setup from the console. 
text.setValue("Foo Bar Zoo"); //Some text I want to have pre-populated 

var textTabs = []; 
textTabs.push(text); 

var tabs = new docusign.Tabs(); 
tabs.setTextTabs(textTabs); 

tRole.setTabs(tabs); 
/**************END SET TAB******************/ 

// create a list of template roles and add our newly created role 
var templateRolesList = []; 
templateRolesList.push(tRole); 

// assign template role(s) to the envelope 
envDef.setTemplateRoles(templateRolesList); 



// send the envelope by setting |status| to 'sent'. To save as a draft set to 'created' 
envDef.setStatus('sent'); 

Als ich das laufen bekomme ich folgende Fehlermeldung:

Bad Request 
    at Request.callback (C:\Users\janak\NodeProjects\DocuFire\node_modules\superagent\lib\node\index.js:823:17) 
    at IncomingMessage.<anonymous> (C:\Users\janak\NodeProjects\DocuFire\node_modules\superagent\lib\node\index.js:1046:12) 
    at emitNone (events.js:91:20) 
    at IncomingMessage.emit (events.js:185:7) 
    at endReadableNT (_stream_readable.js:975:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

Hinweis : Wenn ich den SET TABS Teil kommentieren, läuft dieser Code gut und ich kann die unterzeichnende URL abrufen und meinen Benutzer dorthin umleiten.

Was mache ich falsch?

Diese StackOverflow post scheint diese Frage zu beantworten, wenn sie mit einer Form von XML-API anfordern. Aber wie kann ich das mit dem NodeJs SDK machen?

Antwort

0

Es scheint, dass mein Code korrekt ist, aber es gibt einen Fehler im SDK: Unable to send tabs #50.

Lösung:

I was correctly constructing the request -- but the node client populates all empty model parameters with null

Recursively stripping the nulls from the envelope before submitting the request solved this issue for me:

removeNulls = function(envelope) { 
    var isArray = envelope instanceof Array; 
    for (var k in envelope) { 
     if (envelope[k] === null) isArray ? obj.splice(k, 1) : delete envelope[k]; 
     else if (typeof envelope[k] == "object") removeNulls(envelope[k]); 
     if (isArray && envelope.length == k) removeNulls(envelope); 
    } 
    return envelope; 
} 

Reference

benutzte ich diese Funktion wie folgt:

tRole.setTabs(removeNulls(tabs)); 
Verwandte Themen