2014-08-29 63 views
0

我遇到了通過API將自定義列表字段添加到信封的問題。問題實際上以列表字段的形式未出現在信封上,但當我發出「GET」請求來檢索信封上的所有自定義字段時,它顯示自定義字段在那裏。以下是添加自定義列表字段的功能,後面跟着來自DocuSign的xml字符串響應。自定義列表字段未在信封上顯示Docusign API

Private Sub btnTEST_Click(sender As System.Object, e As System.EventArgs) Handles btnTEST.Click 
    Dim envelopeId As String = txtEnvelopeID.Text 
    Dim url As String = baseUrl & "/envelopes/" & envelopeId & "/custom_fields" 
    Dim xmlString As String = 
     "<customFields>" & _ 
      "<listCustomFields>" & _ 
       "<listCustomField>" & _ 
        "<name>Test Custom List</name>" & _ 
        "<value>Donatello</value>" & _ 
        "<show>true</show>" & _ 
        "<required>true</required>" & _ 
        "<listItems>" & Chr(34) & "Donatello" & Chr(34) & ", " & Chr(34) & "Michaelangelo" & Chr(34) & ", " & Chr(34) & "Raphael" & ", " & Chr(34) & "Leonardo" & Chr(34) & "</listItems>" & _ 
       "</listCustomField>" & _ 
      "</listCustomFields>" & _ 
     "</customFields>" 
    basicRequestResponse("POST", url, xmlString) 
End Sub 

當檢索信封上的自定義字段時,DocuSign的XML響應。

<customFields xmlns="http://www.docusign.com/restapi" xmlns:i="http://www.w3.or/2001/XMLSchema-instance"> 
     <listCustomFields> 
      <listCustomField> 
       <fieldId>22047120</fieldId> 
       <name>Test List</name> 
       <required>true</required> 
       <show>true</show> 
       <value>Test 1</value> 
       <listItems xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
        <a:string /> 
       </listItems> 
      </listCustomField> 
      <listCustomField> 
       <fieldId>22049808</fieldId> 
       <name>Test Custom List</name> 
       <required>true</required> 
       <show>true</show> 
       <value>Donatello</value> 
       <listItems xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
        <a:string /> 
       </listItems> 
      </listCustomField> 
    </listCustomFields> 
    <textCustomFields> 
     <textCustomField> 
      <fieldId>21991323</fieldId> 
      <name>Leet Test</name> 
      <required>true</required> 
      <show>true</show> 
      <value>1337</value> 
     </textCustomField> 
    </textCustomFields> 

我意識到這可能是的DocuSign的API中的一個錯誤,但希望把它在這裏,看看是否有不同的答案。

回答

0

您的問題正在被事實,你設置< listItems中>在不正確導致的「創建自定義信封字段」請求 - 因此是的DocuSign創建自定義(名單)信封字段,但是忽略列表您在請求中指定的項目值。

這裏的一個有效的XML請求結構的一個例子,用於將(列表)自定義信封字段:

POST https://{{env}}.docusign.net/restapi/{{version}}/accounts/{{acctId}}/envelopes/{{envelopeId}}/custom_fields 

<customFields> 
    <listCustomFields> 
     <listCustomField> 
      <name>TestCustomList</name> 
      <value>Donatello</value> 
      <show>true</show> 
      <required>true</required> 
      <listItems> 
      <string>Donatello</string> 
      <string>Michaelangelo</string> 
      <string>Raphael</string> 
      <string>Leonardo</string> 
      </listItems> 
     </listCustomField> 
    </listCustomFields> 
</customFields> 

注意,< listItems中內的內容>元件是一系列<串>的元素 - 每個元素代表一個列表值。

在提交上面的請求之後,我可以執行「獲取自定義信封字段」請求(GET https://{{env}}.docusign.net/restapi/{{version}}/accounts/{{acctId}}/envelopes/{{envelopeId}}/custom_fields),並看到響應確實包含我在之前的「創建信封自定義字段」請求中指定的所有列表值:

<customFields xmlns="http://www.docusign.com/restapi" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <listCustomFields> 
     <listCustomField> 
      <fieldId>22062595</fieldId> 
      <name>TestCustomList</name> 
      <required>true</required> 
      <show>true</show> 
      <value>Donatello</value> 
      <listItems 
       xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
       <a:string>Donatello</a:string> 
       <a:string>Michaelangelo</a:string> 
       <a:string>Raphael</a:string> 
       <a:string>Leonardo</a:string> 
      </listItems> 
     </listCustomField> 
    </listCustomFields> 
</customFields> 
+0

謝謝你的幫助!這確實給了我需要的結果。另外,我將把這個提交給DocuSign以更新他們的文檔。目前他們的REST API指南指出,列表項應該「用引號輸入,並用逗號分開。」 – Litmas 2014-09-02 14:31:12

+0

好主意跟進DocuSign管理更新文檔。請記住,如果您的請求使用的是JSON格式,那麼指定一個字符串值列表「帶引號,用逗號分隔」將是正確的做事方式 - 只是在使用需要使用的XML格式時用於表示字符串值的元素(如上所述)。 – 2014-09-02 18:08:05