Error-Handling im Rufnummernplan

rannseier

Aktives Mitglied
Mitglied seit
5 Mai 2004
Beiträge
986
Punkte für Reaktionen
0
Punkte
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
 
Hat keiner eine Idee?


MfG,
Karl
 
rannseier schrieb:
Code:
exten => s,5,Dial(CAPI/@32527918:${CBC}${EWL},60,Tt)                   ; Waehlen ueber Telekom mit Call-By-Call
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
 
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
 
Weiss keiner, ob man da mit chan_capi irgendwas machen kann?


MfG,
Karl
 
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.