2014-03-05 125 views
0

將下列XML提交給DocuSign API時,我收到「INVALID_EMAIL_ADDRESS_FOR_RECIPIENT」錯誤。我試過手動更改地址併爲每個簽名者使用不同的地址。爲什麼當我可以將電子郵件發送到任何我已直接嘗試電子郵件的地址時,該請求會返回無效地址?Docusign無效的電子郵件

String [] emailaddr4 = new String {"[email protected]", "[email protected]", "[email protected]", "[email protected]"}; 

String xml = "<envelopeDefinition xmlns=\"http://www.docusign.com/restapi\">" + 
       "<accountId>" + accountId + "</accountId>" + 
       "<status>sent</status>" + 
       "<emailSubject>" + emailSubject + "</emailSubject>" + 
       "<emailBlurb>" + emailBlurb + "</emailBlurb>" + 
       "<templateId>81bcad0d-****-****-****-f281b24a4567</templateId>" + 
       "<templateRoles>" + 
        "<templateRole>" + 
         "<email>" + emailaddr4[0] + "</email>" + 
         "<userName>" + emailaddr4[0] + "</userName>" + 
         "<name>" + names[0] + "</name>" + 
         "<roleName>Student</roleName>" + 
         "<clientUserId>1</clientUserId>" + 
         "<tabs>" + 
          "<textTabs>" + 
           "<text>" + 
            "<tabLabel>sid</tabLabel>" + 
            "<value>" + student_id + "</value>" + 
           "</text>" + 
          "</textTabs>" + 
         "</tabs>" + 
        "</templateRole>" + 
        "<templateRole>" + 
         "<email>" + emailaddr4[1] + "</email>" + 
         "<name>" + names[1] + "</name>" + 
         "<roleName>Advisor</roleName>" + //must match role in envelope 
         "<userName>" + emailaddr4[1] + "</userName>" + 
         "<routingOrder>1</routingOrder>" + 
        "</templateRole>" + 
        "<templateRole>" + 
         "<email>" + emailaddr4[2] + "</email>" + 
         "<name>" + names[2] + "</name>" + 
         "<roleName>DeptHead</roleName>" + 
         "<userName>" + emailaddr4[2] + "</userName>" + 
         "<routingOrder>2</routingOrder>" + 
        "</templateRole>" + 
        "<templateRole>" + 
         "<email>" + emailaddr4[3] + "</email>" + 
         "<name>" + names[3] + "</name>" + 
         "<roleName>Dean</roleName>" + 
         "<userName>" + emailaddr4[3] + "</userName>" + 
         "<routingOrder>3</routingOrder>" + 
        "</templateRole>" + 
       "</templateRoles>" + 
      "</envelopeDefinition>"; 

這裏是寫入DataOutputSteam

<envelopeDefinition xmlns="http://www.docusign.com/restapi"> 
    <accountId>******</accountId> 
    <status>sent</status> 
    <emailSubject>This is a test.</emailSubject> 
    <emailBlurb>Java DS Test</emailBlurb> 
    <templateId>81bcad0d-****-****-****-f281b24a4567</templateId> 
    <templateRoles> 
     <templateRole> 
      <email>[email protected]</email> 
      <userName>[email protected]</userName> 
      <name>Tester</name> 
      <roleName>Student</roleName> 
      <clientUserId>1</clientUserId> 
      <tabs> 
       <textTabs> 
        <text> 
         <tabLabel>sid</tabLabel> 
         <value>6644</value> 
        </text> 
       </textTabs> 
      </tabs> 
     </templateRole> 
     <templateRole> 
      <email>[email protected]</email> 
      <name>Alan advisor</name> 
      <roleName>Advisor</roleName> 
      <userName>[email protected]</userName> 
      <routingOrder>1</routingOrder> 
      </templateRole> 
     <templateRole> 
      <email>[email protected]</email> 
      <name>CTS</name> 
      <roleName>DeptHead</roleName> 
      <userName>[email protected]</userName> 
      <routingOrder>2</routingOrder> 
     </templateRole> 
     <templateRole> 
      <email>[email protected]</email> 
      <name>Jennifer</name> 
      <roleName>Dean</roleName> 
      <userName>[email protected]</userName> 
      <routingOrder>3</routingOrder> 
     </templateRole> 
    </templateRoles> 
</envelopeDefinition> 

這是響應請求的模板收件人時,實際的XML。

