Archiv

Archiv für die Kategorie ‘Development’

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

4. August 2011 3 Kommentare

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.

Picasa-Webalben – Ein kompletter Reset – Tabula rasa

3. März 2011 2 Kommentare

Google hat im Webfront von Picasa nicht vorgesehen, mehrere Alben auf einmal zu löschen. Das ist genau dann besonders ärgerlich, wenn sich sehr viele Alben im Bestand befinden. Besteht der Wunsch komplett “von vorne” zu beginnen, gestaltet sich das Löschen also sehr schwierig und nervig.

Ich war an diesem Punkt angekommen und habe mir folgendes PHP-Script gestrickt.

Wichtig: Es werrden wirklich ALLE ALBEN aus dem angegebenen Picasa-Account gelöscht.

<?php
$clientLibraryPath = '/path/to/ZendGdata/library';

$login    = "login";
$password = "password";

// Init GData and Zend-Framework.
set_include_path(get_include_path() . PATH_SEPARATOR . $clientLibraryPath);
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_Photos');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');

try
{
   $service = Zend_Gdata_Photos::AUTH_SERVICE_NAME;
   $client = Zend_Gdata_ClientLogin::getHttpClient($login, $password, $service);
   $gp = new Zend_Gdata_Photos($client, "Picasa DELETEALL PHP-Script");
} catch (Exception $e)
{
   echo "ERROR: ". $e->getMessage() ."n";
   exit;
}

try
{
   $userFeed = $gp->getUserFeed("default");
   foreach ($userFeed as $userEntry)
   {
      echo "Deleting: ". $userEntry->title->text ."n";
      $userEntry->delete();
   }
} catch (Zend_Gdata_App_HttpException $e)
{
    echo "ERROR: ". $e->getMessage() ."n";
    exit;
} catch (Zend_Gdata_App_Exception $e)
{
    echo "ERROR: ". $e->getMessage() ."n";
    exit;
}
?>

Hinweis: Das Script benötigt das Zend GData Framework, welches hier heruntergeladen werden kann. Zusätzlich muß im Script in der ersten Zeile noch der Pfad zum library Verzeichnis des Frameworks angepasst werden.

Tags: , , ,

Google Geburtstags Sync (Von den Kontakten in den Kalender)

7. Dezember 2009 Keine Kommentare

Vor einigen Wochen hat sich ein Kollege über den von Google bereitgestellten Geburtstagskalender aufgeregt. Es ist so, daß dieser Kalender kein wirklich vollwertiger Kalender mit einer eigenen Adresse ist. Somit lässt sich dieser auch nicht in iPhones oder andere Anwendungen importieren.

Nun habe ich ein kleines Java-Programm entwickelt, welches die Geburtstage aus den Kontaktdaten ausliest und in einen angegebenen vollwertigen Google-Kalendar importiert.

Ich hoffe, daß dieses kleine Tool hilfreich ist. Feedback ist natürlich willkommen.

Programmaufruf:

java -jar gBdaysToCal.jar

Beispiel:

java -jar gBdaysToCal.jar meinusername@gmail.com foobarpass Birthdays

!!! WICHTIG !!!
Der angegebene Kalender wird durch das Programm automatisch erstellt. Sollte der Kalender bereits existierten, wird der Bestehende genutzt und alle vorher bestehenden Einträge werden gelöscht!!! Daher für den Geburtstagskalender einen eigenen Namen verwenden!

Download