API Five9: как извлекать отчеты с использованием SOAP API и базовой проверки подлинности

Мы пытаемся получить доступ к данным с сервера Five9, используя отчетный API. Мы написали код ниже, но не получили никаких результатов. Для меня это похоже на проблему с сервером Authentication to Five9. Пожалуйста, проверьте, помогите нам понять, как мы можем вытащить данные для определенной кампании на регулярный промежуток времени и сохранить ее в хранилище данных.

<?php $soapUser = "USERNAME"; // username $soapPassword = "DEMOPASSWORD"; // password $soap_options = array( 'login' => $soapUser, 'password' => $soapPassword ); $auth_details = base64_encode($soapUser.":".$soapPassword); $client = new SoapClient("https://api.five9.com/wsadmin/v2/AdminWebService?wsdl", $soap_options); $header = new SoapHeader("https://api.five9.com/wsadmin/v2/AdminWebService/getCallLogReport", "authentication", "Basic $auth_details"); //echo "Response:\n" . $client->__getLastResponse() . "\n"; $client->__setSoapHeaders($header); $xml_data = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://service.admin.ws.five9.com/v2/AdminWebService/getCallLogReport"> <soapenv:Header/> <soapenv:Body> <v2:getCallLogReport> <campaigns>Campaign1</campaigns> </v2:getCallLogReport> </soapenv:Body> </soapenv:Envelope>'; echo $result = $client->getCallLogReport($xml_data, "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl", "https://api.five9.com/wsadmin/v2/AdminWebService/getCallLogReport",0); ?> 

Пример XML

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://service.admin.ws.five9.com/v2/"> <soapenv:Header/> <soapenv:Body> <v2:getCallLogReport> <!--Optional:--> <time> <!--Optional:--> <end>?</end> <!--Optional:--> <start>?</start> </time> <!--Optional:--> <criteria> <!--Optional:--> <ANI>?</ANI> <!--Zero or more repetitions:--> <agents>?</agents> <!--Zero or more repetitions:--> <callTypes>?</callTypes> <!--Zero or more repetitions:--> <campaigns>?</campaigns> <!--Optional:--> <DNIS>?</DNIS> <!--Zero or more repetitions:--> <dispositions>?</dispositions> <!--Zero or more repetitions:--> <lists>?</lists> <!--Zero or more repetitions:--> <skillGroups>?</skillGroups> </criteria> </v2:getCallLogReport> </soapenv:Body> </soapenv:Envelope> 

Похоже, ваша проблема заключается в том, что вы отправили ваше base64 имя пользователя / пароль в заголовок мыла. Он действительно должен быть включен в заголовок http. Мое решение в рубине, но, надеюсь, оно может помочь вам.

 soap_client = Savon.client( endpoint: "https://api.five9.com/wsadmin/AdminWebService/", namespace: "http://service.admin.ws.five9.com/", headers: { "Authorization" => "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" }, env_namespace: :soapenv, namespace_identifier: :ser, ssl_verify_mode: :none ) message = { "lookupCriteria" => { "criteria" => { "field" => "email_address", "value" => "something@example.com" } } } response = soap_client.call(:getContactRecords, message: message) p response.body 

Таким образом, ваш XML выглядит так.

 SOAP request: https://api.five9.com/wsadmin/AdminWebService/ Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==, SOAPAction: "getContactRecords", Content-Type: text/xml;charset=UTF-8, Content-Length: 471 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ser="http://service.admin.ws.five9.com/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ser:getContactRecords> <lookupCriteria> <criteria> <field>email_address</field> <value>something@example.com</value> </criteria> </lookupCriteria> </ser:getContactRecords> </soapenv:Body> </soapenv:Envelope> HTTPI POST request to api.five9.com (httpclient) SOAP response (status 200) <env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'> <env:Header></env:Header> <env:Body> <ns2:getContactRecordsResponse xmlns:ns2="http://service.admin.ws.five9.com/" xmlns:ns3="http://service.admin.ws.five9.com/v1/"> <return> <fields>number1</fields> <fields>email_address</fields> <records> <values> <data>5555555555</data> <data>something@example.com</data> </values> </records> </return> </ns2:getContactRecordsResponse> </env:Body> </env:Envelope> 