<recipients xmlns="http://www.docusign.com/restapi" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <agents/> 
    <carbonCopies/> 
    <certifiedDeliveries/> 
    <editors/> 
    <inPersonSigners/> 
    <intermediaries/> 
    <recipientCount>4</recipientCount> 
    <signers> 
     <signer> 
      <recipientId>9d44f02b-****-****-****-db256768d013</recipientId> 
      <recipientIdGuid>9d44f02b-****-****-****-db256768d013</recipientIdGuid> 
      <requireIdLookup>false</requireIdLookup> 
      <roleName>Student</roleName> 
      <routingOrder>1</routingOrder> 
      <status>created</status> 
      <templateLocked>false</templateLocked> 
      <templateRequired>true</templateRequired> 
      <email/> 
      <name/> 
      <signInEachLocation>false</signInEachLocation> 
     </signer> 
     <signer> 
      <recipientId>3a1f0ff1-****-****-****-bbecca30dc1a</recipientId> 
      <recipientIdGuid>3a1f0ff1-****-****-****-bbecca30dc1a</recipientIdGuid> 
      <requireIdLookup>false</requireIdLookup><roleName>DeptHead</roleName> 
      <routingOrder>3</routingOrder> 
      <status>created</status> 
      <templateLocked>false</templateLocked> 
      <templateRequired>true</templateRequired> 
      <email/> 
      <name/> 
      <signInEachLocation>false</signInEachLocation> 
     </signer> 
     <signer> 
      <recipientId>2dd69109-****-****-****-4773cabe5632</recipientId> 
      <recipientIdGuid>2dd69109-****-****-****-4773cabe5632</recipientIdGuid> 
      <requireIdLookup>false</requireIdLookup> 
      <roleName>Advisor</roleName> 
      <routingOrder>2</routingOrder> 
      <status>created</status> 
      <templateLocked>false</templateLocked> 
      <templateRequired>true</templateRequired> 
      <email/> 
      <name/> 
      <signInEachLocation>false</signInEachLocation> 
     </signer> 
     <signer> 
      <recipientId>085d8e2c-****-****-****-bdd92344e257</recipientId> 
      <recipientIdGuid>085d8e2c-****-****-****-bdd92344e257</recipientIdGuid> 
      <requireIdLookup>false</requireIdLookup><roleName>Dean</roleName> 
      <routingOrder>4</routingOrder> 
      <status>created</status> 
      <templateLocked>false</templateLocked> 
      <templateRequired>true</templateRequired> 
      <email/> 
      <name/> 
      <signInEachLocation>false</signInEachLocation> 
     </signer> 
    </signers> 
</recipients> 
+0

您可以更新您的問題發佈這類線路上的實際發送請求的XML痕跡? (你可以使用像Fiddler之類的工具輕鬆地生成一個請求跟蹤。) –

+0

@KimBrandl Kim我用代碼填充版本更新了原始問題,希望能夠提供更多信息。 – user2573754

+0

重新解決了您的問題,並在我的答案中提出瞭解決方案。 –

回答

2

我可以重現此錯誤信息,如果我試圖創建/使用模板,在模板指定所需每個接收者角色發送信封,但我不指定正確/完整的收件人角色名在我的創建信封請求中。

例如,我在的DocuSign模板指定兩個接受者角色 - Signer1Signer2 - 都需要這兩者:

DS Recipient Roles

補充說明一下 - 如果我這樣做a 獲取收件人對模板的API請求,響應還顯示需要兩個收件人角色(templateRequired = true):

{ 
    signers: [ 
     { 
      signInEachLocation: "false" 
      name: "" 
      email: "" 
      recipientId: "f1b5d256-d85c-42d3-b081-913fb93e13a7" 
      recipientIdGuid: "f1b5d256-d85c-42d3-b081-913fb93e13a7" 
      requireIdLookup: "false" 
      routingOrder: "1" 
      roleName: "Signer1" 
      status: "created" 
      templateLocked: "false" 
      templateRequired: "true" 
     } 
     { 
      signInEachLocation: "false" 
      name: "" 
      email: "" 
      recipientId: "79e8bc34-6a40-4cc5-90e1-e58d9707418e" 
      recipientIdGuid: "79e8bc34-6a40-4cc5-90e1-e58d9707418e" 
      requireIdLookup: "false" 
      routingOrder: "2" 
      roleName: "Signer2" 
      status: "created" 
      templateLocked: "false" 
      templateRequired: "true" 
     } 
    ] 
    agents: [ ] 
    editors: [ ] 
    intermediaries: [ ] 
    carbonCopies: [ ] 
    certifiedDeliveries: [ ] 
    inPersonSigners: [ ] 
    recipientCount: "2" 
} 

現在讓我們假設我送下面的「創建信封從模板」 API請求,並使用了錯誤的角色名稱爲第二收件人:

