2015-11-20 76 views
0
csMgmtApp.controller('launchedController', ['$scope', '$http', '$document', '$resource', function ($scope, $http, $document, $resource) { 

    $scope.clientResult = {}; 
    $scope.data = {}; 

    $document.ready(function() { 
     var query_string = {}; 
     var query = window.location.search.substring(1); 
     var vars = query.split("&"); 
     for (var i=0; i < vars.length; i++) { 
      var pair = vars[i].split("="); 
      query_string[pair[0]] = pair[1]; 
     } 
     if (typeof(query_string.access_token) != "undefined") { 
      var result = {}; 
      result.state = query_string.state; 
      result.scope = query_string.scope; 
      result.access_token = query_string.access_token; 
      result.expires_in = query_string.expires_in; 
      result.resource_server_base_uri = query_string.resource_server_base_uri; 
      result.token_type = query_string.token_type; 
     } 

     $scope.clientResult = result; 

    }); 

    console.log($scope.clientResult); 

     $scope.startSessionPayload = { 
      'stationPhoneNumber': '5555555555', 
      'inactivityTimeout': '0', 
      'inactivityForceLogout': 'false' 
     }; 

    $http({ 
     'url': $scope.clientResult.resource_server_base_uri + 'services/v6.0/agent-sessions', 
     'method': 'POST', 
     'headers':{'Authorization': 'bearer ' + $scope.clientResult.access_token,'content-Type': 'application/json'}, 
     'data': JSON.stringify($scope.startSessionPayload) 
    }).success(function(data, status, headers, config) { 
     $scope.data = data; 
     console.log('data', $scope.data) 
    }).error(function(data, status, headers, config) { 
     $scope.status = status; 
    }); 

}]); 

上面的代碼給我404當我嘗試TE $ HTTP 「POST」。

當我console.log($ scope.clientResult.resource_server_base_uri),我得到:「https%3a%2f%2fapi-c7.incontact.com%2finContactAPI%2f」。

但是,我得到一個404,當我看的開發人員工具,我看到它試圖張貼到:"http://localhost:63342/Call_cntr/client/https%3a%2f%2fapi-c7.incontact.com%2finContactAPI%2fservices/v6.0/agent-sessions"

我開始認爲這是失敗,因爲「://本地主機... 「正在被」前置「到base_uri ......不知道爲什麼會發生這種情況。我感覺我提供了inContact API文檔中提到的所有內容。也許這是從AJAX到$ http的角度轉換?

任何幫助,非常感謝,我堅持..

一旦你有一個API認證令牌,使用此令牌,而其憑證你用得到令牌的代理創建代理會議。這是通過請求https://api- {集羣} .incontact.com/inContactAPI/services/v6.0/agent-sessions方法,並提供將傳遞給代理的「工作站ID」或電話號碼來完成的。

每文檔:https://developer.incontact.com/API/AgentAPI#!/Sessions/startSession

+0

出於測試目的,你可以硬編碼的網址,以確保它指向inContact服務器,而不是使用'$ scope.clientResult.resource_server_base_uri'(這似乎不正確地指向你的本地主機)? –

+0

你會在瀏覽器中輸入'http%3a%2f%2stackoverflow.com /'還是'http:// stackoverflow.com /'? – zeroflagL

+0

你應該發佈什麼正確的URL? –

回答

0

嘗試

result.resource_server_base_uri = unescape(query_string.resource_server_base_uri); 

我相信/實際上是一個分隔符,但%2f變成只是表示您的網址/字符普通字符。

unescape()已棄用;嘗試decodeURIComponent()

+0

太棒了。我得到了一個地方,得到一個401 - 未經授權現在,但這是一個新問題。unescape工作..即使,我的編輯試圖告訴我這是貶值.. – someoneHere

+0

coincdentinal,這解決了401,通過應用unescape auth_token。如果你不介意教育某人,爲什麼它從API中以錯誤的格式返回,爲什麼它需要unescape? – someoneHere

+0

如果其他人來到這個decodeURI可以用來代替unescape。 – someoneHere