Home > Development > PHP-Script für den SMS-Versand via Sipgate API

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.

  1. B.Schmidt
    3. Oktober 2011, 19:23 | #1

    super Danke für das Beispiel, hast Du auch eines für click2call

  2. 3. Oktober 2011, 19:24 | #2

    Danke! Nein, habe ich nicht da ich dafür bisher keinen Bedarf hatte…

  3. vagans
    7. Oktober 2011, 11:30 | #3

    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

  1. Bisher keine Trackbacks