Telefon-Logs abrufen: Unterschied zwischen den Versionen

Aus sourceDESK Wiki
Wechseln zu: Navigation, Suche
(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&uuml;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.

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&uuml;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;
	}
}