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.