Я знаю, что это старый вопрос, но мы недавно переключились на использование Five9, и я не мог найти никаких примеров PHP для работы. Ниже показано, как подключиться с использованием стандартных учетных данных и выполнить список вызовов. Я включил всю структуру критериев отбора (закомментировал) для вашей справки. Если вы включите свойство выбора, вы должны указать соответствующие критерии.

 $soap = null; $wsdl = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl"; $user = "yourloginid"; $pass = "yourpassword"; $soap_options = array("login" => $user, "password" => $pass); $soap = new SoapClient($wsdl, $soap_options); /* create the callLogReportCriteria data selection structure */ $arryParams['time'] = array("start" => "2013-05-05T00:00:01", "end" => "2013-05-05T09:00:00"); $arryParams['criteria'] = array("callTypes" => array("INBOUND","OUTBOUND")); /************ Entire Structure for selection criteria *************/ /*$arryParams['criteria'] = array("ANI" => "6178752803", "Agents" => "", "callTypes" => array("INBOUND","OUTBOUND"), "campaigns" => "", "dispositions" => "", "Lists" => "", "skillGroups" => "" );*/ $result = $soap->getCallLogReport($arryParams); if(isset($result->return->records)) { /* you have records returned */ $objRecords = $result->return->records; for($i=0 ; $i < sizeof($objRecords) ; $i++) { /* do your processing */ printf("ANI: %s<br />", $objRecords[$i]->values->data[3]); //4th element has ANI } } 

Некоторые строки кода можно объединить, но для понимания я их разгневал. Вы также захотите использовать try / catch вокруг фактического вызова SOAP для обработки ошибок.

Надеюсь, это поможет сократить кривую обучения. Я знаю, что я бы любил это месяц назад !!

@JesseQ отличный пример! Помог мне тонну. Вот как я настроил его для запуска любого отчета Five9 в своем арсенале, включая те, которые вы создаете сами. Для пользовательских отчетов вам необходимо создать новую папку / отчет и поместить ее в раздел «Пользовательские отчеты» на веб-портале Five9. Надеюсь это поможет.

