2017-02-07 10 views
0

Я следил за «рецептом» в центре docusign dev для отправки документа из шаблона pdf, который я загрузил. Он работает, но это рабочий процесс, где каждый получатель может добавить (и/или подписать) тот же документ.Как использовать один и тот же шаблон для нескольких получателей?

Мне нужно иметь возможность создавать документы из одного и того же шаблона для списка получателей и подписывать их все. Я считаю, что лучший способ сделать это - это программно генерировать шаблоны для каждого получателя, заполнять их имя и адресную информацию, используя набор данных, который я втягиваю через код, а затем отправлять его каждому подписчику для подписывания. Это пример кода я трейд с:

  string username = conf.ConfigurationManager.AppSettings["username"]; 
     string password = conf.ConfigurationManager.AppSettings["password"]; 
     string integratorKey = conf.ConfigurationManager.AppSettings["integratorKey"]; 

     // initialize client for desired environment (for production change to www) 
     ApiClient apiClient = new ApiClient("https://demo.docusign.net/restapi"); 
     Configuration.Default.ApiClient = apiClient; 

string username = conf.ConfigurationManager.AppSettings["username"]; 
     string password = conf.ConfigurationManager.AppSettings["password"]; 
     string integratorKey = conf.ConfigurationManager.AppSettings["integratorKey"]; 

     // initialize client for desired environment (for production change to www) 
     ApiClient apiClient = new ApiClient("https://demo.docusign.net/restapi"); 
     Configuration.Default.ApiClient = apiClient; 

     // configure 'X-DocuSign-Authentication' header 
     string authHeader = "{\"Username\":\"" + username + "\", \"Password\":\"" + password + "\", \"IntegratorKey\":\"" + integratorKey + "\"}"; 
     Configuration.Default.AddDefaultHeader("X-DocuSign-Authentication", authHeader); 

     // we will retrieve this from the login API call 
     string accountId = null; 

     ///////////////////////////////////////////////////////////////// 
     // STEP 1: LOGIN API   
     ///////////////////////////////////////////////////////////////// 

     // login call is available in the authentication api 
     AuthenticationApi authApi = new AuthenticationApi(); 
     LoginInformation loginInfo = authApi.Login(); 

     // parse the first account ID that is returned (user might belong to multiple accounts) 
     accountId = loginInfo.LoginAccounts[0].AccountId; 
     var baseUrl = loginInfo.LoginAccounts[0].BaseUrl; 
     // Update ApiClient with the new base url from login call 
     apiClient = new ApiClient(loginInfo.LoginAccounts[0].BaseUrl); 

     EnvelopeDefinition envDef = new EnvelopeDefinition(); 
     envDef.EmailSubject = "[TEMPLATE NAME]"; 

     // provide a valid template ID from a template in your account 
     envDef.TemplateId = "[TEMPLATE ID]"; 
var rolesList = new List<TemplateRole>(); 

     // assign recipient to template role by setting name, email, and role name. Note that the 
     // template role name must match the placeholder role name saved in your account template. 
     TemplateRole tRole = new TemplateRole(); 
     tRole.Email = "XXX"; 
     tRole.Name = "XXX"; 
     tRole.RoleName = "Test Role"; 
     rolesList.Add(tRole); 
      envDef.TemplateRoles = rolesList; 
     envDef.Status = "sent"; 
     EnvelopesApi envelopesApi = new EnvelopesApi(); 
     EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(accountId, envDef); 

Сначала я попытался просто reinstatiating в TemplateRole («trole» здесь), assiging новые addessses электронной почты для каждого из них, а затем, используя определение конверта для отправки каждого из них, но по-прежнему отправляет каждому получателю один и тот же общий документ.

Должен ли я создать шаблон для каждого получателя, если я хочу, чтобы у них был свой собственный документ, который можно записать, или есть более практичный способ сделать это, что я не вижу?

ответ

1

Я немного запутался здесь, но вот мои 2 цента:

Шаблон в основном предварительно откалиброванный конверт с конкретными документами, роли реципиентов, вкладок и других бизнес-логики. Идея состоит в том, чтобы повторно использовать один и тот же «шаблон» для создания большого количества конвертов.

Очень простой пример использования может быть формой NDA для авторов моего проекта с открытым исходным кодом: я создал шаблон из документа NDA PDF, загрузил документ в DocuSign, добавил вкладки-заполнители для нескольких сведений о вкладчике (название , электронная почта, дата и подпись), а также заполнить роль получателя (которую я могу назвать вкладчиком). После того, как я сохранить шаблон, я могу скопировать идентификатор шаблона с моего счета DocuSign и использовать его в SDK, как вы упомянули, внутри цикла:

myRecipients.forEach(function(myRecipient) { 
    var rolesList = new List<TemplateRole>(); 
    TemplateRole tRole = new TemplateRole(); 
    tRole.Email = myRecipient.email; 
    tRole.Name = myRecipient.name; 
    tRole.RoleName = "Test Role"; 
    rolesList.Add(tRole); 
    envDef.TemplateRoles = rolesList; 
    EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(accountId, envDef); 
    ... 
    }); 
+0

Какой объект является myRecipients и откуда оно взялось? Я хотел бы иметь список адресов электронной почты и имен и иметь возможность генерировать PDF-файл для каждого человека, который получит электронное письмо для подписания. То, как я это делаю сейчас, похоже, разделяет один документ («или enevlope») на все роли, которые я настраиваю, чтобы они могли вызывать знак. Мне нужно, чтобы каждый человек мог подписать свои собственные. – user609926

+0

myRecipents используется в качестве примера структуры данных, которая должна содержать список получателей, у вас должен быть список адресов электронной почты где-то справа? Идея состоит в том, чтобы просто перебирать этот список. Обратите внимание, что я целенаправленно сбрасываю envDef.TemplatesRoles в новый список каждый раз, так что он всегда содержит 1 и только 1 данные одного получателя. Не добавляйте к нему роли шаблона. Вы должны сделать, как я, и сбросить его на каждой итерации цикла. –