Background(silence/X) ignoriert

ricardok

Neuer User
Mitglied seit
11 Jan 2008
Beiträge
40
Punkte für Reaktionen
0
Punkte
6
Hi!

Ich bin dabei ein IVR zu entwerfen. Jetzt habe ich das Problem, dass alle Background(silence/X) ignoriert werden. Ich dachte, es könnte an einer Asterisk-Einstellung liegen (bei Ruhe auflegen (silence_suppression)), aber jede Änderung bewirkt nichts. Hab ich vielleicht irgendeine Einstellung übersehen. Könnte es an den Telefonen liegen (Snom 320/360)? Ich hab schon viel versucht (backgrounddetect etc. ), aber ich hänge an dem "kleinen Problem" seit Stunden.

Es handel sich um ein Marco, zuerst werden Soundfiles abgespielt, dann
Code:
exten => s,n,Background(silence/10)
Anschliessend folgen 2 GoTo's, die sich nach der Eingabe richten. Drücke ich während der Wiedergabe des Soundfiles eine Taste, wird zum gewünschten Ziel gesprungen.

Vielen Dank für eure Hilfe & Grüße!
 
Was spuckt die konsole aus?
Warum machst du in diesem Fall "Background(silence/10)" und nicht einfach "WaitExten(10)"?
 
Konsole:
Code:
Executing BackGround("SIP/XXXX8-08538a40", "silence/10") in new stack
-- Playing 'silence/10' (language 'de')
und dann gings sofort, ohne Pause/Silence weiter mit dem Dialplan!

Hab es mit WaitExten versucht und das klappt! Aber wieso silence nicht?

Auf jeden Fall vielen Dank!!!!!
 
1. Versuche einmal ein Answer() vor dem Background() einzufügen

2. Setze einmal die Sprache auf Englisch vor dem Background(), oder kopieren den "silence" Ordener in das Verzeichnis mit den "de" sounds (dieser Vorschlag ist keine saubere Lösung, eigentlich sollte Asterisk einen "fallback" auf die Englischen prompts vornehmen wenn die passenden deutschen Prompts nicht vorhanden sind).

3. Mit welchen Codec wird das Gespräch durchgeführt? Evtl. kann silence/10 nicht in den aktuellen Codec transkodiert werden.
 
1. erledigt
2. nimmt er, sonnst würde er ja meckern, dass das File nicht gefunden wurde
3. alaw;g729;ilbc;gsm;ulaw

Also mit WaitExten würde es gehen.
Nur hab ich jetzt das Problem, dass er nicht sofort (während BackgroundDetect das File gespielt wird) bei einer Eingabe einer Ziffer zum Ziel gesprungen wird. Das Soundfile wird zwar nicht abgespielt, aber es entsteht eine lange Phase, in der nichts passiert, bevor er in einen neuen Kontext/neues Macro springt. ABER: das tritt nur bei der Wahl der 2 auf. Erste Möglichkeit ist die 1, da wird sofort zum Ziel gesprungen !?!?!
 
Zuletzt bearbeitet:
Nur hab ich jetzt das Problem, dass er nicht sofort (während BackgroundDetect das File gespielt wird) bei einer Eingabe einer Ziffer zum Ziel gesprungen wird. Das Soundfile wird zwar nicht abgespielt, aber es entsteht eine lange Phase, in der nichts passiert, bevor er in einen neuen Kontext/neues Macro springt. ABER: das tritt nur bei der Wahl der 2 auf. Erste Möglichkeit ist die 1, da wird sofort zum Ziel gesprungen !?!?!

Das ist leicht zu erklären: Wenn eine eindeutige Extension gefunden wird, springt er sofort dahin, ist sie aber noch nicht eindeutig wartet er bis zum timeout um dort hin zu springen.
Hast du also z.B. folgendes:

Code:
exten => _N.,...
exten => 1,...
exten => _[1]X,...
exten => 0,...

Wird eine "0" gewählt passt das nur auf die letzte extension und er springt sofort dahin. Wird eine 1 gewählt wartet er bis zum timeout und springt dann zur zweiten extension, da nach der 1 ja noch eine Zahl kommen könnte. Wird eine 12 gewähl springt er direkt zur dritten extension, da nur diese zutrifft. Wird eine 2-9 als erstes gewählt, wartet er immer bis zum timeout, da ja immer noch was folgen könnte.
 
@BigBadaBoom:

Danke für die Erklärung. Ist ja eigentlich logisch, bin aber nicht darauf gekommen. Lässt sich das unterbinden? Also wir haben für interne Gespräche die Extension _[23]XX, deswegen wird bei '2' auf das timeout gewartet. Wir könnten ja anstatt der Auswahl '1','2' was anderes nehmen, das wäre aber unlogisch für den Anrufer, wenn z.b. '5','6' die Auswahl wäre.

@Ottone:
Es "müsste" alaw sein. Ich denk, dass immer der erste genommen wird, und in der Datenbank steht als erster "alaw". Bei voller Debug-Ausgabe steht leider nix vom Codec. Kann man sich den per Befehl via Dialplan anzeigen lassen (hab ich auf die schnelle nix ergooglen können).
 
Zuletzt bearbeitet:
"sip show channels" zeigt den aktuellen codec - wenn es g729 ist dann liegt hier das Problem.
 
Code:
Call ID      Seq (Tx/Rx)  Form  Hold     Last Message
3c26865ca39  00101/00002  alaw  No       Rx: ACK
Es ist ALAW ...
 
Hi!

Also ich hab den Dialplan jetzt umgeschrieben. Auf Macros verzichtet und eindeutige Contexte benutzt. Problem "silence" ist nicht aus der Welt, aber mit WaitExten umgangen.

Danke für Eure Hilfe,

Ricardo
 
Kostenlos!

Statistik des Forums

Themen
248,854
Beiträge
2,302,947
Mitglieder
378,504
Neuestes Mitglied
Hallo61Hallo