PHP-Script für den SMS-Versand via Sipgate API
Sipgate stellt eine hervorragend dokumentierte und via XML-RPC ansprechbare API zur Verfügung. Folgende PHP-Funktion nutzt diese Schnittstelle für den Versand einer SMS über diese Schnittstelle.
<?php
include ('xmlrpc/lib/xmlrpc.inc');
function sipgate_sendsms($smsnumber, $smstext)
{
// Festlegen der Konfigurationswerte.
define ('SIPGATE_SERVER', 'samurai.sipgate.net');
define ('SIPGATE_PATH', '/RPC2');
define ('SIPGATE_PROT', 'https');
define ('SIPGATE_PORT', '443');
define ('SIPGATE_SIPURI_PREFIX', 'sip:');
define ('SIPGATE_SIPURI_HOST', '@sipgate.net');
define ('SIPGATE_USER', 'WEB-LOGIN VON SIPGATE');
define ('SIPGATE_PASS', 'WEB-PASSWORT VON SIPGATE');
// Erstellen des xmlrpc clients.
$xmlurl = SIPGATE_PROT . "://" . SIPGATE_USER . ":" . SIPGATE_PASS . "@" .
SIPGATE_SERVER . ":" . SIPGATE_PORT . SIPGATE_PATH;
$xmlclient = new xmlrpc_client($xmlurl);
$xmlclient->setSSLVerifyPeer(FALSE);
// Rufnummer und Text für die SMS vorbereiten.
$smsnumber = SIPGATE_SIPURI_PREFIX . $smsnumber . SIPGATE_SIPURI_HOST;
$smstext = substr($smstext, 0, 160);
$val_a["RemoteUri"] = new xmlrpcval($smsnumber);
$val_a["TOS"] = new xmlrpcval("text");
$val_a["Content"] = new xmlrpcval($smstext);
//$val_a["Schedule"] = new xmlrpcval(iso8601_encode(NULL), "dateTime.iso8601");
$val_s = new xmlrpcval();
$val_s->addStruct($val_a);
$v = array();
$v[] = $val_s;
// Nachrichtenobjet erstellen.
$m = new xmlrpcmsg('samurai.SessionInitiate', $v);
// SMS senden.
$r = $xmlclient->send($m);
// Anzeigen von eventuellen Fehlern.
if ( $r->faultCode() )
{
return false;
} else
{
return true;
}
}
?>
Dieses Script nutzt die Möglichkeiten der XML-RPC Bibliothek. Diese ist nicht zu verwechseln mit der bereits integrierten xmlrpc-Library von PHP.
Hinweise:
- Im Script muss noch der Benutzername und das Passwort des Sipgate Webinterface Zugangs konfiguriert werden.
- Die Installation bzw. das Entpacken der XML-RPC Bibliothek muss im gleichen Verzeichnis erfolgen in dem sich auch das Script befindet. Ansonsten muß der Include-Pfad angepasst werden.
- Syntax der Funktion:
sipgate_sendsms("49421123456789", "Hallo Welt.");Wichtig ist, dass der internationale Wählcode vorangestellt wird. Ohne die doppelte 0 und ohne ein + Zeichen.
super Danke für das Beispiel, hast Du auch eines für click2call
Danke! Nein, habe ich nicht da ich dafür bisher keinen Bedarf hatte…
schöne sache! nur leider funktionierts einfach nicht bei mir… ich hab keinen plan von php und einfach mal dein script 1:1 kopiert. alles in eine .php gepackt, aufm xampp ausgeführt, kommt zwar keine fehlermeldung aber auch keine sms bei mir an… T.T