Telefonie-Ereignisbenachrichtigungen von Polycom-Telefonen mittels PHP

Alle aktuellen Polycom-Telefone wie die Polycom SoundPoint IP, die Polycom VVX 500/1500 oder die Polycom SpectraLink Serie unterstützen eine Ereignisbenachrichtigung. Dies ist ein hervorragendes Feature, bei welchem das Telefon eine POST-Anfrage an eine vorher definierte URL für verschiedene Telefonie-Ereignisse sendet.

Bei der Entwicklung einer PHP-Server-Anwendung, die einige dieser Ereignisse behandelt sollte, stieß ich auf das Problem, dass in dem PHP-Datenfeld $_POST keine Daten enthalten waren, obwohl das Skript vom Polycom-Telefon korrekt aufgerufen wurde.

Nach einigen Nachforschungen fand ich heraus, dass die Daten (aus welchem Grund auch immer) nicht als “normales” POST-Key-Value-Paar, sondern also POST-Rohdaten gesendet werden. Somit kann PHP die POST-Rohdaten natürlich auch nicht in das Datenfeld $_POST schreiben.

Hier ist eine Möglichkeit wie man die POST-Rohdaten dennoch erhalten kann:

// Sicherstellen, dass wirklich POST-Rohdaten verfügbar sind
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
	// Nun können wir die POST-Rohdaten von der PHP-Standardeingabe lesen
	$rawPostData = trim(file_get_contents('php://input'));
}

Als Ergebnis erhalten Sie die XML-Daten, die von dem Polycom-Telefon gesendet wurden, in der Variable $rawPostData.

Haben Sie auch bereits Probleme beim Empfang von Polycom Ereignisdaten gehabt?

Der Artikel ist auch in English verfügbar.

Einen Kommentar hinterlassen

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>