2017-04-20 108 views
0

我有Soap API工作来获取令牌以通过IFrame加载文档并允许用户签名。但是,我需要获取它,以便可以将文档发送给其他人进行签名。正如我理解的事情,应该有一种方法来使用工作流将文档发送到一系列电子邮件地址,以便按特定顺序进行签名。不过,我还没有在显示这个的文档中找到任何东西。我也搜索了谷歌。 Docusign销售团队表示要么购买支持时间,要么使用Stackoverflow,所以我在这里。肥皂API和工作流程

我目前拥有将在Docusign系统中创建文档的代码,并且我可以在“等待他人”部分看到文档在那里并正在等待客户。但是,我从来没有收到任何地址的电子邮件。以下是我用来调用服务的代码。

我已检查所有电子邮件帐户,但他们没有任何docusign地址被阻止,并且没有任何垃圾邮件文件夹中。

public void CreateDocs(string emailSubject, List<FileToSign> files, IEnumerable<Recipient> recipents, IEnumerable<Tab> tabs) 
{ 
var envelope = new Envelope 
{ 
    Subject = emailSubject, 
    EmailBlurb = emailSubject, 
    AccountId = _apiAccountId, 
    Recipients = recipents.ToArray(), 
    Documents = files.Select((t, i) => new Document 
    { 
     PDFBytes = File.ReadAllBytes(t.PathToFile), 
     Name = t.DocumentName, 
     ID = (i + 1).ToString(), 
     FileExtension = t.Extension 
    }).ToArray(), 
    Tabs = tabs.ToArray() 
}; 

using (var client = new DSAPIServiceSoapClient("DSAPIServiceSoap")) 
{ 
    EnvelopeStatus status; 
    using (new OperationContextScope(client.InnerChannel)) 
    { 
     var httpRequestProperty = new HttpRequestMessageProperty(); 
     httpRequestProperty.Headers.Add("X-DocuSign-Authentication", _auth); 
     OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty; 
     status = client.CreateAndSendEnvelope(envelope); 
    } 
    if (!status.SentSpecified) return; 
    EnvelopeStatus = status; 
} 
} 

编辑:添加样品收件人:

  Recipients.Add(new Recipient 
     { 
      UserName = row["FirstSigner"].ToString(), 
      Email = row["SignerEmail"].ToString(), 
      ID = "1", 
      Type = RecipientTypeCode.Signer, 
      CaptiveInfo = new RecipientCaptiveInfo { ClientUserId = "1" }, 
      RoleName = "Signer1", 
      RoutingOrder = 1 
     }); 
+0

你能告诉我们你在'IEnumerable recipents'中设置的属性吗?它很难说,没有看到你的整个代码。 –

+0

我很好奇你是否有理由使用DocuSign SOAP api。 DocuSign [REST api](https://docs.docusign.com/esign/)具有更丰富的功能,并具有易于使用的[c#SDK](https://github.com/docusign/docusign-csharp-client) –

回答

2

您指定的签名者为Embedded recipients(又名俘虏收件人)

嵌入式签名 - 或收件人查看工作流程 - 允许用户直接通过您的应用或网站进行签名。当您嵌入收件人时,您告诉DocuSign平台,您的应用程序将生成签名URL,验证收件人,提交签名请求,并在交易完成后重新定向。

如果你想同时发送电子邮件到嵌入式的收件人,你将有除了设置embeddedRecipientStartURLclientUserId 看到这个answer

修改代码并添加EmbeddedRecipientStartURL

Recipients.Add(new Recipient 
    { 
     UserName = row["FirstSigner"].ToString(), 
     Email = row["SignerEmail"].ToString(), 
     ID = "1", 
     Type = RecipientTypeCode.Signer, 
     CaptiveInfo = new RecipientCaptiveInfo 
     { 
      ClientUserId = "1", 
      EmbeddedRecipientStartURL = "<Url to your App>" 
     }, 
     RoleName = "Signer1", 
     RoutingOrder = 1 
    }); 

查看更多有关EmbeddedRecipientStartURLhere

EmbeddedRecipientStartURL是改向嵌入式接收提供了有效的URL字符串发件人。使用此选项时,嵌入的收件人仍然会收到来自DocuSign的电子邮件,就像远程收件人一样,但当单击电子邮件中的文档链接时,收件人将通过DocuSign重定向到此URL以完成其操作。当路由到URL时,它取决于发件人的系统(服务器对URL的响应),然后请求收件人令牌启动签名会话。