ExtendedBlinkenIsdnProtocol

From BlinkenArea Wiki
Jump to: navigation, search
English Version of this Page

zurück zur Übersicht

Das extended Blinkenisdn Protokoll wird benutzt, um den Status und die gedrückten Tasten von ISDN-Leitungen über ein Netzwerk zu übertragen. Dies geschieht durch das senden von UDP-Paketen, die jeweils eine Zeile Klartext enthalten. UDP wurde gewählt, um die Antwortzeiten so klein wie möglich zu halten.

Um die benötigte bidirektionale Kommunikation zu erreichen, muss der ISDN-Server die IP und den Port des Clients kennen und der Client muss die IP und den Port des ISDN-Servers kennen.

Der Server und der Client senden periodisch (z.B. alle 20s) Herzschlag-Nachrichten, um zu zeigen, dass die noch laufen. Ein Timeout tritt auf, wenn kein Herzschlag für eine längere Zeit (z.B. 60s) empfangen wurde. In diesem Fall legt der Server die ISN-Leitungen auf, bis sich ein neuer Client durch das senden von Herzschlag-Nachrichten verbindet (oder der gleiche Client sich neu verbindet). Der Client reagiert bei einem Timeout so, als ob alle Anrufer aufgelegt hätten.

Die in UDP-Paketen versendeten Nachrichten, sind als ASCII-String kodiert und mit Doppelpunkten in zwei, drei oder vier Felder unterteilt, zum Beispiel:

  • 0:heartbeat
  • 1:dtmf:#
  • 1:setup:foobar:1234567890

Das erste Feld gibt die Nummer der ISDN-Leitung als Dezimalzahl an oder ist 0 bei Nachrichten, die sich nicht auf eine ISDN-Leitung beziehen, wie Herzschlag-Nachrichten. Der Typ der Nachricht steht im zweiten Feld. Das dritte und vierte Feld hängen vom Typ der Nachricht ab.

Nachrichten vom Sever zum Client:

  • 0:heartbeat
    • periodisch (z.B. alle 20s) gesendet, um dem Client zu zeigen, dass der Server noch läuft
  • <line-no>:setup:<caller-id>:<phone-no>
    • gesendet, wenn eine Verbindung von <caller-id> an die Telefonnummer <phone-no> auf der ISDN-Leitung <line-no> eingeht
  • <line-no>:connected
    • gesendet, wenn die Verbindung auf der ISDN-Leitung <line-no> aufgebaut ist
  • <line-no>:dtmf:<key>
    • gesendet, wenn die Taste <key> auf ISDN-Leitung <line-no> gedrückt wurde
    • <key> kann 0, ..., 9, *, # sein
  • <line-no>:onhook
    • gesendet, wenn die Verbindung auf der ISDN-Leitung <line-no> geschlossen wird (Anrufer oder Server legt auf)
    • jede Sekunde gesendet, falls die Leitung nicht aktiv (d.h. aufgelegt) ist
  • <line-no>:offhook
    • jede Sekunde gesendet, fals die Leitung aktiv (d.h. abgehoben) ist

Nachrichten vom Client zum Server:

  • 0:register:1234
    • 1234 ist die Port-Nummer auf der der Client wartet
    • einmalig zu Beginn gesendet, um den Client am Server anzumelden
    • wird wiederholt wenn vom Server keine Nachrichten eintreffen (z.B. nach 5s)
  • 0:heartbeat
    • periodisch (z.B. alle 20s) gesendet, um dem Server zu zeigen, dass der Client noch läuft
  • <line-no>:accept
    • gesendet, wenn der Client einen eingehenden Anruf auf Leitung <line-no> annehmen will
  • <line-no>:hangup:18
    • gesendet, wenn der Client den Server bittet, die ISDN-Leitung <line-no> aufzulegen
    • Es ist zur Zeit unbekannt, wofür die 18 gut ist...
  • <line-no>:play:<filename>
    oder
    <line-no>:playbackground:<filename>
    • angegebene Datei über die Telefonleitung abspielen

--StefanSchuermans 22 Dec 2012