[Problem] Channel XY was answered

Sniper123

Neuer User
Mitglied seit
1 Jun 2011
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo Zusammen,

Diese kleine Meldung da oben macht mir die Arbeit mit Asterisk zur Hölle.
Das Problem an der Meldung ist das der Channel nicht beantwortet wurde.
Aber erstmal das Szenario damit ihr wisst worum es überhaupt geht:

Eine Asterisk Anlage wird als eine Steuerungseinheit verwendet. Man ruft sie an und geht durch ein paar Menus. Je nach Gewählter Menuoption werden verschiende Aktionen ausgeführt. Bei manchen wäre ein Feedback schön bei anderen (oder bei Fehlern) ist ein Feedback Pflicht. Also soll Asterisk den Anrufer zurückrufen, sms schreiben emil senden usw. Bei einem Rückruf muss die Anlage nun status über das Gelingen der Aufgabe durchgeben (TTS). Bis auf ein Problem funktioniert auch alles einwandfrei.
Asterisk ist hinter eine anderen Telefonanlage geschaltet. Ich bin mir nicht sicher ob das Problem dadurch entsteht oder ob es ein Grundsätzliches ist. Die CLI gibt bei dem Rückruf "Channel [SIP/Y] was answerd" aus. Obwohl noch nichtmal das andere Telefon geklingelt hat. Das Ergebnis -> Die Ansage ist schon fast vorbei wenn das Handy anfängt zu klingeln. Ein Paar Experimente mit WaitforSilence() oder WaitforNoise() haben zwar dafür gesorgt das ich die Ansgae hören kann aber leider auch nicht zu verlässig.
Nach ein wenig google Arbeit habe ich festgestellt das es das Problem schon länger gibt. Aber ich habe keine Lösung gefunden die Wirklich gut Funktioniert.

Wenn jemand eine Lösung kennt oder eine Idee hat wie man die Sache angehen könnte dann wäre eine Antwort schön.
Ich habe schon überlegt ob ich den Recieve Stream Buffern kann um die empfangenen Daten mit andeerren zu vergleichen. Damit kann man Feststellen wann es klingelt und Vorallem wann es aufhört.

Grüße

Sniper
 
Hallo Sniper123,

wie sieht dein dialplan dazu aus?
 
Re

Das hat mit dem Dialplan nicht so viel zu tun. Es wird ein Callfile aufgerufen und das Geht z.B. in einen Extension (Reply10,1)
Die Könnte z.B. so aussehen:
Code:
exten => 10,1,Playback(tt-monkeys)
exten => 10,n,Wait(1)
exten => 10,n,Hangup()

Ob da nun ein Answer() an erster stelle steht oder nicht ist egal, manche variationen waren mit

WaitForNoise(1500,13) {oder auch andere Daten}
machne mit
WaitForSilence() {Verschiedene Parameter}
machne mit beiden Apps
Jetzt gerade versuche ich was ich mit WaitForRing() bekomme. Aber die App verstehe ich noch nicht ganz sieht so aus als würde der in einer Endlosschleife hängen sobald der gestartet ist.
Wie gesagt es handelt sich um ein Bekanntes Problem -> Irgendein gerät auf dem Kommunikationsweg bis zum z.B. Handy gibt Asterisk die info das der Channel Beantwortet wurde. (Weil das Gerät das auch getan hat) Dann Schaltet die Anlage die den Channel Beantwortet hat in einen Bridging Mode Und erst dann wird zum Handy weitergeleitet. Davon bekommt asterisk nichts mehr mit -> Der Anruf wurde ja schon von der Gegenseite beantwortet.
Also bleibt noch die Möglichkeit den Input des Channels zu überwachen und anhand der Daten irgendwie rauszufinden ob nun wirklich jemand drangegangen ist.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.