我正在开发一个系统,需要以编程方式添加信封收件人。
我在 Docusign 端创建了一个模板,然后使用该模板的 ID 将信封发送给每个收件人,如下所示
$templateRoles = [
'signers' => []
];
foreach ($passengers as $passenger) {
$templateRoles['signers'][] = [
'email' => $passenger->email,
'name' => $passenger->name,
'role_name' => 'passenger',
'recipientId' => $passenger->id
];
}
$envelopeDefinition = new \DocuSign\eSign\Model\EnvelopeDefinition([
'email_subject' => 'Please sign the waiver',
'template_id' => $templateId,
'status' => 'created',
]);
try {
$envelopesApi = new EnvelopesApi($apiClient);
$envelopResults = $envelopesApi->createEnvelope($accountInfo[0]->getAccountId(), $envelopeDefinition);
$TemplatesApi->createRecipients($accountInfo[0]->getAccountId(), $templateId, $templateRoles);
$envelopeDefinition->setStatus('sent');
$updateResponse = $envelopesApi->update($accountInfo[0]->getAccountId(), $envelopResults->getEnvelopeId(), $envelopeDefinition);
我可以看到 Docusign 模板视图中的收件人列表已正确更新,但电子邮件未发送出去。只有在我发出另一个发送请求后,信封才会被发送。
这是有意的行为吗?在我向他们发送信封之前,模板是否需要有预先填写的收件人列表?
是的,这是预期的行为。
您不能“发送”模板,您不能请求在模板上签名,任何人都不能对模板进行签名或操作。
模板只是创建信封的一种方式。它对您有帮助,因为您可以一次又一次地创建类似类型的信封,而不必每次都指定 documents 或 tabs。如果需要,还可以从模板修改收件人。
已经发送并等待签名的信封无法通过 API 直接修改,您需要先将其置于“正确”模式以启动更正过程。如果信封仍处于“草稿”模式 - 您仍然可以对其进行修改。
我建议(但不是必需的)您使用 composite template 方法(而不是您共享的代码),如果您以后的需求发生变化,它可以提供更大的灵活性。