Sie können ein eigenes Telefon-Log-Modul erstellen, um aus sourceDESK Telefon-Logs von einem neuen Anbieter abzurufen.
Grundaufbau
Ein Telefon-Log-Modul bekommt ein eigenes Verzeichnis unter modules/telephone_log. In diesem Verzeichnis muss sich eine PHP-Datei mit dem gleichen Namen wie das Verzeichnis und der Endung .php befinden. In dieser PHP-Datei wird eine Klasse definiert, die von der Klasse TelephoneLogModule erbt.
Attribute
Es werden mehrere Attribute innerhalb der erstellten Klasse benötigt, die höchstens protected sein dürfen:
- $short gibt den Kurznamen des Moduls an, das entspricht dem Verzeichnis- bzw. Dateinamen
- $name gibt einen Anzeigenamen für das Modul an
Methoden
Folgende Methoden können definiert werden:
- getSettings() gibt die verfügbaren Modul-Einstellungen als Array zurück - auf sie kann nachher über das Array $this->options zugegriffen werden
- getLogs() gibt die verfügbaren Log-Einträge als Array zurück
Beispiel-Code
<?php class AnydeskLog extends TelephoneLogModule { protected $name = "Anydesk"; protected $short = "anydesk"; public function getSettings() { return Array( "licenseId" => Array("type" => "text", "name" => "Lizenz-ID"), "apiPassword" => Array("type" => "password", "name" => "API-Schlüssel"), ); } public function getLogs() { $licenseId = $this->options['licenseId']; $apiPassword = $this->options['apiPassword']; $time = time(); $contentHash = "2jmj7l5rSw0yVb/vlWAYkK/YBwk="; $resource = "/sessions?limit=20"; $tokenRaw = "GET\n$resource\n$time\n$contentHash"; $token = base64_encode(hash_hmac("sha1", $tokenRaw, $apiPassword, true)); $auth = "AD $licenseId:$time:$token"; $ch = curl_init("https://v1.api.anydesk.com:8081" . $resource); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: $auth"]); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $res = json_decode(curl_exec($ch)); curl_close($ch); if (empty($res->list)) { return Array(); } $c = Array(); foreach ($res->list as $i) { $c[] = Array( "start" => date("Y-m-d H:i:s", $i->{'start-time'}), "end" => date("Y-m-d H:i:s", $i->{'end-time'}), "info" => $i->to->alias, ); } return $c; } }