Telefon-Logs abrufen: Unterschied zwischen den Versionen
Aus sourceDESK Wiki
(Die Seite wurde neu angelegt: „== Grundaufbau == ... == Methoden == ...“) |
|||
Zeile 1: | Zeile 1: | ||
+ | Sie können ein eigenes [[Telefon-Logs|Telefon-Log]]-Modul erstellen, um aus sourceDESK [[Telefon-Logs]] von einem neuen Anbieter abzurufen. | ||
+ | |||
== Grundaufbau == | == 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 == | == 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 == | ||
+ | <source lang="php"> | ||
+ | <?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; | ||
+ | } | ||
+ | } | ||
+ | </source> |
Aktuelle Version vom 10. Oktober 2018, 08:38 Uhr
Sie können ein eigenes Telefon-Log-Modul erstellen, um aus sourceDESK Telefon-Logs von einem neuen Anbieter abzurufen.
Inhaltsverzeichnis
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; } }