.titleBar { margin-bottom: 5px!important; }

Early B3 und Durchwahlen einsammeln

Dieses Thema im Forum "Asterisk Skripte" wurde erstellt von Emaleth, 18 Sep. 2008.

  1. Emaleth

    Emaleth Neuer User

    Registriert seit:
    12 Sep. 2008
    Beiträge:
    37
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 Emaleth, 18 Sep. 2008
    Zuletzt bearbeitet: 19 Sep. 2008
    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
     
  2. foschi

    foschi Guest

    Hallo Sabine,

    mein erster Tipp wäre: code-Tag für bessere Lesbarkeit nutzen! Danke!
     
  3. Emaleth

    Emaleth Neuer User

    Registriert seit:
    12 Sep. 2008
    Beiträge:
    37
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Foschi,

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

    LG, Sabine