Как использовать один и тот же шаблон для нескольких получателей?

Я следовал «рецепту» в центре разработки docusign для отправки документа из загруженного мной шаблона 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);

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

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


person user609926    schedule 07.02.2017    source источник


Ответы (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);
    ...
  });
person Majid Mallis    schedule 07.02.2017
comment
Что за объект myRecipients и откуда он? Я хотел бы иметь список адресов электронной почты и имен и иметь возможность создавать PDF-файлы для каждого человека, который получит электронное письмо для подписи. То, как я это делаю сейчас, похоже, делится одним документом (или enevlope) для всех ролей, которые я настроил, чтобы они могли позывной. Мне нужно, чтобы каждый человек мог подписать свое. - person user609926; 08.02.2017
comment
myRecipents используется как пример структуры данных, которая должна содержать список получателей, у вас должен быть где-то список адресов электронной почты / имен, верно? Идея состоит в том, чтобы просто просмотреть этот список. Обратите внимание, что я целенаправленно сбрасываю envDef.TemplatesRoles на новый список каждый раз, чтобы он всегда содержал 1 и только 1 данные одного получателя. Не добавляйте к нему роли шаблона. Вы должны делать то же самое, что и я, и сбрасывать его на каждой итерации цикла. - person Majid Mallis; 08.02.2017