Early B3 und Durchwahlen einsammeln

Emaleth

Neuer User
Mitglied seit
12 Sep 2008
Beiträge
37
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich habe ein weiteres Problem, ich möchte mit Early-B3 eine kostenlose Tarifansage abspielen und danach weiterverbinden. Angewählt wird eine Stammnummer zu der optional auch noch bis zu 5-stellige Durchwahlen angewählt werden können.

Wir konnten das Problem dank der Hilfe von einem freundlichen User hier nur angehen, in dem wir die Durchwahlen vor der Ansage abfangen. Da die Ansage auch nicht unterbrochen werden darf ging das ganze mit Blackground und dem n-Flag nicht. Also mache ich das ganze nun mit Playback und noanswer, in dem ich die Ziffern davor einsammele. Nun haben wir aber das Problem, dass bei einer längeren Ansage (Die Tarifansage ist im Vergleich zu hello-world länger- aber auch "nur" 14sec) ein Abbruch kommt und wir den Anruf nicht weiter zum Application-Server verbinden kann. Der Asterisk spielt zwar die Ansage komplett ab, aber wirft uns mit Hangup Cause 102 raus, ohne uns wie im Dialplan vorgesehen an den Application-Server zu verbinden. Aber wie gesagt nur, wenn die Ansage etwas länger ist, mit hello-world funktioniert es.

Hier ein Auszug aus extensions.conf

-----------------------
extensions.conf
-----------------------

Code:
[default]
exten => _X.,1,Playback(hello-world)

[zuappserver]
exten => _11951.,1,NoOP(ANR:${CALLERID(num)} - BNR: ${CALLERID(dnid)})
exten => _11951.,n,Set(TIMEOUT(digit)=3)
exten => _11951.,n,Set(TIMEOUT(response)=10)
exten => _11951.,n,SetCallerPres(allowed)                                       ; A-NR anzeigen/weitergeben
exten => _11951.,n,Set(STAMM=${EXTEN:0:15})                                     ; STAMMNUMMER setzen
exten => _11951.,n,Set(DDI=${EXTEN:15})                                         ; DDI setzen
exten => _11951.,n,Set(DDI=${DDI:0:5})                                          ; DDI bis zu 5 Stellig kuerzen
exten => _11951.,n,GotoIf($[${LEN(${DDI})}=0]?DDInichtgewaehlt,1:DDIgewaehlt,1)


exten => DDIgewaehlt,1,Goto(,outcall,1)
exten => DDInichtgewaehlt,1,Goto(DigitWait,1)                                   ; Eingabeaufforderung-Schleife


exten => _X,1,Set(DDI=${DDI}${EXTEN})
exten => _X,n,Goto(DigitWait,1)
exten => _XX,1,Set(DDI=${DDI}${EXTEN})
exten => _XX,n,Goto(DigitWait,1)
exten => _XXX,1,Set(DDI=${DDI}${EXTEN})
exten => _XXX,n,Goto(DigitWait,1)
exten => _XXXX,1,Set(DDI=${DDI}${EXTEN})
exten => _XXXX,n,Goto(DigitWait,1)
exten => _XXXXX,1,Set(DDI=${DDI}${EXTEN})
exten => _XXXXX,n,Goto(DigitWait,1)


exten => DigitWait,1,GotoIf($[${LEN(${DDI})}=5]?DDIgewaehlt,1:DigitWait,2)      ; Appserver anwaehlen sobald die DDI 5 stellig ist
exten => DigitWait,n,Set(TIMEOUT(digit)=3)                                      ; Increase the 'finished dialing' timeout to 3 seconds
exten => DigitWait,n,Set(TIMEOUT(response)=10)
exten => DigitWait,n,WaitExten(3)                                               ; Warte 3 Sek. auf eine Eingabe


exten => t,1,Goto(,outcall,1)


exten => outcall,1,Progress()
exten => outcall,n,NoOP(ANR:${CALLERID(num)} - BNR: ${CALLERID(dnid)})
exten => outcall,n,Playback(lange-ansage,noanswer)
exten => outcall,n,Set(DDI=${DDI:0:5})                                          ; DDI bis zu 5 Stellig kuerzen
exten => outcall,n,Dial(SIP/${STAMM}${DDI}@appserver)                           ; DDI von Anfang an gewaehlt

Wenn man statt lange-ansage (14sec) hello-world abspielt, dann wird man brav verbunden.

In dem Beispiel hier bekommt man diesen Fehler:

-----------------------
Asterisk-CLI
-----------------------
HTML:
    -- Executing [11951xxxxxxx@dtms:1] Goto("Zap/96-1", "appserver|11951xxxxxxx|1") in new stack
    -- Goto (appserver,11951xxxxxxx,1)
    -- Executing [11951xxxxxxx@appserver:1] NoOp("Zap/96-1", "ANR:0610xxxxxx - BNR: 11951xxxxxxx") in new stack
    -- Executing [11951xxxxxxx@appserver:2] Set("Zap/96-1", "TIMEOUT(digit)=3") in new stack
    -- Digit timeout set to 3
    -- Executing [11951xxxxxxx@appserver:3] Set("Zap/96-1", "TIMEOUT(response)=10") in new stack
    -- Response timeout set to 10
    -- Executing [11951xxxxxxx@appserver:4] SetCallerPres("Zap/96-1", "allowed") in new stack
    -- Executing [11951xxxxxxx@appserver:5] Set("Zap/96-1", "STAMM=11951xxxxxxx") in new stack
    -- Executing [11951xxxxxxx@appserver:6] Set("Zap/96-1", "DDI=") in new stack
    -- Executing [11951xxxxxxx@appserver:7] Set("Zap/96-1", "DDI=") in new stack
    -- Executing [11951xxxxxxx@appserver:8] GotoIf("Zap/96-1", "1?DDInichtgewaehlt|1:DDIgewaehlt|1") in new stack
    -- Goto (appserver,DDInichtgewaehlt,1)
    -- Executing [DDInichtgewaehlt@appserver:1] Goto("Zap/96-1", "DigitWait|1") in new stack
    -- Goto (appserver,DigitWait,1)
    -- Executing [DigitWait@appserver:1] GotoIf("Zap/96-1", "0?DDIgewaehlt|1:DigitWait|2") in new stack
    -- Goto (appserver,DigitWait,2)
    -- Executing [DigitWait@appserver:2] Set("Zap/96-1", "TIMEOUT(digit)=3") in new stack
    -- Digit timeout set to 3
    -- Executing [DigitWait@appserver:3] Set("Zap/96-1", "TIMEOUT(response)=10") in new stack
    -- Response timeout set to 10
    -- Executing [DigitWait@appserver:4] WaitExten("Zap/96-1", "3") in new stack
asterisk-gw*CLI>
asterisk-gw*CLI>
asterisk-gw*CLI>
  == CDR updated on Zap/96-1
    -- Executing [567@appserver:1] Set("Zap/96-1", "DDI=567") in new stack
    -- Executing [567@appserver:2] Goto("Zap/96-1", "DigitWait|1") in new stack
    -- Goto (appserver,DigitWait,1)
    -- Executing [DigitWait@appserver:1] GotoIf("Zap/96-1", "0?DDIgewaehlt|1:DigitWait|2") in new stack
    -- Goto (appserver,DigitWait,2)
    -- Executing [DigitWait@appserver:2] Set("Zap/96-1", "TIMEOUT(digit)=3") in new stack
    -- Digit timeout set to 3
    -- Executing [DigitWait@appserver:3] Set("Zap/96-1", "TIMEOUT(response)=10") in new stack
    -- Response timeout set to 10
    -- Executing [DigitWait@appserver:4] WaitExten("Zap/96-1", "3") in new stack
    -- Timeout on Zap/96-1, going to 't'
    -- Executing [t@appserver:1] Goto("Zap/96-1", "|outcall|1") in new stack
    -- Goto (appserver,outcall,1)
    -- Executing [outcall@appserver:1] Progress("Zap/96-1", "") in new stack
    -- Executing [outcall@appserver:2] NoOp("Zap/96-1", "ANR:06102xxxxxx - BNR: 11951xxxxxxx") in new stack
    -- Executing [outcall@appserver:3] Playback("Zap/96-1", "lange-ansage|noanswer") in new stack
    -- <Zap/96-1> Playing 'lange-ansage' (language 'en')
    -- Channel 0/3, span 4 got hangup request, cause 102
  == Spawn extension (appserver, outcall, 3) exited non-zero on 'Zap/96-1'
    -- Hungup 'Zap/96-1'


Ein Tip wäre super. Vielen Dank.

Sabine
 
Zuletzt bearbeitet:
Hallo Sabine,

mein erster Tipp wäre: code-Tag für bessere Lesbarkeit nutzen! Danke!
 
Hallo Foschi,

ist das nun besser so? Und hast Du vielleicht jetzt auch einen 2. Tipp für mich?

LG, Sabine
 
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.