2017-06-28 77 views
2

在C#中使用DocuSign API時,我很容易就能通過測試信封。現在我使用下圖來測試信封。DocuSign API:正確指定TemplateRoles

Docusign Flow

我知道我必須指定一個收件人TemplateRole,但是當我發送電子郵件,不如意的事情。我假定通過定義多個角色,將會設置簽署順序中的每個項目。無論出於何種原因,都不會發生,而是我發送了兩份文件。根據我包含的TemplateRoles,虛擬數據也會插入發件人名稱/地址。我想阻止這一點。

EnvelopeDefinition envDef = new EnvelopeDefinition(); 
envDef.EmailSubject = "[DocuSign C# SDK] - Sample Signature Request"; 

envDef.TemplateId = TemplateID; 

TemplateRole DirectorRole = new TemplateRole(); 
DirectorRole.Email = RecipientEmail; 
DirectorRole.Name = RecipientName; 
DirectorRole.RoleName = "Director"; 

TemplateRole TraineeRole = new TemplateRole(); 
TraineeRole.Email = RecipientEmail; 
TraineeRole.Name = "A Trainee"; 
TraineeRole.RoleName = "Trainee"; 

List<TemplateRole> rolesList = new List<TemplateRole>() { DirectorRole, TraineeRole }; 
envDef.TemplateRoles = rolesList; 

envDef.Status = "sent"; 
EnvelopesApi envelopesApi = new EnvelopesApi(); 
EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(accountId, envDef); 

您可以看到我可以選擇發送給批量收件人或個人。我想發送到其中一個或另一個。我怎麼能這樣做呢?這是我目前的代碼。因爲據我所知,如何分配不同類型的角色的一般示例將不勝感激,因爲並不存在大量的C#示例代碼。

回答

1

您可以使用DocuSign compositeTemplates功能並從模板創建信封。這比使用TemplateRole更靈活。

看到這個樣本code從模板創建信封。它使用DocuSign C# SDK

 string accountId = Init(); 


     var envDef = new EnvelopeDefinition() 
     { 
      EmailSubject = "Envelope with multiple recipient roles", 
      Status = "sent", 
      CompositeTemplates = new List<CompositeTemplate>() 
      { 
       new CompositeTemplate() 
       { 
        ServerTemplates = new List<ServerTemplate>() 
        { 
         new ServerTemplate() 
         { 
          TemplateId = "", //CreateTemplate() 
          Sequence = "1" 
         } 
        }, 
        InlineTemplates = new List<InlineTemplate>() 
        { 
         new InlineTemplate() 
         { 
          Sequence = "1", 
          Recipients = new Recipients() 
          { 
           Signers = new List<Signer>() 
           { 
            new Signer() 
            { 
             Email = "[email protected]", 
             Name = "Jane Doe", 
             RecipientId = "1", 
             RoleName = "Signer1", 
            }, 
            new Signer() 
            { 
             Email = "[email protected]", 
             Name = "Bob Doe", 
             RecipientId = "2", 
             RoleName = "Signer2", 
            }, 
            new Signer() 
            { 
             Email = "[email protected]", 
             Name = "Dan Doe", 
             RecipientId = "3", 
             RoleName = "Signer3", 
            } 

           } 
          } 
         } 
        } 
       } 
      } 
     }; 


     EnvelopesApi envelopesApi = new EnvelopesApi(); 
     EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(accountId, envDef); 
+1

只是要澄清任何其他人可能會問同一個問題,使用'CompositeTemplate'或'TemplateRole'的這兩種方法在我的模板中沒有批量發件人的情況下工作。現在我已經刪除了批量發送選項。 'CompositeTemplate'的靈活性非常有用。如果問題仍然存在,我將轉向關於實施批量發送的不同討論。 – lloyd

1

請顯示您創建envDef對象的完整代碼。 您是否設置模板ID?

RoleName對於每個TemplateRole對象必須完全匹配模板中的角色名稱。

必須設置模板定義的每個角色。如果您決定要從模板開始,然後修改它以刪除角色,我相信這是可能的,但您需要使用複合模板來完成此操作。相反,我建議你考慮有兩個模板,一個具有兩個角色,一個具有單一角色。

重新發送給批量收件人。我會問,作爲一個單獨的問題。我建議你使用逐步細化。首先讓您的信封與角色替換一起工作。

然後繼續討論發送由CSV文件(批量發送)控制的許多不同信封的不同問題。

+0

所以你建議刪除或者批量發送或個人收件人,並把它們分成兩個獨立的模板?據我所知,這可能是導致這個問題的原因。我只需要讓管理員更改模板。角色名稱確實匹配,但我假設我可以省略批量發送,例如爲單個個體採用不同的路由,但我想情況並非如此。 – lloyd

+0

對不起,如果我不清楚。我建議您先讓模板在沒有批量收件人的情況下運行。然後在StackOverflow上提出有關使用批量收件人和模板的其他問題。批量收件人需要上傳CSV文件等 - 他們是一個不同的魚羣。 –

+0

我絕對有你的意思。您的帖子確實有用。它向我指出了正確的方向,並且我最終還是想到了即使使用我給出的關係圖,CSV也是強制性的,但我需要關於模板角色的更多信息以及爲了清楚起見,因爲C#示例不是特別容易找到。 – lloyd