首页 > 解决方案 > 如何将最终批准步骤添加到文档签名文档

问题描述

我正在使用 C# docusign.eSign 包。我有一个 word 文档,其中有一些锚文本供人们签署文档,这很好用,它在正确的位置添加了签名者。

我想添加一个最终批准者步骤。某个用户将在 docusign 中查看文档并批准它(可能是它的批准选项卡)。我们不希望文档上有额外的文本,但需要他们查看和批准它的日志,以及何时。

var recipients = new Recipients { Signers = new List<Signer>() };
int recipientIndex = 1;
for (int i = 0; i < request.Signers.Count; i++)
{
    var signerDetails = request.Signers[i];

    SignHere[] signHereTabs =
    {
        new SignHere
        {
            RecipientId = $"{recipientIndex}",
            AnchorString = signerDetails.SignatureAnchorText,
            AnchorXOffset = "0",
            AnchorYOffset = "0.5",
            AnchorIgnoreIfNotPresent = "true",
            AnchorUnits = "inches"
        }
    };

    var signer = new Signer
    {
        Email = signerDetails.EmailAddress,
        Name = signerDetails.Name,
        ClientUserId = GetClientId(signerDetails.Id),
        RecipientId = $"{recipientIndex}",
        Tabs = new Tabs { SignHereTabs = new List<SignHere>(signHereTabs),  }
    };

    recipients.Signers.Add(signer);
    recipientIndex++;
}

for (int i = 0; i < request.Approvers.Count; i++)
{
    var appoverDetails = request.Approvers[i];
    var approverHereTabs = new Approve[]
    {
        new Approve
        {
            RecipientId = $"{recipientIndex}",
            XPosition = "2",
            YPosition = "2",
        }
    };
    var approver = new Signer
    {
        Email = appoverDetails.EmailAddress,
        Name = appoverDetails.Name,
        ClientUserId = GetClientId(appoverDetails.Id),
        RecipientId = $"{recipientIndex}",
        Tabs = new Tabs { ApproveTabs = new List<Approve>(approverHereTabs), }
    };

    recipients.Signers.Add(approver);
    recipientIndex++;
}
var envelopeDefinition = new EnvelopeDefinition
            {
                EmailSubject = request.Title.ToTruncatedValue(100),
                Documents = new List<Document> { doc },
                Recipients = recipients,
                Status = "sent"
            };

我新建了一个 API 客户端实例

var apiClient = new ApiClient(
                configuration.UseLiveSystem
                    ? ApiClient.Production_REST_BasePath
                    : ApiClient.Demo_REST_BasePath);

从刷新令牌创建访问令牌。

var envelopesApi = new EnvelopesApi(apiClient);

EnvelopeSummary results = null;

            try
            {
                results = await envelopesApi.CreateEnvelopeAsync(configuration.AccountId, envelopeDefinition);
            }
            catch (ApiException e)
            {
                if (e.Message.Contains("USER_DOES_NOT_BELONG_TO_SPECIFIED_ACCOUNT"))
                {
                    throw new CodwellersException(
                        DocumentSigningServiceExceptionType.DocuSignPermissionNotGiven);
                }

                if (e.Message.Contains("USER_AUTHENTICATION_FAILED"))
                {
                    throw new CodwellersException(
                        DocumentSigningServiceExceptionType.DocuSignFault);
                }

                throw;
            }

我的猜测是在上面添加批准选项卡,并将 x 和 y 位置设置在文档的顶部。这似乎没有添加任何东西。

我找不到任何关于这些应该如何工作的文档。

标签: c#docusignapi

解决方案


批准和签名在docusign中基本上是一回事。批准只是不会在页面上放置任何内容(仍然作为签名进入日志)。

问题原来是锚字符串周围必须有空格,我没有注意到它与其他文本对接,所以它没有找到要匹配的字符串。


推荐阅读