ExtendedBlinkenIsdnProtocol: Difference between revisions
m (register-Nachricht enthält Port) |
(onhook / offhook) |
||
Line 28: | Line 28: | ||
* <code><line-no>:onhook</code> | * <code><line-no>:onhook</code> | ||
** gesendet, wenn die Verbindung auf der ISDN-Leitung <line-no> geschlossen wird (Anrufer oder Server legt auf) | ** 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 | |||
* <code><line-no>:offhook</code> | |||
** jede Sekunde gesendet, fals die Leitung aktiv (d.h. abgehoben) ist | |||
Nachrichten vom Client zum Server: | Nachrichten vom Client zum Server: |
Latest revision as of 23:04, 27 December 2011
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