Docusignapi 如何对多个收件人使用同一模板?

Docusignapi 如何对多个收件人使用同一模板?,docusignapi,Docusignapi,我按照docusign开发中心上的“配方”从上传的pdf模板发送文档。它可以工作,但它是一个工作流,每个收件人都可以添加(和/或签名)同一个文档 我需要能够生成文件形成一个收件人列表相同的模板,并让他们都签署它。我认为最好的方法是以编程方式为每个收件人生成模板,使用我通过代码拉入的数据集填写他们的姓名和地址信息,然后发送给每个收件人签名。这是示例代码I treid,其中包含: string username = conf.ConfigurationManager.AppS

我按照docusign开发中心上的“配方”从上传的pdf模板发送文档。它可以工作,但它是一个工作流,每个收件人都可以添加(和/或签名)同一个文档

我需要能够生成文件形成一个收件人列表相同的模板,并让他们都签署它。我认为最好的方法是以编程方式为每个收件人生成模板,使用我通过代码拉入的数据集填写他们的姓名和地址信息,然后发送给每个收件人签名。这是示例代码I treid,其中包含:

            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);
string username=conf.ConfigurationManager.AppSettings[“username”];
字符串password=conf.ConfigurationManager.AppSettings[“password”];
字符串integratorKey=conf.ConfigurationManager.AppSettings[“integratorKey”];
//为所需环境初始化客户端(用于将生产更改为www)
ApiClient ApiClient=新ApiClient(“https://demo.docusign.net/restapi");
Configuration.Default.ApiClient=ApiClient;
字符串username=conf.ConfigurationManager.AppSettings[“username”];
字符串password=conf.ConfigurationManager.AppSettings[“password”];
字符串integratorKey=conf.ConfigurationManager.AppSettings[“integratorKey”];
//为所需环境初始化客户端(用于将生产更改为www)
ApiClient ApiClient=新ApiClient(“https://demo.docusign.net/restapi");
Configuration.Default.ApiClient=ApiClient;
//配置“X-DocuSign-Authentication”标头
字符串authHeader=“{\'Username\':\”“+Username+“\”,\“Password\:\”“+Password+“\”,\“IntegratorKey\”:\”“+IntegratorKey+“\”}”;
Configuration.Default.AddDefaultHeader(“X-DocuSign-Authentication”,authHeader);
//我们将从登录API调用中检索它
字符串accountId=null;
/////////////////////////////////////////////////////////////////
//步骤1:登录API
/////////////////////////////////////////////////////////////////
//登录调用在身份验证api中可用
AuthenticationApi authApi=新的AuthenticationApi();
LoginInformation loginInfo=authApi.Login();
//分析返回的第一个帐户ID(用户可能属于多个帐户)
accountId=loginInfo.LoginAccounts[0]。accountId;
var baseUrl=loginInfo.LoginAccounts[0].baseUrl;
//从登录调用使用新的基本url更新ApiClient
apiClient=新的apiClient(loginInfo.LoginAccounts[0].BaseUrl);
EnvelopedDefinition envDef=新的EnvelopedDefinition();
envDef.EmailSubject=“[TEMPLATE NAME]”;
//从帐户中的模板提供有效的模板ID
envDef.TemplateId=“[TEMPLATE ID]”;
var rolesList=新列表();
//通过设置名称、电子邮件和角色名称,将收件人分配给模板角色。请注意
//模板角色名称必须与保存在帐户模板中的占位符角色名称匹配。
TemplateRole tRole=新的TemplateRole();
tRole.Email=“XXX”;
tRole.Name=“XXX”;
tRole.RoleName=“测试角色”;
角色列表。添加(tRole);
envDef.TemplateRoles=角色列表;
envDef.Status=“已发送”;
EnvelopesApi EnvelopesApi=新的EnvelopesApi();
EnvelopesSummary EnvelopesSummary=envelopesApi.CreateEnvelope(accountId,envDef);
起初,我尝试恢复TemplateRole(此处为“trole”),为每封邮件分配新的电子邮件附件,然后使用信封定义发送每封邮件,但这仍然是向每个收件人发送相同的共享文档


那么,如果我希望每个收件人都有自己的可签名文档,我是否必须为他们创建一个模板,或者是否有一种更实用的方法来实现这一点,而我却没有看到

我有点困惑,但这是我的2美分:

模板基本上是带有特定文档、收件人角色、选项卡和其他业务逻辑的预设信封。其思想是重用相同的“模板”生成尽可能多的信封

一个非常简单的用例可能是我的开源项目贡献者的NDA表单:我从NDA PDF文档中设置了一个模板,将文档上传到DocuSign,为几个贡献者信息(姓名、电子邮件、日期和签名)添加占位符选项卡,以及接收者角色的占位符(我可以称之为贡献者)。保存模板后,我可以从DocuSign帐户复制模板ID,并在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);
    ...
  });
myRecipients.forEach(函数(myRecipient){
var rolesList=新列表();
TemplateRole tRole=新的TemplateRole();
tRole.Email=myRecipient.Email;
tRole.Name=myRecipient.Name;
tRole.RoleName=“测试角色”;
角色列表。添加(tRole);
envDef.TemplateRoles=角色列表;
EnvelopesSummary EnvelopesSummary=envelopesApi.CreateEnvelope(accountId,envDef);
...
});

myRecipients是什么类型的对象,它来自哪里?我希望能够有一个电子邮件地址和姓名列表,并能够生成一个pdf为每个人谁会得到一封电子邮件签署。我现在的做法似乎是在我设置的所有角色之间共享一个文档(“或enevlope”),以便他们可以呼叫签名。我需要每个人都能自己签名。MyRecipients是数据结构的一个示例,它应该包含收件人列表,你应该在某个地方有电子邮件/姓名列表,对吗?我们的想法就是循环浏览这个列表。请注意,我每次都有意将envDef.TemplatesRoles重置为一个新列表,以便它始终包含且仅包含一个收件人数据。不要向其中添加模板角色。您应该像我一样,在每次循环迭代时重置它。