<envelopeDefinition xmlns="http://www.docusign.com/restapi"> 
    <accountId>a673cd1a-***-****-****-6f4bf80e54sd</accountId> 
    <status>sent</status> 
    <templateId>3C9D42D3-3E76-4669-861E-9670415E1AD3</templateId> 
    <templateRoles> 
     <templateRole> 
     <email>[email protected]</email> 
     <name>John Doe</name> 
     <roleName>Signer1</roleName> 
     </templateRole> 
     <templateRole> 
     <email>[email protected]</email> 
     <name>Jane Doe</name> 
     <roleName>RoleNameDoesntMatchWhatTheTemplateSpecifies</roleName> 
     </templateRole> 
    </templateRoles> 
</envelopeDefinition> 

響應包含此錯誤:

<errorDetails xmlns="http://www.docusign.com/restapi" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <errorCode>INVALID_EMAIL_ADDRESS_FOR_RECIPIENT</errorCode> 
    <message>The email address for the recipient is invalid. The recipient Id follows.</message> 
</errorDetails> 

基於此測試,我建議您驗證您的「Create Envelope」API請求是指定模板定義的所有必需收件人角色的收件人信息,並且還確認每個收件人的值爲<roleName>您的API請求確切匹配(包括拼寫和大小寫)模板中定義的角色名稱。

**** --------更新#1 - 2014年3月6日---------- ****

感謝您更新您的答案包括您遇到問題的模板的「獲取收件人」響應。這種反應表明,模板定義了4箇中的接受者角色:

<roleName>Student</roleName> 
<roleName>DeptHead</roleName> 
<roleName>Advisor</roleName> 
<roleName>Dean</roleName> 

你「創建信封從模板」要求供應信息4個接受者角色 - 但在請求中的4個角色名稱的2是不正確的(即做不匹配模板定義的角色名稱)。下面是你在你的「創建信封從模板」要求提供的角色:

<roleName>Student</roleName> 
<roleName>Advisor</roleName> 
<roleName>Dept Head of Major</roleName> 
<roleName>Dean of School</roleName> 

要解決你得到的錯誤,你需要做的角色名稱在「創建信封從模板」要求完全匹配您的模板定義的角色名稱。即,在 「創建信封從模板」 要求,您需要更改如下:

  • 變化<ROLENAME>專業部門主管 </ROLENAME >到<ROLENAME> DeptHead </ROLENAME >

  • 變化<學校的ROLENAME > 院長</ROLENAME >到<ROLENAME> 迪安 </ROLENAME >

**** --------更新#2 - 2014年3月6日------- --- ****

要進一步解決,我建議你:

  • 編輯中的DocuSign模板,使每個接收者角色必需 - 即,對於每個收件人角色,取消勾選「發件人無法刪除收件人」複選框(顯示在我的原始答案的第一張截圖中)。對所有四個收件人角色進行此更改後保存該模板。

  • 接下來,提交您的「Create Envelope」API請求。如果請求成功(即沒有錯誤響應),那麼這支持我懷疑您的請求中的收件人信息與某些模板角色不匹配。 (即使是這種情況 - 即沒有錯誤 - 您仍然需要找出哪個角色導致了問題,因爲即使您的API請求能夠成功創建Envelope,它也可能只用於某些四個收件人 - 不匹配的角色將從信封中刪除)。

其次,要弄清楚哪個角色是造成問題:

  1. 編輯該模板檢查「發件人無法刪除收件人」 複選框的第一個角色,拯救模板。

  2. 接下來,提交您的「Create Envelope」API請求。如果請求 成功(即沒有錯誤響應),那麼您剛剛製作的角色 是而不是是導致問題的原因之一。如果請求 失敗(即,錯誤消息「INVALID E-Mail」),則發現導致您的問題的角色 。在這種情況下,我可能會嘗試從模板中刪除角色 ,再次將其添加回模板,然後 驗證角色名稱是否與您在API中發送的內容完全匹配(區分大小寫)請求並重新嘗試API請求。

  3. 返回到第1步,爲模板中的下一個角色重複此過程...繼續重複,直到您完成所有4個角色的這些步驟(即,所有4個角色再次由模板需要)。

+0

對每個角色的要求轉變的建議是非常棒的。我沒有意識到可以完成或者已經完成。問題最終是XML中的routingOrder與儀表板/模板中roleName的路由順序不匹配。 routingOrder必須匹配模板中的內容。 – user2573754

+0

很高興聽到你已經想通了 - 謝謝你的更新。作爲一個附註 - 我認爲你甚至不需要在Create Envelope API請求中爲每個收件人提供路由指令(因爲模板已經爲收件人指定了路由指令)。 –

相關問題