SMS-Module erstellen: Unterschied zwischen den Versionen
Aus sourceDESK Wiki
(Die Seite wurde neu angelegt: „== Grundaufbau == ... == Methoden == ...“) |
|||
Zeile 1: | Zeile 1: | ||
+ | Sie können ein eigenes [[SMS]]-Modul erstellen, um einen neuen [[SMS]]-Anbieter an sourceDESK anzubinden. | ||
+ | |||
== Grundaufbau == | == Grundaufbau == | ||
− | ... | + | Ein SMS-Modul bekommt ein eigenes Verzeichnis unter ''modules/sms''. 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 ''SMSProvider'' 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 | ||
+ | * ''$version'' definiert die Version des Moduls | ||
== 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 Objekt (stdClass) ''$this->options'' zugegriffen werden | ||
+ | * ''getTypes()'' soll ein Array verfügbarer SMS-Typen und die dazugehörigen Typen zurückgeben, die implementiert werden müssen | ||
+ | * ''sendMessage($recipient, $message, $type)'' erhält die Empfängernummer, die Nachricht und den SMS-Typen - diese Methode veranlasst sodann den Versand der SMS | ||
+ | |||
+ | == Beispiel-Code == | ||
+ | <source lang="php"> | ||
+ | <?php | ||
+ | |||
+ | class SMSKaufen extends SMSProvider { | ||
+ | protected $short = "smskaufen"; | ||
+ | protected $name = "SMSkaufen.com"; | ||
+ | protected $version = "1.0"; | ||
+ | |||
+ | public function getSettings() { | ||
+ | return Array( | ||
+ | "sender" => Array("type" => "text", "name" => "Absender", "help" => "11-16 Ziffern oder 11 Zeichen (je nach Typ)"), | ||
+ | "skid" => Array("type" => "text", "name" => "Benutzername"), | ||
+ | "skpw" => Array("type" => "password", "name" => "Passwort", "help" => "Alternativ den API-Schlüssel angeben"), | ||
+ | "skkey" => Array("type" => "password", "name" => "API-Schlüssel"), | ||
+ | "hint" => Array("name" => "Hinweis", "help" => "Bei SMSkaufen muss die IP-Whitelist für die API überprüft werden.", "type" => "hint"), | ||
+ | ); | ||
+ | } | ||
+ | |||
+ | public function sendMessage($recipient, $message, $type = 0) { | ||
+ | if (!array_key_exists($type, $this->getTypes())) { | ||
+ | return false; | ||
+ | } | ||
+ | |||
+ | $url = "https://www.smskaufen.com/sms/gateway/sms.php"; | ||
+ | $p = Array( | ||
+ | "id" => $this->options->skid, | ||
+ | "type" => $type, | ||
+ | "empfaenger" => $recipient, | ||
+ | "absender" => $this->options->sender, | ||
+ | ); | ||
+ | |||
+ | if (!empty($this->options->skkey)) { | ||
+ | $p['apikey'] = $this->options->skkey; | ||
+ | } else { | ||
+ | $p['pw'] = $this->options->skpw; | ||
+ | } | ||
+ | |||
+ | $message = urlencode(utf8_decode($message)); | ||
+ | $c = curl_init($url . "?" . http_build_query($p) . "&text=" . $message); | ||
+ | curl_setopt($c, CURLOPT_RETURNTRANSFER, true); | ||
+ | curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); | ||
+ | curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); | ||
+ | $r = curl_exec($c); | ||
+ | curl_close($c); | ||
+ | |||
+ | if ($r != "100") { | ||
+ | $codes = Array( | ||
+ | "112" => "Zugangsdaten ungültig", | ||
+ | "122" => "Fehler bei Übergabe", | ||
+ | "123" => "Datei nicht vorhanden", | ||
+ | "124" => "Fehlerhafter Parameter art", | ||
+ | "125" => "Fehler beim Verbindungsaufbau", | ||
+ | "140" => "Guthaben nicht ausreichend", | ||
+ | "160" => "Benutzer gesperrt", | ||
+ | ); | ||
+ | |||
+ | if (array_key_exists($r, $codes)) { | ||
+ | return $codes[$r]; | ||
+ | } | ||
+ | |||
+ | if (!empty($r)) { | ||
+ | return strval($r); | ||
+ | } | ||
+ | |||
+ | return false; | ||
+ | } | ||
+ | |||
+ | return true; | ||
+ | } | ||
+ | |||
+ | public function getTypes() { | ||
+ | return Array( | ||
+ | "3" => "Discount-SMS (DE)", | ||
+ | "4" => "Premium-SMS (DE)", | ||
+ | "8" => "Premium-SMS (weltweit)", | ||
+ | ); | ||
+ | } | ||
+ | } | ||
+ | </source> |
Aktuelle Version vom 10. Oktober 2018, 08:36 Uhr
Sie können ein eigenes SMS-Modul erstellen, um einen neuen SMS-Anbieter an sourceDESK anzubinden.
Inhaltsverzeichnis
Grundaufbau
Ein SMS-Modul bekommt ein eigenes Verzeichnis unter modules/sms. 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 SMSProvider 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
- $version definiert die Version des Moduls
Methoden
Folgende Methoden können definiert werden:
- getSettings() gibt die verfügbaren Modul-Einstellungen als Array zurück - auf sie kann nachher über das Objekt (stdClass) $this->options zugegriffen werden
- getTypes() soll ein Array verfügbarer SMS-Typen und die dazugehörigen Typen zurückgeben, die implementiert werden müssen
- sendMessage($recipient, $message, $type) erhält die Empfängernummer, die Nachricht und den SMS-Typen - diese Methode veranlasst sodann den Versand der SMS
Beispiel-Code
<?php class SMSKaufen extends SMSProvider { protected $short = "smskaufen"; protected $name = "SMSkaufen.com"; protected $version = "1.0"; public function getSettings() { return Array( "sender" => Array("type" => "text", "name" => "Absender", "help" => "11-16 Ziffern oder 11 Zeichen (je nach Typ)"), "skid" => Array("type" => "text", "name" => "Benutzername"), "skpw" => Array("type" => "password", "name" => "Passwort", "help" => "Alternativ den API-Schlüssel angeben"), "skkey" => Array("type" => "password", "name" => "API-Schlüssel"), "hint" => Array("name" => "Hinweis", "help" => "Bei SMSkaufen muss die IP-Whitelist für die API überprüft werden.", "type" => "hint"), ); } public function sendMessage($recipient, $message, $type = 0) { if (!array_key_exists($type, $this->getTypes())) { return false; } $url = "https://www.smskaufen.com/sms/gateway/sms.php"; $p = Array( "id" => $this->options->skid, "type" => $type, "empfaenger" => $recipient, "absender" => $this->options->sender, ); if (!empty($this->options->skkey)) { $p['apikey'] = $this->options->skkey; } else { $p['pw'] = $this->options->skpw; } $message = urlencode(utf8_decode($message)); $c = curl_init($url . "?" . http_build_query($p) . "&text=" . $message); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); $r = curl_exec($c); curl_close($c); if ($r != "100") { $codes = Array( "112" => "Zugangsdaten ungültig", "122" => "Fehler bei Übergabe", "123" => "Datei nicht vorhanden", "124" => "Fehlerhafter Parameter art", "125" => "Fehler beim Verbindungsaufbau", "140" => "Guthaben nicht ausreichend", "160" => "Benutzer gesperrt", ); if (array_key_exists($r, $codes)) { return $codes[$r]; } if (!empty($r)) { return strval($r); } return false; } return true; } public function getTypes() { return Array( "3" => "Discount-SMS (DE)", "4" => "Premium-SMS (DE)", "8" => "Premium-SMS (weltweit)", ); } }