2017-04-20 109 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的響應),然後請求收件人令牌啓動簽名會話。