2013-07-18 65 views
3

我想預先填寫與嵌入式簽名一起使用的模板文檔中的幾個字段。我正在使用C#。我通過DocuSign模板嚮導添加了數據字段,並想知道如何從c-sharp中的嵌入式簽名代碼預填充數據字段?在我的情況下,我在模板中添加了「出生日期和電話數據」字段,並且希望在將文檔拉到簽名時傳遞XML中的值。 以下是我有:我可以預先填寫嵌入式docusign表單上的其他字段嗎?

string requestBody = "<envelopeDefinition xmlns=\"http://www.docusign.com/restapi\">" + 
      "<accountId>" + accountId + "</accountId>" + 
      "<status>sent</status>" + 
      "<emailSubject>Electronic Release of Information</emailSubject>" + 
      "<emailBlurb>Please sign the release of information form</emailBlurb>" + 
      "<templateId>" + System.Configuration.ConfigurationManager.AppSettings.Get("DocusignTempId") + "</templateId>" + 
      "<templateRoles>" + 
      "<templateRole>" + 
      "<email>" + pUserEmail + "</email>" + // NOTE: Use different email address if username provided in non-email format! 
      "<name>" + pUserName + "</name>" + // username can be in email format or an actual ID string 
      "<tabs>" + 
      "<textTabs>" + 
      "<textTab>" + 
      "<tabLabel>DOB</tabLabel>" + 
      "<value>" + pDOB + "</value>" + 
      "</textTab>" + 
      "<textTab>" + 
      "<tabLabel>Telephone</tabLabel>" + 
      "<value>" + pTelephone + "</value>" + 
      "</textTab>" + 
      "</textTabs>" + 
      "</tabs>" + 
      "<roleName>Signer</roleName>" + 
      "<clientUserId>1</clientUserId>" + 
      "</templateRole>" + 
      "</templateRoles>" + 
      "</envelopeDefinition>"; 

在我創建了我的模板2個數據字段演示網站數據字段:標籤:生日,數據字段:標籤:電話

要知道我是什麼做錯了。簽名部分和其他一切工作正常。

+0

[重複的問題](http://stackoverflow.com/questions/17418066/how-do-i-pre-populate-the-values-of-docusign-tabs)這已經被回答 - 在您的請求正文您通過指定您在模板中設置的相同*** tabLabel ***來填充選項卡,並通過***值***屬性設置它的值。 – Ergin

回答

0

我有一些代碼,這樣做,但它使用JSON(不是XML)。那就是:

 // 
     // DocuSign Step 1. Login 
     // 
     , function(next) { 
      var options = { 
       "method": "GET" 
       , "headers": { 
        "X-DocuSign-Authentication": dsAuthHeader 
        , "content-type": "application/json" 
        , "accept": "application/json" 
       } 
       , "uri": "https://demo.docusign.net/restapi/v2/login_information" 
      }; 

      request(options, function(err, res, body) { 
       console.log("Login Result: \r\n", JSON.parse(body)) 
       baseUrl = JSON.parse(body).loginAccounts[0].baseUrl; 

       next(null); 
      }); 

     } 

     // 
     // DocuSign Step 2. Request Signature From Template 
     // 
     , function(next) { 
     var uri = baseUrl + "/envelopes" 
      , options = { 
       "method": "POST" 
       , "headers": { 
        "X-DocuSign-Authentication": dsAuthHeader 
        , "content-type": "application/json" 
        , "accept": "application/json" 
       } 
       , "uri": uri 
       , "body" : JSON.stringify({ 
        "emailSubject": "Patient Intake form from Human API" 
        , "templateId": templateId 
        , "templateRoles": [{ 
         "email": humanEmail 
         , "name": humanName 
         , "roleName": templateRoleName 
         , "clientUserId": 1 
         , "tabs" : { 
          "textTabs" : [{ 
           tabLabel : "Email Address", 
           value : humanEmail 
           } 
           , { 
            tabLabel : "Name", 
            value : humanName 
           } 
           , { 
            tabLabel : "Height", 
            value : height 
           } 
           , { 
            tabLabel : "Weight", 
            value : weight 
           } 
           ,{ 
            tabLabel : "Address 1", 
            value : '1212 Victoria Lane' 
           } 
           ,{ 
            tabLabel : "Address 2", 
            value : 'San Francisco, CA, 94109' 
           } 

          ] 
         } 
        }] 
        ,"status": "sent" 
       }) 
      }; 

     request(options, function(err, res, body) { 
      console.log("Request Envelope Result: \r\n", JSON.parse(body)); 
      next(null, body); 
     }) 
    } 

     // 
     // DocuSign Step 3. Get Send View 
     // 
     , function(body, next) { 
     var envelopeUri = JSON.parse(body).uri 
      , options = { 
       "method": "POST" 
       , "headers": { 
        "X-DocuSign-Authentication": dsAuthHeader 
        , "content-type": "application/json" 
        , "accept": "application/json" 
       } 
       , "uri": baseUrl + envelopeUri + "/views/recipient" 
       , "body": JSON.stringify({ 
        "authenticationMethod": "email", 
        "email": humanEmail, 
        "returnUrl": "http://humanapi.co/", 
        "userName": humanName, 
        "clientUserId": "1" 
       }) 
      }; 

     request(options, function(err, res, body) { 
      console.log("Get Embedded View: \r\n", JSON.parse(body)); 
      response.render('docusign', { signing_url: JSON.parse(body).url }); 
     }); 
    } 

我知道這是不是正是你所期待的(C#+ XML),但也許你可以抓住這個JSON,只是把它在C#中的請求?讓我知道。

+0

謝謝,我認爲我的代碼現在基於我的上述XML,但它仍然不是預填充的。我猜測它可能與我的模板和我創建的數據字段有關,我會去看看是否可以找到關於模板創建過程和創建數據字段的更多文檔,再次感謝您。 – newm0528

+0

我已經找到另一篇文章大約在同一時間聽起來像是同樣的問題可能在http://stackoverflow.com/questions/17600349/how-to-pre-fill-tabs-on-a-server-template-with-the- docusign-api。我很好e試圖修改模板字段以進行預填充,但無論我嘗試什麼,這些字段都不是預填充的。簽名和其他一切都很好。我不知道是否有反正你可以在演示網站上查看我的模板。如果有,它可能會有所幫助。 – newm0528

+0

您是否嘗試過使用JSON並查看是否有幫助? – mikebz

0

下投票,由於重複的問題,但是這是你會怎麼做:

"tabs": { 
    "textTabs": [ 
    { 
     "tabLabel": "Data Field 1", 
     "value": "Initial data goes here...", 
     "xPosition": "200", 
     "yPosition": "200", 
     "documentId": "1", 
     "pageNumber": "1" 
    }] 
} 
+0

這沒有完全回答。我正在使用C#代碼和XML。我在哪裏可以把這個XML格式? – newm0528

+0

你的意思是「你可以把xml放在哪裏」?它在你的請求中。在您提出這些問題之前,請仔細研究,如果您查看[DocuSign開發人員中心](http://www.docusign.com/developer-center),所有這些都可以輕鬆解決。如果你經過那裏,你會發現API演練,它正是你正在尋找的東西(例如C#中的嵌入式簽名示例,它使用XML請求體而不是JSON) – Ergin

+2

修改了我的問題。您的API演練不包含預填充答案,我發現了一篇有幫助的舊帖子,但它不起作用 – newm0528

相關問題