Docusign 复合模板预填充选项卡值

Docusign Composite template pre populating tab values

我正在使用 Docusign Java Rest 客户端库。我有一个带有简单文本字段的服务器模板。我想从我的程序发送电子签名请求,并在表单中预先填充数据,这样收件人就不必填写这些字段。

我的代码片段:

    EnvelopeDefinition envDef = new EnvelopeDefinition();
    envDef.setEmailSubject("ATTACHMENT TESTING");

    List<CompositeTemplate> compositeTemplates = new ArrayList<>();
    envDef.setCompositeTemplates(compositeTemplates);

    CompositeTemplate t1 = new CompositeTemplate();

    List<ServerTemplate> serverTemplates = new ArrayList<>();
    t1.setServerTemplates(serverTemplates);

    ServerTemplate st = new ServerTemplate();
    st.setSequence("1");
    st.setTemplateId("8as3232a-ea84-448d-852b-7617bf4d1759");
    serverTemplates.add(st);

    CompositeTemplate t2 = new CompositeTemplate();

    List<InlineTemplate> inlineTemplates = new ArrayList<>();
    t2.setInlineTemplates(inlineTemplates);

    InlineTemplate it = new InlineTemplate();
    it.setSequence("2");
    inlineTemplates.add(it);

    Document doc = new Document();
    doc.setDocumentId("2");
    doc.setName("SSN Copy");
    doc.setRemoteUrl("https://images.pexels.com/photos/10656/c4f497772338464a5d4e4109966e02f7.jpg");
    doc.setFileExtension("jpeg");
    t2.setDocument(doc);

    compositeTemplates.add(t1);
    compositeTemplates.add(t2);

    List<TemplateRole> templateRoles = new ArrayList<>();
    TemplateRole templateRole = new TemplateRole();

    templateRole.setRoleName("Customer");
    templateRole.setName(currentUser.getDisplayName());
    templateRole.setEmail(currentUser.getEmail());

    /********Prepopulating data to fields.
    Tabs tabs = new Tabs();

    Text text1 = new Text();
    text1.setTabLabel("firstName");
    text1.setValue("Adams");
    tabs.getTextTabs().add(text1);

    Text text2 = new Text();
    text2.setTabLabel("lastName");
    text2.setValue("Johnson");
    tabs.getTextTabs().add(text2);

    templateRole.setTabs(tabs);

    templateRoles.add(templateRole);

    // assign template role(s) to the envelope
    envDef.setTemplateRoles(templateRoles);

    envDef.setStatus("sent");

    // instantiate a new EnvelopesApi object
    EnvelopesApi envelopesApi = new EnvelopesApi();

    // call the createEnvelope() API
    try {
        EnvelopeSummary envelopeSummary = envelopesApi.createEnvelope(accountId, envDef);
    } catch (ApiException e) {
        e.printStackTrace();
    }

但表格已发送给收件人,我没有填写任何值。字段为空白。我做错了吗?请帮忙。

您正在混合使用两种不同的 DocuSign 设计模式,即您不应混合使用 Composite Template 和 TemplateRole。

当您有一个服务器模板并且想要预填充签名者信息时需要模板角色and/or您的应用程序模板中存在的任何 DocuSign 选项卡信息。

虽然复合模板可以做模板角色设计可以做的事情,但它还可以做很多其他事情,比如如果您有多个服务器模板并想在一个信封中使用所有这些模板,那么您需要复合模板,或者当您想将服务器模板与飞行中的文档混合使用时,您需要复合模板。

提供了复合模板的正确示例

在您的情况下,如果您只有一个服务器模板,并且如果您的信封中的文档仅由您的服务器模板提供,那么您只需要使用 TemplateRole。我没看懂传递文件SSN Copy有什么用,是需要客户签字的文件吗?