Подключение базы данных MySQL (dbConnect.php)

 <?php $mysqli = new mysqli("your db's IP address", "your db user", "your db password", "your db"); if ($mysqli->connect_error) { die('Connect Error: (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); } ?> 

Импорт базы данных Five9 / MySQL

 <?php require_once("../include/dbConnect.php"); $startDate = new DateTime(); $endDate = new DateTime(); $startDate->setDate(2015, 07, 22); $endDate->setDate(2015, 07, 22); $five9 = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl"; $five9Credentials = array("login" => "your Five9 username", "password" => "your Five9 password"); $soap = new SoapClient($five9, $five9Credentials); $runReportParam["criteria"]["time"] = array("start" => $startDate->format("Ymd\T00:00:00"), "end" => $endDate->format("Ymd\T23:59:59")); $runReportParam["folderName"] = "My Custom Reports"; $runReportParam["reportName"] = "My First Report"; $runReportResult = $soap->runReport($runReportParam); if(isset($runReportResult->return)){ $runReportData = $runReportResult->return; $isReportRunningParam["identifier"] = $runReportData; $isReportRunningParam["timeout"] = 10; $isReportRunningResult = $soap->isReportRunning($isReportRunningParam); if(empty($isReportRunningResult->return)){ $getReportResultParam["identifier"] = $runReportData; $getReportResult = $soap->getReportResult($getReportResultParam); if(isset($getReportResult->return->records)){ $getReportResultData = $getReportResult->return->records; echo "[" . date("Ymd h:i:s") . "] " . $runReportData . "\n"; for($x = 0; $x < $xx = count($getReportResultData); $x++){ $query = "REPLACE INTO MyTable( CallDate, CallTime, DNIS, Disposition, Zip, AreaCode, ANI) VALUES (?,?,?,?,?,?,?)"; $result = $mysqli->prepare($query); $result->bind_param("sssssss", $getReportResultData[$x]->values->data[0], $getReportResultData[$x]->values->data[1], $getReportResultData[$x]->values->data[2], $getReportResultData[$x]->values->data[3], $getReportResultData[$x]->values->data[4], $getReportResultData[$x]->values->data[5], $getReportResultData[$x]->values->data[6] ); $result->execute(); $result->store_result(); if ($result->error){ die('Connect Error: (' . $result->errno . ') ' . $result->error); } echo "[" . date("Ymd h:i:s") . "] " . $x . "\n"; } } else { echo "Error: " . $runReportData . " returned no data"; } } else { echo "Error: " . $runReportData . " exceeded the report runtime limit"; } } else { echo "Error: " . $runReportParam["reportName"] . " wasn't found"; } $mysqli->close(); ?> в <?php require_once("../include/dbConnect.php"); $startDate = new DateTime(); $endDate = new DateTime(); $startDate->setDate(2015, 07, 22); $endDate->setDate(2015, 07, 22); $five9 = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl"; $five9Credentials = array("login" => "your Five9 username", "password" => "your Five9 password"); $soap = new SoapClient($five9, $five9Credentials); $runReportParam["criteria"]["time"] = array("start" => $startDate->format("Ymd\T00:00:00"), "end" => $endDate->format("Ymd\T23:59:59")); $runReportParam["folderName"] = "My Custom Reports"; $runReportParam["reportName"] = "My First Report"; $runReportResult = $soap->runReport($runReportParam); if(isset($runReportResult->return)){ $runReportData = $runReportResult->return; $isReportRunningParam["identifier"] = $runReportData; $isReportRunningParam["timeout"] = 10; $isReportRunningResult = $soap->isReportRunning($isReportRunningParam); if(empty($isReportRunningResult->return)){ $getReportResultParam["identifier"] = $runReportData; $getReportResult = $soap->getReportResult($getReportResultParam); if(isset($getReportResult->return->records)){ $getReportResultData = $getReportResult->return->records; echo "[" . date("Ymd h:i:s") . "] " . $runReportData . "\n"; for($x = 0; $x < $xx = count($getReportResultData); $x++){ $query = "REPLACE INTO MyTable( CallDate, CallTime, DNIS, Disposition, Zip, AreaCode, ANI) VALUES (?,?,?,?,?,?,?)"; $result = $mysqli->prepare($query); $result->bind_param("sssssss", $getReportResultData[$x]->values->data[0], $getReportResultData[$x]->values->data[1], $getReportResultData[$x]->values->data[2], $getReportResultData[$x]->values->data[3], $getReportResultData[$x]->values->data[4], $getReportResultData[$x]->values->data[5], $getReportResultData[$x]->values->data[6] ); $result->execute(); $result->store_result(); if ($result->error){ die('Connect Error: (' . $result->errno . ') ' . $result->error); } echo "[" . date("Ymd h:i:s") . "] " . $x . "\n"; } } else { echo "Error: " . $runReportData . " returned no data"; } } else { echo "Error: " . $runReportData . " exceeded the report runtime limit"; } } else { echo "Error: " . $runReportParam["reportName"] . " wasn't found"; } $mysqli->close(); ?> с <?php require_once("../include/dbConnect.php"); $startDate = new DateTime(); $endDate = new DateTime(); $startDate->setDate(2015, 07, 22); $endDate->setDate(2015, 07, 22); $five9 = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl"; $five9Credentials = array("login" => "your Five9 username", "password" => "your Five9 password"); $soap = new SoapClient($five9, $five9Credentials); $runReportParam["criteria"]["time"] = array("start" => $startDate->format("Ymd\T00:00:00"), "end" => $endDate->format("Ymd\T23:59:59")); $runReportParam["folderName"] = "My Custom Reports"; $runReportParam["reportName"] = "My First Report"; $runReportResult = $soap->runReport($runReportParam); if(isset($runReportResult->return)){ $runReportData = $runReportResult->return; $isReportRunningParam["identifier"] = $runReportData; $isReportRunningParam["timeout"] = 10; $isReportRunningResult = $soap->isReportRunning($isReportRunningParam); if(empty($isReportRunningResult->return)){ $getReportResultParam["identifier"] = $runReportData; $getReportResult = $soap->getReportResult($getReportResultParam); if(isset($getReportResult->return->records)){ $getReportResultData = $getReportResult->return->records; echo "[" . date("Ymd h:i:s") . "] " . $runReportData . "\n"; for($x = 0; $x < $xx = count($getReportResultData); $x++){ $query = "REPLACE INTO MyTable( CallDate, CallTime, DNIS, Disposition, Zip, AreaCode, ANI) VALUES (?,?,?,?,?,?,?)"; $result = $mysqli->prepare($query); $result->bind_param("sssssss", $getReportResultData[$x]->values->data[0], $getReportResultData[$x]->values->data[1], $getReportResultData[$x]->values->data[2], $getReportResultData[$x]->values->data[3], $getReportResultData[$x]->values->data[4], $getReportResultData[$x]->values->data[5], $getReportResultData[$x]->values->data[6] ); $result->execute(); $result->store_result(); if ($result->error){ die('Connect Error: (' . $result->errno . ') ' . $result->error); } echo "[" . date("Ymd h:i:s") . "] " . $x . "\n"; } } else { echo "Error: " . $runReportData . " returned no data"; } } else { echo "Error: " . $runReportData . " exceeded the report runtime limit"; } } else { echo "Error: " . $runReportParam["reportName"] . " wasn't found"; } $mysqli->close(); ?> с <?php require_once("../include/dbConnect.php"); $startDate = new DateTime(); $endDate = new DateTime(); $startDate->setDate(2015, 07, 22); $endDate->setDate(2015, 07, 22); $five9 = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl"; $five9Credentials = array("login" => "your Five9 username", "password" => "your Five9 password"); $soap = new SoapClient($five9, $five9Credentials); $runReportParam["criteria"]["time"] = array("start" => $startDate->format("Ymd\T00:00:00"), "end" => $endDate->format("Ymd\T23:59:59")); $runReportParam["folderName"] = "My Custom Reports"; $runReportParam["reportName"] = "My First Report"; $runReportResult = $soap->runReport($runReportParam); if(isset($runReportResult->return)){ $runReportData = $runReportResult->return; $isReportRunningParam["identifier"] = $runReportData; $isReportRunningParam["timeout"] = 10; $isReportRunningResult = $soap->isReportRunning($isReportRunningParam); if(empty($isReportRunningResult->return)){ $getReportResultParam["identifier"] = $runReportData; $getReportResult = $soap->getReportResult($getReportResultParam); if(isset($getReportResult->return->records)){ $getReportResultData = $getReportResult->return->records; echo "[" . date("Ymd h:i:s") . "] " . $runReportData . "\n"; for($x = 0; $x < $xx = count($getReportResultData); $x++){ $query = "REPLACE INTO MyTable( CallDate, CallTime, DNIS, Disposition, Zip, AreaCode, ANI) VALUES (?,?,?,?,?,?,?)"; $result = $mysqli->prepare($query); $result->bind_param("sssssss", $getReportResultData[$x]->values->data[0], $getReportResultData[$x]->values->data[1], $getReportResultData[$x]->values->data[2], $getReportResultData[$x]->values->data[3], $getReportResultData[$x]->values->data[4], $getReportResultData[$x]->values->data[5], $getReportResultData[$x]->values->data[6] ); $result->execute(); $result->store_result(); if ($result->error){ die('Connect Error: (' . $result->errno . ') ' . $result->error); } echo "[" . date("Ymd h:i:s") . "] " . $x . "\n"; } } else { echo "Error: " . $runReportData . " returned no data"; } } else { echo "Error: " . $runReportData . " exceeded the report runtime limit"; } } else { echo "Error: " . $runReportParam["reportName"] . " wasn't found"; } $mysqli->close(); ?> с <?php require_once("../include/dbConnect.php"); $startDate = new DateTime(); $endDate = new DateTime(); $startDate->setDate(2015, 07, 22); $endDate->setDate(2015, 07, 22); $five9 = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl"; $five9Credentials = array("login" => "your Five9 username", "password" => "your Five9 password"); $soap = new SoapClient($five9, $five9Credentials); $runReportParam["criteria"]["time"] = array("start" => $startDate->format("Ymd\T00:00:00"), "end" => $endDate->format("Ymd\T23:59:59")); $runReportParam["folderName"] = "My Custom Reports"; $runReportParam["reportName"] = "My First Report"; $runReportResult = $soap->runReport($runReportParam); if(isset($runReportResult->return)){ $runReportData = $runReportResult->return; $isReportRunningParam["identifier"] = $runReportData; $isReportRunningParam["timeout"] = 10; $isReportRunningResult = $soap->isReportRunning($isReportRunningParam); if(empty($isReportRunningResult->return)){ $getReportResultParam["identifier"] = $runReportData; $getReportResult = $soap->getReportResult($getReportResultParam); if(isset($getReportResult->return->records)){ $getReportResultData = $getReportResult->return->records; echo "[" . date("Ymd h:i:s") . "] " . $runReportData . "\n"; for($x = 0; $x < $xx = count($getReportResultData); $x++){ $query = "REPLACE INTO MyTable( CallDate, CallTime, DNIS, Disposition, Zip, AreaCode, ANI) VALUES (?,?,?,?,?,?,?)"; $result = $mysqli->prepare($query); $result->bind_param("sssssss", $getReportResultData[$x]->values->data[0], $getReportResultData[$x]->values->data[1], $getReportResultData[$x]->values->data[2], $getReportResultData[$x]->values->data[3], $getReportResultData[$x]->values->data[4], $getReportResultData[$x]->values->data[5], $getReportResultData[$x]->values->data[6] ); $result->execute(); $result->store_result(); if ($result->error){ die('Connect Error: (' . $result->errno . ') ' . $result->error); } echo "[" . date("Ymd h:i:s") . "] " . $x . "\n"; } } else { echo "Error: " . $runReportData . " returned no data"; } } else { echo "Error: " . $runReportData . " exceeded the report runtime limit"; } } else { echo "Error: " . $runReportParam["reportName"] . " wasn't found"; } $mysqli->close(); ?> с <?php require_once("../include/dbConnect.php"); $startDate = new DateTime(); $endDate = new DateTime(); $startDate->setDate(2015, 07, 22); $endDate->setDate(2015, 07, 22); $five9 = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl"; $five9Credentials = array("login" => "your Five9 username", "password" => "your Five9 password"); $soap = new SoapClient($five9, $five9Credentials); $runReportParam["criteria"]["time"] = array("start" => $startDate->format("Ymd\T00:00:00"), "end" => $endDate->format("Ymd\T23:59:59")); $runReportParam["folderName"] = "My Custom Reports"; $runReportParam["reportName"] = "My First Report"; $runReportResult = $soap->runReport($runReportParam); if(isset($runReportResult->return)){ $runReportData = $runReportResult->return; $isReportRunningParam["identifier"] = $runReportData; $isReportRunningParam["timeout"] = 10; $isReportRunningResult = $soap->isReportRunning($isReportRunningParam); if(empty($isReportRunningResult->return)){ $getReportResultParam["identifier"] = $runReportData; $getReportResult = $soap->getReportResult($getReportResultParam); if(isset($getReportResult->return->records)){ $getReportResultData = $getReportResult->return->records; echo "[" . date("Ymd h:i:s") . "] " . $runReportData . "\n"; for($x = 0; $x < $xx = count($getReportResultData); $x++){ $query = "REPLACE INTO MyTable( CallDate, CallTime, DNIS, Disposition, Zip, AreaCode, ANI) VALUES (?,?,?,?,?,?,?)"; $result = $mysqli->prepare($query); $result->bind_param("sssssss", $getReportResultData[$x]->values->data[0], $getReportResultData[$x]->values->data[1], $getReportResultData[$x]->values->data[2], $getReportResultData[$x]->values->data[3], $getReportResultData[$x]->values->data[4], $getReportResultData[$x]->values->data[5], $getReportResultData[$x]->values->data[6] ); $result->execute(); $result->store_result(); if ($result->error){ die('Connect Error: (' . $result->errno . ') ' . $result->error); } echo "[" . date("Ymd h:i:s") . "] " . $x . "\n"; } } else { echo "Error: " . $runReportData . " returned no data"; } } else { echo "Error: " . $runReportData . " exceeded the report runtime limit"; } } else { echo "Error: " . $runReportParam["reportName"] . " wasn't found"; } $mysqli->close(); ?> с <?php require_once("../include/dbConnect.php"); $startDate = new DateTime(); $endDate = new DateTime(); $startDate->setDate(2015, 07, 22); $endDate->setDate(2015, 07, 22); $five9 = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl"; $five9Credentials = array("login" => "your Five9 username", "password" => "your Five9 password"); $soap = new SoapClient($five9, $five9Credentials); $runReportParam["criteria"]["time"] = array("start" => $startDate->format("Ymd\T00:00:00"), "end" => $endDate->format("Ymd\T23:59:59")); $runReportParam["folderName"] = "My Custom Reports"; $runReportParam["reportName"] = "My First Report"; $runReportResult = $soap->runReport($runReportParam); if(isset($runReportResult->return)){ $runReportData = $runReportResult->return; $isReportRunningParam["identifier"] = $runReportData; $isReportRunningParam["timeout"] = 10; $isReportRunningResult = $soap->isReportRunning($isReportRunningParam); if(empty($isReportRunningResult->return)){ $getReportResultParam["identifier"] = $runReportData; $getReportResult = $soap->getReportResult($getReportResultParam); if(isset($getReportResult->return->records)){ $getReportResultData = $getReportResult->return->records; echo "[" . date("Ymd h:i:s") . "] " . $runReportData . "\n"; for($x = 0; $x < $xx = count($getReportResultData); $x++){ $query = "REPLACE INTO MyTable( CallDate, CallTime, DNIS, Disposition, Zip, AreaCode, ANI) VALUES (?,?,?,?,?,?,?)"; $result = $mysqli->prepare($query); $result->bind_param("sssssss", $getReportResultData[$x]->values->data[0], $getReportResultData[$x]->values->data[1], $getReportResultData[$x]->values->data[2], $getReportResultData[$x]->values->data[3], $getReportResultData[$x]->values->data[4], $getReportResultData[$x]->values->data[5], $getReportResultData[$x]->values->data[6] ); $result->execute(); $result->store_result(); if ($result->error){ die('Connect Error: (' . $result->errno . ') ' . $result->error); } echo "[" . date("Ymd h:i:s") . "] " . $x . "\n"; } } else { echo "Error: " . $runReportData . " returned no data"; } } else { echo "Error: " . $runReportData . " exceeded the report runtime limit"; } } else { echo "Error: " . $runReportParam["reportName"] . " wasn't found"; } $mysqli->close(); ?> с <?php require_once("../include/dbConnect.php"); $startDate = new DateTime(); $endDate = new DateTime(); $startDate->setDate(2015, 07, 22); $endDate->setDate(2015, 07, 22); $five9 = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl"; $five9Credentials = array("login" => "your Five9 username", "password" => "your Five9 password"); $soap = new SoapClient($five9, $five9Credentials); $runReportParam["criteria"]["time"] = array("start" => $startDate->format("Ymd\T00:00:00"), "end" => $endDate->format("Ymd\T23:59:59")); $runReportParam["folderName"] = "My Custom Reports"; $runReportParam["reportName"] = "My First Report"; $runReportResult = $soap->runReport($runReportParam); if(isset($runReportResult->return)){ $runReportData = $runReportResult->return; $isReportRunningParam["identifier"] = $runReportData; $isReportRunningParam["timeout"] = 10; $isReportRunningResult = $soap->isReportRunning($isReportRunningParam); if(empty($isReportRunningResult->return)){ $getReportResultParam["identifier"] = $runReportData; $getReportResult = $soap->getReportResult($getReportResultParam); if(isset($getReportResult->return->records)){ $getReportResultData = $getReportResult->return->records; echo "[" . date("Ymd h:i:s") . "] " . $runReportData . "\n"; for($x = 0; $x < $xx = count($getReportResultData); $x++){ $query = "REPLACE INTO MyTable( CallDate, CallTime, DNIS, Disposition, Zip, AreaCode, ANI) VALUES (?,?,?,?,?,?,?)"; $result = $mysqli->prepare($query); $result->bind_param("sssssss", $getReportResultData[$x]->values->data[0], $getReportResultData[$x]->values->data[1], $getReportResultData[$x]->values->data[2], $getReportResultData[$x]->values->data[3], $getReportResultData[$x]->values->data[4], $getReportResultData[$x]->values->data[5], $getReportResultData[$x]->values->data[6] ); $result->execute(); $result->store_result(); if ($result->error){ die('Connect Error: (' . $result->errno . ') ' . $result->error); } echo "[" . date("Ymd h:i:s") . "] " . $x . "\n"; } } else { echo "Error: " . $runReportData . " returned no data"; } } else { echo "Error: " . $runReportData . " exceeded the report runtime limit"; } } else { echo "Error: " . $runReportParam["reportName"] . " wasn't found"; } $mysqli->close(); ?> с <?php require_once("../include/dbConnect.php"); $startDate = new DateTime(); $endDate = new DateTime(); $startDate->setDate(2015, 07, 22); $endDate->setDate(2015, 07, 22); $five9 = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl"; $five9Credentials = array("login" => "your Five9 username", "password" => "your Five9 password"); $soap = new SoapClient($five9, $five9Credentials); $runReportParam["criteria"]["time"] = array("start" => $startDate->format("Ymd\T00:00:00"), "end" => $endDate->format("Ymd\T23:59:59")); $runReportParam["folderName"] = "My Custom Reports"; $runReportParam["reportName"] = "My First Report"; $runReportResult = $soap->runReport($runReportParam); if(isset($runReportResult->return)){ $runReportData = $runReportResult->return; $isReportRunningParam["identifier"] = $runReportData; $isReportRunningParam["timeout"] = 10; $isReportRunningResult = $soap->isReportRunning($isReportRunningParam); if(empty($isReportRunningResult->return)){ $getReportResultParam["identifier"] = $runReportData; $getReportResult = $soap->getReportResult($getReportResultParam); if(isset($getReportResult->return->records)){ $getReportResultData = $getReportResult->return->records; echo "[" . date("Ymd h:i:s") . "] " . $runReportData . "\n"; for($x = 0; $x < $xx = count($getReportResultData); $x++){ $query = "REPLACE INTO MyTable( CallDate, CallTime, DNIS, Disposition, Zip, AreaCode, ANI) VALUES (?,?,?,?,?,?,?)"; $result = $mysqli->prepare($query); $result->bind_param("sssssss", $getReportResultData[$x]->values->data[0], $getReportResultData[$x]->values->data[1], $getReportResultData[$x]->values->data[2], $getReportResultData[$x]->values->data[3], $getReportResultData[$x]->values->data[4], $getReportResultData[$x]->values->data[5], $getReportResultData[$x]->values->data[6] ); $result->execute(); $result->store_result(); if ($result->error){ die('Connect Error: (' . $result->errno . ') ' . $result->error); } echo "[" . date("Ymd h:i:s") . "] " . $x . "\n"; } } else { echo "Error: " . $runReportData . " returned no data"; } } else { echo "Error: " . $runReportData . " exceeded the report runtime limit"; } } else { echo "Error: " . $runReportParam["reportName"] . " wasn't found"; } $mysqli->close(); ?>