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.
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
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