2016-09-20 3 views
1

Я использую DocuSign NodeJS SDK для создания запроса подписи из шаблона, который я уже настроил с консоли DocuSign. Я также создал текстовое поле в документе. Я хочу автоматически заполнить это поле при отправке запроса подписи.Заполнение вкладок в определении конверта DocuSign с использованием NodeJs SDK

Вот соответствующая часть моего кода (большинство из них просто копируются из рецептов):

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'); 

Когда я запускаю это я получаю следующее сообщение об ошибке:

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) 

Примечания : Если я прокомментирую часть SET TABS, этот код работает нормально, и я могу получить подписи и перенаправить пользователя.

Что я делаю неправильно?

Этот StackOverflow post, кажется, отвечает на этот вопрос при запросе с использованием какой-либо формы XML API. Но как я могу это сделать, используя SDK NodeJs?

ответ

0

Похоже, что мой код верен, но в SDK есть ошибка: Unable to send tabs #50.

Решение:

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

Я использовал эту функцию следующим образом:

tRole.setTabs(removeNulls(tabs)); 
Смежные вопросы