18. Oktober 2010

openucf (Teil 1): Unified Communications als Baukasten, eine technische Übersicht

Vor schon längerer Zeit hatte ich von unserer ersten openucf Hardware erzählt (damals ohne viel Kontext zugegeben) und über unsere Philosophie von Unified Communications. Vor zwei Wochen, am 8.10., haben wir die erste Beta-Version unseres Open Unified Communications Frameworks (kurz openucf) veröffentlicht. Nach fast zwei Jahren evolutionärer Entwicklung und vielen Gesprächen halten wir die Software nun für ausgereicht, um im echten Alltag eingesetzt werden zu können. Aber was macht die Software aus, was beinhaltet das Framework, und warum sollte man es sich genauer anschauen?

In diesem ersten Artikel der Serie möchte ich kurz den technischen Umfang vorstellen, im zweiten Artikel stelle ich die Installation vor und zeige eine Details am System.

Um die Philosophie Unified Communications (kurz UC) als Baukasten realisieren zu können, nutzen wir ausschließlich Standard-Protokolle. Aktuell kommen dazu SIP, XMPP und HTTP zum Einsatz. openucf nutzt einen kompletten Open Source Software Stack: für SIP/VoIP wird ein Asterisk-Server verwendet, für Instant Messaging/Präsenz wird das XMPP-Protokoll mit einem Jabber-Server genutzt, für die Benutzer-Oberfläche, Telefon-XML-Anwendungen und die WebApp wird HTTP über einen Apache-Server genutzt. Ebenfalls per HTTP erfolgt die Administration und wird die REST-API zur Applikations-Integration bereitgestellt.

Aber was macht dann openucf, wenn doch nur andere Software verwendet wird? Es bildet die Verbindung und logische Schicht zwischen den Komponenten. Zwei Beispiele sollen es verdeutlichen. Telefoniert ein Benutzer ist der Status im Asterisk-Server bekannt, dieser Status wird aber vom System mitgelesen und in eine internen Datenbank abgelegt. Sofern gewünscht kann der aktive Telefonie-Status als Online-Status per XMPP/Jabber-Protokoll signalisiert werden. Als zweites Beispiel kann per REST-API der Status eines Benutzers abgefragt werden. Als Antwort werden sämliche Telefon-Stati, XMPP/Jabber-Stati und weitere benutzerdefinierte Zustände zurückgeliefert. Auf diesem Wege bietet das System eine Rich Presence, so kann eine externe Anwendung oder ein Benutzer die Präsenzinformationen eines Benutzers verdichten oder auch einzeln ansehen. Diese Funktion nutzen wir selbst, um das Abrufen des Online-Status per mobiler WebApp für verschiedene Smartphones zu realisieren.

Intern kommt eine objekt-orientierte Architektur zum Einsatz. Die Entwicklung erfolgt in PHP5 und ermöglicht leichte Anpassungen und Ergänzungen. Beispielsweise ist es mit wenigen Zeilen Code möglich die Liste aller Anrufen eines Benutzers abzufragen. Dies ermöglicht beispielsweise die leicht Entwicklung von XML-Anwendungen für noch nicht unterstützte SIP-Telefone. Bisher existieren Implementierung von Snom-XML-Anwendungen für das Telefonbuch, Anruflisten und eine Präsenz-Anzeige für Snom-Telefone. Der Quellcode der vorhandenen Anwendungen bietet einen guten Einstieg in das openucf-Framework.

Weitere Informationen zur Implementierung und zur Installation finden sich auf openucf.org und werden in der nächsten Zeit weiter ergänzt. Fragen sind jederzeit willkommen.

/sf