Hallo zusammen,
für eine GUI möchte ich den Zustand von Extensions und Verbindungen visualisieren, das Ganze geschieht über Java und AMI.
Allerdings verstehe ich den Zusammenhang der einzelnen Verbindungs-Aufbau-Stufen und Events noch nicht so ganz, über entsprechende Hinweise würde ich mich sehr freuen. Ich versuche einmal das zu dokumentieren, was ich bisher verstanden habe, bitte korrigieren, falls etwas nicht stimmt.
Gehen wir von zwei internen Telefonen am Asterisk aus, Telefon 100 und 200:
- An Telefon 100 wird die Nummer 200 eingetippt und auf Abheben gedrückt
* Asterisk erstellt einen Channel für das Telefon, sendet dabei das NewChannelEvent raus
-> Hier die erste Frage: Auf der Konsole erscheint NewStateEvent "Ring" - heisst das, in diesem Moment wird dem Telefon 100 schon ein Rufsignal eingespielt?
- Asterisk versucht nun über einen neuen, zweiten Kanal, das Telefon 200 zu erreichen
* Asterisk sendet das NewChannelEvent für diesen zweiten Kanal raus
- Nachdem der Kanal zum Telefon erfolgreich aufgebaut wurde (?), kann Teilnehmer 200 per Dial angerufen werden (von Asterisk aus gesehen)
* Asterisk sendet das DialEvent raus
- Das Telefon 200 fängt an zu klingeln (Status "Ringing")
* Asterisk signalisiert, dass das Telefon klingelt durch den NewStateEvent "Ringing"
- Der angerufene Teilnehmer (200) hebt ab, der Channel (vorerst noch zu Asterisk) ist im Status "up"
* Asterisk meldet dies per NewStateEvent "up"
- Der rufende Teilnehmer bekommt auch einen aktiven Channel (->kann dies auch vor dem gerufenen Teilnehmer passieren?)
* Asterisk meldet auch dies per NewStateEvent "up"
- Nachdem beide Kanäle aufgebaut sind, werden sie miteinander verbunden, und die Teilnehmer können miteinander sprechen
* Dies wird von Asterisk per BridgeEvent gemeldet mit beiden eindeutigen Channel-IDs
... Ab hier wird gesprochen...
- Teilnehmer 200 legt auf
* Asterisk meldet HangupEvent für Teilnehmer 200
- Der Dialstatus ändert sich in "End", das Gespräch ist vorbei
* Asterisk meldet DialEvent mit Status "End" (-> hier die Frage, warum noch einmal DialEvent? Ist an dieser Stelle das Gespräch zuende, der CDR wird geschrieben?)
- Der andere Teilnehmer legt auf, bis dahin besteht noch der Channel zu Asterisk und könnte z.B. weiterverbunden werden (so wie viele Hotlines das Gespräch bewerten lassen, nachdem der Hotline-Mitarbeiter aufgelegt hat?)
* Asterisk meldet das Auflegen durch den HangupEvent
Ist die Abfolge und das, was ich als Anmerkung geschrieben habe soweit richtig?
Sehe ich das richtig, dass "Ring" bedeutet, beim Anrufer ertönt das Tuuut-Tuuut (Wählsignal), und "Ringing" bedeutet, dass das angerufene Telefon läutet?
Wenn ich die Stati der Telefone anzeigen lassen möchte (idle, klingelt, im Gespräch, belegt, ...), brauche ich folgende Events:
- NewStateEvent
- BridgeEvent
- HangupEvent
Stimmt das so oder habe ich welche vergessen?
Wenn die Telefone Hints vergeben haben, kommen zwischendrin noch "ExtensionStatusEvents" - ist es sicherer, sich auf die zu verlassen (wenn verfügbar), statt auf die oben genannten?
Das waren jetzt viele Fragen auf einmal... ich hoffe nicht zu viel
für eine GUI möchte ich den Zustand von Extensions und Verbindungen visualisieren, das Ganze geschieht über Java und AMI.
Allerdings verstehe ich den Zusammenhang der einzelnen Verbindungs-Aufbau-Stufen und Events noch nicht so ganz, über entsprechende Hinweise würde ich mich sehr freuen. Ich versuche einmal das zu dokumentieren, was ich bisher verstanden habe, bitte korrigieren, falls etwas nicht stimmt.
Gehen wir von zwei internen Telefonen am Asterisk aus, Telefon 100 und 200:
- An Telefon 100 wird die Nummer 200 eingetippt und auf Abheben gedrückt
* Asterisk erstellt einen Channel für das Telefon, sendet dabei das NewChannelEvent raus
-> Hier die erste Frage: Auf der Konsole erscheint NewStateEvent "Ring" - heisst das, in diesem Moment wird dem Telefon 100 schon ein Rufsignal eingespielt?
- Asterisk versucht nun über einen neuen, zweiten Kanal, das Telefon 200 zu erreichen
* Asterisk sendet das NewChannelEvent für diesen zweiten Kanal raus
- Nachdem der Kanal zum Telefon erfolgreich aufgebaut wurde (?), kann Teilnehmer 200 per Dial angerufen werden (von Asterisk aus gesehen)
* Asterisk sendet das DialEvent raus
- Das Telefon 200 fängt an zu klingeln (Status "Ringing")
* Asterisk signalisiert, dass das Telefon klingelt durch den NewStateEvent "Ringing"
- Der angerufene Teilnehmer (200) hebt ab, der Channel (vorerst noch zu Asterisk) ist im Status "up"
* Asterisk meldet dies per NewStateEvent "up"
- Der rufende Teilnehmer bekommt auch einen aktiven Channel (->kann dies auch vor dem gerufenen Teilnehmer passieren?)
* Asterisk meldet auch dies per NewStateEvent "up"
- Nachdem beide Kanäle aufgebaut sind, werden sie miteinander verbunden, und die Teilnehmer können miteinander sprechen
* Dies wird von Asterisk per BridgeEvent gemeldet mit beiden eindeutigen Channel-IDs
... Ab hier wird gesprochen...
- Teilnehmer 200 legt auf
* Asterisk meldet HangupEvent für Teilnehmer 200
- Der Dialstatus ändert sich in "End", das Gespräch ist vorbei
* Asterisk meldet DialEvent mit Status "End" (-> hier die Frage, warum noch einmal DialEvent? Ist an dieser Stelle das Gespräch zuende, der CDR wird geschrieben?)
- Der andere Teilnehmer legt auf, bis dahin besteht noch der Channel zu Asterisk und könnte z.B. weiterverbunden werden (so wie viele Hotlines das Gespräch bewerten lassen, nachdem der Hotline-Mitarbeiter aufgelegt hat?)
* Asterisk meldet das Auflegen durch den HangupEvent
Ist die Abfolge und das, was ich als Anmerkung geschrieben habe soweit richtig?
Sehe ich das richtig, dass "Ring" bedeutet, beim Anrufer ertönt das Tuuut-Tuuut (Wählsignal), und "Ringing" bedeutet, dass das angerufene Telefon läutet?
Wenn ich die Stati der Telefone anzeigen lassen möchte (idle, klingelt, im Gespräch, belegt, ...), brauche ich folgende Events:
- NewStateEvent
- BridgeEvent
- HangupEvent
Stimmt das so oder habe ich welche vergessen?
Wenn die Telefone Hints vergeben haben, kommen zwischendrin noch "ExtensionStatusEvents" - ist es sicherer, sich auf die zu verlassen (wenn verfügbar), statt auf die oben genannten?
Das waren jetzt viele Fragen auf einmal... ich hoffe nicht zu viel