预填充docusign模板字段

时间:2017-02-23 21:13:28

标签: docusignapi

使用Docusign node.js示例我可以发送模板,但是我无法预先设置字段值。

我查看了堆栈溢出,发现了3个不同版本的setTemplateRoles JSON格式。我已经尝试过所有这些并且都没有效果。 当我运行此代码时,电子邮件发送到foo@email.com,我的模板很好,但字段没有预先填写。

Q1。当他们说标签他们在谈论什么?什么是标签?

Q2。 tabLabel是指数据标签,还是不同的东西?

截图:
Data Label set to sellerName
在GUI中编辑模板时。

Q3。如何在我的docusign模板中添加“自定义字段”?我尝试通过单击自定义字段并添加一个来完成。但它似乎更像是一个字段模板,而不是一个特定的自定义字段。 当我运行API调用listCustomFields时,它返回空。

var docusign = require('docusign-esign');

// Note: Following values are class members for readability and easy testing
// TODO: Enter your DocuSign credentials
var UserName = 'foo@email.com';
var Password = 'SECRET1';

// TODO: Enter your Integrator Key (aka API key), created through your developer sandbox preferences
var IntegratorKey = 'SECRET2';

// for production environment update to 'www.docusign.net/restapi'
var BaseUrl = 'https://demo.docusign.net/restapi';

var RequestSignatureFromTemplate = function () {
  // TODO: Enter signer information and template info from a template in your account
  var signerName = 'Bob';
  var signerEmail = 'foo@email.com';
  var subject = "testing 123";
  var templateId = 'XXX';
  var templateRoleName = 'Seller';

  // initialize the api client
  var apiClient = new docusign.ApiClient();
  apiClient.setBasePath(BaseUrl);

  // create JSON formatted auth header
  var creds = '{"Username":"' + UserName + '","Password":"' + Password + '","IntegratorKey":"' + IntegratorKey + '"}';
  apiClient.addDefaultHeader('X-DocuSign-Authentication', creds);

  // assign api client to the Configuration object
  docusign.Configuration.default.setDefaultApiClient(apiClient);

  // ===============================================================================
  // Step 1:  Login() API
  // ===============================================================================
  // login call available off the AuthenticationApi
  var authApi = new docusign.AuthenticationApi();

  // login has some optional parameters we can set
  var loginOps = new authApi.LoginOptions();
  loginOps.setApiPassword('true');
  loginOps.setIncludeAccountIdGuid('true');
  authApi.login(loginOps, function (error, loginInfo, response) {
    if (error) {
      console.log('Error: ' + error);
      return;
    }

    if (loginInfo) {
      // list of user account(s)
      // note that a given user may be a member of multiple accounts
      var loginAccounts = loginInfo.getLoginAccounts();
      console.log('LoginInformation: ' + JSON.stringify(loginAccounts));

      // ===============================================================================
      // Step 2:  Create Envelope API (AKA Signature Request) from a Template
      // ===============================================================================

      // create a new envelope object that we will manage the signature request through
      var envDef = new docusign.EnvelopeDefinition();
      envDef.setEmailSubject(subject);
      envDef.setTemplateId(templateId);
      envDef.setTemplateRoles([
       {email:'foo@email.com',
       name:'bob',
       roleName:'Seller',
       // tabStatuses:[
       //   {tabStatus:[{
       //    tabLabel:'sellerName',
       //    tabValue:'test123'
       //   }]}
       // ]

       tabs:
         {textTabs:[{
          tabLabel:'sellerName',
          tabName:'sellerName',
          tabValue:'test123'
         }]},

       // tabStatuses:
       //   {textTabs:[{
       //    tabLabel:'sellerName',
       //    tabName:'sellerName',
       //    tabValue:'test123'
       //   }]}

       }
      ]);
      // console.log("eid", envDef.getEnvelopeId()); //undefined



      //I commented out the following example code. I looked through the docusign-esign source and it didn't seem to have a way to add tabStatuses (whatever that means) so I used the above code instead. Which works as far as sending the email, but doesn't work for pre-filling the fields.
      // create a template role with a valid templateId and roleName and assign signer info
      // var tRole = new docusign.TemplateRole();
      // tRole.setRoleName(templateRoleName);
      // tRole.setName(signerName);
      // tRole.setEmail(signerEmail);
      //
      // // 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');

      // use the |accountId| we retrieved through the Login API to create the Envelope
      var loginAccount = new docusign.LoginAccount();
      loginAccount = loginAccounts[0];
      var accountId = loginAccount.accountId;






      //it gets a little messy with junk experimental code. But what's not commented out is the same as the example, except I've added an additional callback in the deepest function.




      // instantiate a new EnvelopesApi object
      var envelopesApi = new docusign.EnvelopesApi();

      // envelopesApi.getDocuments(loginAccount.accountId)

      // call the createEnvelope() API
      envelopesApi.createEnvelope(accountId, envDef, null, function (error, envelopeSummary, response) {
        if (error) {
          console.log('Error: ' + error);
          return;
        }

        if (envelopeSummary) {
         console.log('EnvelopeSummary: ' + JSON.stringify(envelopeSummary));
         var envelopeId = envelopeSummary.envelopeId;
         console.log("envelopeId", envelopeId);
         // envelopesApi.listDocuments(accountId, envelopeId, function (error, data, response) {
         //  if (error) {console.log("error", error);return;}
         //  console.log("data", data);
         //  console.log("response", response);
         // });
         //envelopesApi.getDocument downloads the PDF binary 2.5MiB.
         var documentId = '1';
         var chunks=[];
         envelopesApi.listCustomFields(accountId, envelopeId, function (error, data, response) {
          if (error) {console.log("error", error);return;}
          console.log("typeof data", typeof data);
          // console.log("data.length", data.length);
          // // console.log("response", response);
          // response.on('data',chunk => chunks.push(chunk));
          // response.on('end',()=>{
          //  var allChunks = chunks.join('');
          //  console.log("allChunks", allChunks);
          // });
          console.log("data", data);
          // console.log("data.toJson()", data.toJson());
          console.log("data.getTextCustomFields()", data.getTextCustomFields());
         });

        }

      });
    }
  });
}; // end RequestSignatureFromTemplate()

0 个答案:

没有答案