Suche mehr Informationen zur API

MaRu

Free User
Mitglied seit
19. Mai 2020
Beiträge
9
Seit dem Update funktioniert unsere Anruferliste nicht mehr.
Mein Kollege, der unsere Anlage betreut, ist ebenfall unzufrieden
Über ein PHP-Script kann ich mich in die API einloggen und alle Anrufer des letzen Monats aufrufen.
Ich bin entsetzt, dass sich viele Felder nicht mehr mit der alten REST-API übereinstimmen.
Bis jetzt habe ich sehr viel Zeit in das Mappen der Felder inverstiert und verstehe die Zeitintervalle nicht:
"RingingDuration" und "TalkingDuration" sind in einem komischen Format, dass ich nicht kenne.
Was bedeutet "PT1.349718S" ?
Kann hier irgendjemand Hilfestellung geben? Wie wandle ich die Zeit in eine Dauer (früher das Feld "Duration") um?
 
Ich gehe davon aus, dass mehrere Entwickler die gleichen Probleme haben, wie ich.
Hier ein Auszug aus unserer Anrufliste:
class Anruferliste {

public function loginAPI() {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://name.3cx.de:5001/webclient/api/Login/GetAccessToken");
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array('Username' => 'admin', 'SecurityCode' => '', 'Password' => '**************')));

$serverLoginOutput = curl_exec($ch);

curl_close($ch);

return $serverLoginOutput;

}

public function getItemsPerPage($start, $length, $search, $page) {

$serverSystemOutput = array();
$serverLoginOutput = $this -> loginAPI();

$vars = json_decode($serverLoginOutput);

if ($vars -> Status == "AuthSuccess") {

/*echo "<pre>";
var_dump($vars -> Status);
var_dump($vars -> Token -> token_type);
var_dump($vars -> Token -> expires_in);
var_dump($vars -> Token -> access_token);
var_dump($vars -> Token -> refresh_token);
var_dump($vars -> TwoFactorAuth);
var_dump($start);
var_dump($page);
var_dump($length); die();*/

$authorization = "Authorization: " . $vars -> Token -> token_type . " " . $vars -> Token -> access_token;

$adress = "https://name.3cx.de:5001/";
$adress .= "xapi/v1/ReportCallLogData/Pbx.GetCallLogData(";
$adress .= "periodFrom=" . date("Y-m-d\TH:i:s.", strtotime("-1 month")) . "000Z,";
$adress .= "periodTo=" . date("Y-m-d\TH:i:s.") . "000Z,";
$adress .= "sourceType=0,sourceFilter='',";
$adress .= "destinationType=0,destinationFilter='',";
$adress .= "callsType=0,callTimeFilterType=0,callTimeFilterFrom='0%3A00%3A0',callTimeFilterTo='0%3A00%3A0',";
$adress .= "hidePcalls=true)?";
$adress .= "\$top=" . $length . "&\$skip=" . ($page - 1) * $length . "&";
$adress .= "\$filter=contains(tolower(DestinationDisplayName),'')%20or%20contains(tolower(SourceDisplayName),'')&";
$adress .= "\$orderby=SegmentId%20desc";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $adress);

curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $authorization));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$serverSystemOutput = curl_exec($ch);

curl_close($ch);

return $serverSystemOutput;
}
}
 
Da keiner außer mir die API benutzt, habe ich die Antwort selber gefunden.
Früher fand ich die 3CX toll. Nach dem Update kann ich die 3CX nicht mehr weiter empfehlen.
Das Update hat viel zu viele Probleme mit sich gebracht.
 
Nicht ganz, siehe 3cxconfigurationapi.yaml z.B. Zeile 11878: yyyy-MM-ddTHH:mm:ssZ ist zwingend
Optional können nach der Sekundenangabe noch Bruchteile mit . angegeben werden. Optional kann anstatt des Z eine andere Zeitzone angegeben werden.
 
Da keiner außer mir die API benutzt, habe ich die Antwort selber gefunden.
(...)

Ich benutze diese API auch und habe ein anderes Problem damit: bei externen Anrufen wird die ursprünglich angerufene Nummer nicht übermittelt.
Die meisten Anrufe gehen an ein Anrufverarbeitungsskript oder an Warteschlangen. In der Anrufliste wird nur dieser Skriptname oder der Name der Warteschlange angezeigt.

Derzeit behelfe ich mir mit einem zusätzlichen Abruf der Anrufe vom Trunk-Provider (easybell) um an diese Information zu kommen. Das nimmt halt etwas mehr Zeit in Anspruch, hat mir aber schon geholfen wenn es drum ging einen Fehler in der Konfiguration zu beheben.
 
... habe ein anderes Problem damit: bei externen Anrufen wird die ursprünglich angerufene Nummer nicht übermittelt.
Die meisten Anrufe gehen an ein Anrufverarbeitungsskript oder an Warteschlangen. In der Anrufliste wird nur dieser Skriptname oder der Name der Warteschlange angezeigt.
Sind die dafür benötigten DID im Format [+*]?[0-9]+ angelegt?
 
Ja, die DID ist *49...
Hier ist was der Report aktuell (betreffs Ziel) zurückgibt:
1733659625555.png
Aber das Call Reporting soll ja bald ein Update bekommen - dann ist das vermutlich auch erledigt.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
44.306
Beiträge
232.349
Mitglieder
78.271
Neuestes Mitglied
Oit-Nik