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

Error-Handling im Rufnummernplan

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von rannseier, 15 März 2005.

  1. rannseier

    rannseier Aktives Mitglied

    Registriert seit:
    5 Mai 2004
    Beiträge:
    986
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Moin..

    Irgendwie bekomm ich beim Capi-Dial kein Errorhandling hin.

    Ich nutze einen Versatel-Anschluss für abgehende Gespräche übers Festnetz (mit Telefonie-Flat).

    Wenn ich z.B. ein beseztztes D2-Handy anrufe so erhalte ich kein richtiges Besetzt. Ich hab für dieses Script große Teile hier aus dem Forum übernommen und an eigene Bedürfnisse angepasst.

    Code:
    ; ----------------------------------------------------------------------------
    ; Mak 17.11.04
    ; Anrufen uebers Festnetz
    
    ; 12.03.05 -> Gespraechsaufzeichnung
    ; 15.03.05 -> Prioritaeten angepasst
    ;             Besseres call-handling (bei besetzt, nicht erreicht etc)
    
    ; Return codes
    ; If all the called channels are busy, Dial will exit with a return code of 0
    ; and will continue in the current context at priority n+101, if it exists,
    ; where n is the priority of the Dial command. This allows you to set up
    ; different behavior for a busy response as opposed to a no-answer response.
    
    ; bristuff +201
    ; If you are using kapejod's bristuff, you will have a n + 201 priority as
    ; well. Dial goes to this priority if no one is logged in on the called
    ; extension. I.e. giving an unavailable message instead of a busy message when
    ; no phone is connected to the extension.
    
    ; If Dial was unable to place the call for some other reason, such as timing
    ; out before any channel answered successfully, then Dial will exit with a
    ; return code of 0 and execute the next higher priority (n+1) command.
    
    ;
    ; n+101 = Ziel Besetzt
    ; n+201 = Ziel nicht erreichbar
    ; n+  1 = ? nicht erfolgreich?
    
    [macro-callwithpstn]
    ; ARG1 = calleridnum
    ; ARG2 = calleridname
    
    exten => s,1,SetCIDNum(${ARG1})
    exten => s,2,SetCIDName(${ARG2})
    
    ; mak 12.03.05 gespraechsaufzeichnung
    exten => s,3,SetVar(CALLFILENAME=${TIMESTAMP}-${CALLERIDNUM}-Ziel:${EWL})
    exten => s,4,Monitor(wav,${CALLFILENAME},m)
    
    exten => s,5,Dial(CAPI/@32527918:${CBC}${EWL},60,Tt)                   ; Waehlen ueber Telekom mit Call-By-Call
    
    ; hier gehts weiter, wenn das Ziel nicht erreicht wurde.
    exten => s,6,NoOp(${CONTEXT}: ${PRIORITY}: anruf nicht erfolgreich)
    exten => s,7,NoOp(${CONTEXT}: ${PRIORITY}: HANGUPCAUSE is ${HANGUPCAUSE} and DIALSTATUS is ${DIALSTATUS})
    exten => s,8,NoOp(${CONTEXT}: ${PRIORITY}: CAUSECODE is ${CAUSECODE})
    
    exten => s,9,GotoIf($[${DIALSTATUS} = NOANSWER]?8000:106)              ; Wenn das Ziel nicht erreichbar war gehts bei 8000 weiter.
    
    ; Sprung hierher von 5 und per goto von 9
    exten => s,106,NoOp(${CONTEXT}: ${PRIORITY}: CAUSECODE is ${CAUSECODE})
    exten => s,107,Goto(500)                                                ; erstmal aus dem Sprungbereich von Dial
    
    ; Hierher kommen wir vom Dial auf Prio 5 bei Ziel nicht erreichbar
    exten => s,206,NoOp(${CONTEXT}: ${PRIORITY}: CAUSECODE is ${CAUSECODE})
    exten => s,207,Goto(500)
    
    ; Hier sind wir ausserhalb der Sprungziele des 1. Dial
    ; Hier koennte es weitergehen, wenn ein CBC-Provider besetzt ist.
    
    exten => s,500,NoOp(${CONTEXT}: ${PRIORITY}: CAUSECODE is ${CAUSECODE})
    exten => s,501,Playtones(busy);
    exten => s,502,Busy
    exten => s,503,Hangup
    
    ;exten => s,500,NoOp(${CONTEXT}: ${PRIORITY}: CAUSECODE is ${CAUSECODE})
    ;exten => s,501,GotoIf($[${DIALSTATUS} = CONGESTION]?108:110)   ; Wenn congestion dann weiter bei 106 (waehlen ueber t-com direkt), sonst bei 107
    ;                                                               ; weiter
    ;
    ;exten => s,502,SetVar(CALLFILENAME=${TIMESTAMP}-${CALLERIDNUM}-Ziel:${EWL})
    ;exten => s,503,Monitor(wav,${CALLFILENAME},m)
    ;
    ;exten => s,504,Dial(CAPI/@32527918:${EWL},60,Tt)
    ;exten => s,505,NoOp(${CONTEXT}: ${PRIORITY}: CAUSECODE is ${CAUSECODE})
    ;exten => s,506,Playtones(busy);
    ;exten => s,507,Busy
    ;exten => s,508,Hangup
    
    
    ; Hier springen wir hin, wenn das Ziel nicht erreicht wurde, z.B. durch
    ; einen Timeout (also nicht dranngegangen) oder Nummer zu kurz.
    
    exten => s,8000,NoOp(Ziel nicht erreicht)
    exten => s,8001,Congestion
    exten => s,8002,Busy
    exten => s,8003,Hangup
    
    exten => s,9000,NoOp(Rufnummer unbekannt)
    exten => s,9001,Playback(invalid)
    exten => s,9002,Wait(1)
    exten => s,9003,Playback(invalid)
    exten => s,9004,Wait(1)
    exten => s,9005,Playback(invalid)
    exten => s,9006,Wait(1)
    exten => s,9007,Playback(invalid)
    exten => s,9008,Wait(1)
    exten => s,9009,Playback(invalid)
    exten => s,9010,Wait(1)
    exten => s,9011,Playback(invalid)
    exten => s,9012,Wait(1)
    exten => s,9013,Congestion
    exten => s,9014,Busy
    exten => s,9015,Hangup
    
    
    Ich bekomme es nicht hin, falsche Rufnummern oder ein Besetzt zu erkennen.

    Die Auswertung ergibt immer, unabhängig vom Status:

    HANGUPCAUSE is 0 and DIALSTATUS is NOANSWER"

    Hat jemand eine Idee?


    MfG,
    Karl
     
  2. rannseier

    rannseier Aktives Mitglied

    Registriert seit:
    5 Mai 2004
    Beiträge:
    986
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hat keiner eine Idee?


    MfG,
    Karl
     
  3. madiehl

    madiehl Mitglied

    Registriert seit:
    15 Feb. 2005
    Beiträge:
    438
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Probier doch bitte mal, ein b vor die Nummer zu setzen (Early B3), evtl. hilft das, also z.B.:
    Code:
    exten => s,5,Dial(CAPI/@32527918:b${CBC}${EWL},60,Tt)                   ; Waehlen ueber Telekom mit Call-By-Call
     
  4. rannseier

    rannseier Aktives Mitglied

    Registriert seit:
    5 Mai 2004
    Beiträge:
    986
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    Das funktioniert leider auch nicht.

    Der Anrufer (Nebenstelle am Asterisk) hört dann zwar die Ansage / Töne vom Ziel, aber leider kann ich das nicht auswerten.


    Gibts sonst noch was, was man machen kann?


    MfG,
    Karl
     
  5. rannseier

    rannseier Aktives Mitglied

    Registriert seit:
    5 Mai 2004
    Beiträge:
    986
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Weiss keiner, ob man da mit chan_capi irgendwas machen kann?


    MfG,
    Karl