2015-02-04 1 views
1

Omniture 데이터를 가져 오기 위해 API 호출을 위해 AdobeDigitalMarketing API (https://github.com/Adobe-Marketing-Cloud/marketing-cloud-php-sdk)를 사용하여 직접 확인했습니다.Omniture API를 빨리 호출하도록 요청했습니다.

define('OMNITURE_USERNAME', 'XXX'); 
    define('OMNITURE_SECRET', 'XXX'); 
    define('ROOT', dirname(__FILE__)); 

    require_once(ROOT.'/lib/AdobeDigitalMarketing/Autoloader.php'); 
    AdobeDigitalMarketing_Autoloader::register(); 

    $adm = new AdobeDigitalMarketing_Client(); 
    $adm->authenticate(OMNITURE_USERNAME, OMNITURE_SECRET); 

    echo $adm->getCompanyApi()->getEndpoint('Ford EU'); 

    $reportApi = $adm->getReportApi(); 


    $response = $reportApi->queueRanked(array(
     'reportSuiteID' => 'fmeuesprod', 
     'date'  => date('Y-m-d', strtotime("-1 day")), 
     'metrics' => array(
      array('id' => 'instances'), 
    ), 
     'elements' => array(
      array('id' => 'prop11'), 
    ), 
     'segments' => array(
     array('id' => 'prop11', 'selected' => array('brand:vehicle:brochures:interactive')) 
    ), 
     'segment_id' => 'dw:80632' 

    )); 

    $reportId = $response['reportID']; 
    //echo $reportId; 

    //$reportId = '67854594'; 

    do { 
     $report = $reportApi->getReport($reportId); 
     sleep(2); 
    } while ($report['status'] == 'not ready'); 

    print_r($report['report']); 

을하지만, 내가 몇 번을 호출하는 경우,이 반환 :

이 스크립트는 작품을 좋아 난 5 분 정도 기다리면

Fatal error: Uncaught exception 'AdobeDigitalMarketing_Api_ReportError' with message 'A system error has occurred' in /var/www/OmnitureAPI/lib/AdobeDigitalMarketing/Api/Report.php:202 Stack trace: #0 /var/www/OmnitureAPI/lib/AdobeDigitalMarketing/Api/Report.php(84): AdobeDigitalMarketing_Api_Report->returnResponse(Array) #1 /var/www/OmnitureAPI/test.php(43): AdobeDigitalMarketing_Api_Report->getReport(67856255) #2 {main} thrown in /var/www/OmnitureAPI/lib/AdobeDigitalMarketing/Api/Report.php on line 202 

을하고 F5 키를 눌러 스크립트는 경우, 작동 F5 키를 다시 눌러 오류를 반환하십시오. API 설명서에이 isure에 대한 정보가 표시되지 않으며 매번 다른 날짜로이 스크립트를 호출해야합니다.

어떤 문제를 해결할 수 있습니까?

감사합니다.

+0

Adobe의 API를 직접 사용하여 직접 스크립트를 작성해 본 경험이 있지만 게시 한 프레임 워크에 대한 경험이 없으므로 제공 할 수있는 도움이별로 없지만 오류가 없습니다. 어도비가 반환 한 실제 오류를 보여주지 않기 때문에 API PoV에서 도움이된다. 당신은 그것이 효과가 있다고 말하기 때문에, 나중에 그렇게하지 않는다면, 요청에 대해 생성 된'Nonce' 값에 문제가있는 것 같습니다. –

+0

기본적으로 Adobe API는 누구든지 어디서나 요청한 모든 요청에 ​​대해 고유 ID를 기대하도록 구성되어 있습니다. 충돌이 발생하면 Adobe API는 오류로 응답합니다. TBH 그러나, 나는 이것이 어도비의 말에 버그라고 생각한다. 왜냐하면 보통 나는 'Nonce'에 대해서'$ companyName .'_ '. $ randomString .'_'dechex (time())' * 가끔 그 오류가 발생합니다. 그러나 어쨌든, 그것은 단지 나의 첫 번째 추측 일 뿐이며, 당신은 그것이 어떻게 작동하는지는 언급하지만 다른 때에는 그렇지 않습니다. –

+0

첫 단계로 라이브러리에서 Adobe API 호출의 원시 응답을 출력하도록 코드를 업데이트하면 Adobe에서 실제로 반환하는 오류 메시지를 볼 수 있습니다. –

답변

0

내가 문제를 발견

이 API 1.3은 이제 "쓸모없는", 로그인 전에 API를 변경하는 경우, 모든 작업 : 모든 도움과 의견

$adm = new AdobeDigitalMarketing_Client(); 

    $adm->getHttpClient()->setOption('api_version', '1.4'); 

    $adm->authenticate(OMNITURE_USERNAME, OMNITURE_SECRET); 

감사합니다!