[erledigt] Nebenstelle soll auf spezielle MSN reagieren

joerg100

Neuer User
Mitglied seit
23 Sep 2006
Beiträge
44
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe noch letzte Probleme beim Feintuning:

--> Spezielle Nebenstelle soll bei spezieller MSN "klingeln"

Ich bekomme schon hin, dass eine Nebenstelle auf einer speziellen Nebenstelle klingelt, die jeweils zweite Rufverteilungsregel (hier im Code die MSN 8901234) führt zu folgender Fehlermeldung:

== Starting CAPI/ISDN1#02/1234567-69 at capi_in1,s,1 failed so falling back to context ´default´

== Starting CAPI/ISDN1#02/1234567-69 at capi_in1,s,1 still failed so falling back to context ´default´

WARNING[2489]: pbx.c:2468 __ast_pbx_run: Channel ´CAPI/ISDN1#02/1234567-69´sent into invalid extension ´s´in context ´default´, but no invalid handler

Ich habe folgende Codes in der extensions.conf, habe hier mal fast den gesamten Code wiedergegeben, da ich denke, dass dich eigentlichen Codes unter CAPI-IN1 stimmen. Sorry, falls es zu lang ist.


Code:
[globals]
; gehende Nummer in [festnetz_out]
CAPI_CALLERID=1234567

;Callback (interne extension 94 oder auf CAPI/ISDN1 eingehender Ruf):
;(Triggerung durch Auflegen innerhalb von 5 Sekunden):
;CB_IN_CHANNEL=SIP/772
;CB_OUT_CHANNEL=SIP/772
;intern (fuer internes ISDN-Telefon mit msn 772; extension 94 waehlbar per 994#):
;CB_IN_CHANNEL=CAPI/ISDN3/772
;CB_OUT_CHANNEL=CAPI/ISDN3/772
;extern 
;CB_IN_CHANNEL=CAPI/ISDN1/0981234567
;CB_OUT_CHANNEL=CAPI/ISDN1/0981234567
;CB_CALLERID=Fritzbox <1234567>
;CB_WAITTIME=90
;CB_CONTEXT=echotest
;CB_EXTENSION=80
;CB_CONTEXT=callthroughtest
;CB_EXTENSION=93

MAILER_TO=root@localhost
MAILER_FROM=asterisk@localhost
MAILER_SMTP=smtp.localhost
; smtp user und password nur bei Bedarf eintragen (sonst leer lassen!)
MAILER_USER=
MAILER_PASSWORD=

[general]
static=yes
writeprotect=no

; Macros
[macro-entfernegitter]
; wenn Nummer mit # endet, das # Zeichen abschneiden, als EXTEN2 zurückgeben
; - um am internen isdn S0 der fritzbox asterisk zu erreichen, muss 912...# gewählt werden

exten => s,1,Set(EXTEN2=${IF( $[ ${MACRO_EXTEN:-1} = # ] ? ${MACRO_EXTEN:0:$[${LEN(${MACRO_EXTEN})}-1]} : ${MACRO_EXTEN} )})
;exten => s,n,NoOp(${EVAL(${EXTEN2})} -- ${MACRO_CONTEXT})

; --------------------------------------------------------------------
; f.r interne Funktionen: Echo, Anrufbeantworter ...
[headsettest]
exten => _95!,1,Dial,CELL/headset

;Callback testen
[callbacktest]
;exten => _94!,1,noop,callerid=${CALLERID(all)}, channel=${CHANNEL:0:10}, callback_in_channel=${CB_IN_CHANNEL}
;exten => _94!,n,gotoif,$["${CHANNEL:0:$[${LEN(${CB_IN_CHANNEL})}-1-${LEN(${CALLERID(num)})}]}" != "${CB_IN_CHANNEL:0:$[${LEN(${CB_IN_CHANNEL})}-1-${LEN(${CALLERID(num)})}]}"]?80
;exten => _94!,n,gotoif,$["${CALLERID(num)}" != "${CB_IN_CHANNEL:-${LEN(${CALLERID(num)})}}"]?80
;exten => _94!,n,wait,1
;exten => _94!,n,goto,callback-wait|s|1

;exten => _94!,80,hangup

; nicht per include in lokal aufzunehmen; wird ueber callbacktest aufgerufen.
;[callback-wait]
;exten => s,1,Set(CB_TRIGGERED=1|g)
;exten => s,n,ringing
;exten => s,n,wait,5

;exten => t,1,Set(CB_TRIGGERED=0|g)
;exten => t,n,hangup

;exten => h,1,gotoif,$[${CB_TRIGGERED}]?callback-callfile|s|1

; nicht per include in lokal aufzunehmen; wird ueber callbacktest aufgerufen.
;[callback-callfile]
;exten => s,1,system,echo "Channel: ${CB_OUT_CHANNEL}" >/var/spool/asterisk/call0
;exten => s,n,system,echo "CallerID: ${CB_CALLERID}" >>/var/spool/asterisk/call0
;exten => s,n,system,echo "WaitTime: ${CB_WAITTIME}" >>/var/spool/asterisk/call0
;exten => s,n,system,echo "MaxRetries: 0" >>/var/spool/asterisk/call0
;exten => s,n,system,echo "Context: ${CB_CONTEXT}" >>/var/spool/asterisk/call0
;exten => s,n,system,echo "Extension: ${CB_EXTENSION}" >>/var/spool/asterisk/call0
;exten => s,n,system,mv /var/spool/asterisk/call0 /var/spool/asterisk/outgoing
;exten => s,n,system,touch /var/spool/asterisk/outgoing
;exten => s,n,goto,100

;exten => s,80,wait,5
;exten => s,100,hangup


;Callthrough testen
;[callthroughtest]
; Prompt caller to authenticate and validate passcode
;exten => _93!,1,Goto(callthroughauth,s,1)

; nicht per include in lokal aufzunehmen; wird ueber callthroughtest aufgerufen.
;[callthroughauth]
; Prompt caller to authenticate and validate passcode
;exten => _1234567!,1,goto(s,1) 
;exten => s,1,answer
;exten => s,2,Noop(${CALLERID(num)})
;exten => s,3,wait,1
;exten => s,4,authenticate,/etc/asterisk/passwd|j

; Log failed authentication and hangup
;exten => _93!,105,system,chroot /oldroot echo "${STRFTIME(||%Y-%m-%d_%H-%M-%S)} - ${CALLERID(num)}: Authentication Failed!" >> /var/log/asterisk/callthrough.log
;exten => _93!,n,HangUp()

;exten => s,5,Goto(callthrough,s,1)

; Log when call has been aborted
;exten => h,1,system,chroot /oldroot echo "${STRFTIME(||%Y-%m-%d_%H-%M-%S)} - ${CALLERID(num)}: Call has been aborted at ${STRFTIME(||%Y-%m-%d_%H-%M-%S)}"  >> /var/log/asterisk/callthrough.log

; nicht per include in lokal aufzunehmen; wird ueber callthroughtest aufgerufen.
;[callthrough]
; Prompt caller to key-in number to be dialed and to finish with #
;exten => s,1,Set(NR=)
;exten => s,2,Background(vm-enter-num-to-call)
;exten => s,3,Set(TIMEOUT(response)=30)
;exten => s,4,WaitExten
;exten => _X,1,Set(NR=${NR}${EXTEN})
;exten => _X,2,Goto(s,3)

;exten => *,1,Goto(s,1)

;exten => #,1,NoOp(${NR})
;exten => #,2,Playback(vm-dialout)
;exten => #,3,NoOP(Dialing Now)
;exten => #,4,system,chroot /oldroot echo "${STRFTIME(||%Y-%m-%d_%H-%M-%S)} - ${CALLERID(num)}: Authenticated & dialing ${NR}"  >> /var/log/asterisk/callthrough.log
;exten => #,5,NoOp(Dialing ${NR})
;exten => #,6,Dial,CAPI/ISDN1/${NR}|55|bd
;exten => #,6,Dial,SIP/${NR}|55|bd
;exten => #,n,HangUp()

; Log when connection timed out
;exten => t,1,Busy(3)
;exten => t,n,system,chroot /oldroot echo "${STRFTIME(||%Y-%m-%d_%H-%M-%S)} - ${CALLERID(num)}: Call to ${NR} timed out."  >> /var/log/asterisk/callthrough.log
;exten => t,n,HangUp()

; Log when call has finished
;exten => h,1,system,chroot /oldroot echo "${STRFTIME(||%Y-%m-%d_%H-%M-%S)} - ${CALLERID(num)}: Call to ${NR} completed."  >> /var/log/asterisk/callthrough.log

;music on hold testen
[mohtest]
exten => _92!,1,Macro,entfernegitter
exten => _92!,n,answer
exten => _92!,n,wait,1
exten => _92!,n,musiconhold
exten => _92!,n,hangup

;Begruessungsnachricht des Anrufbeantworters aufnehmen
[record_message]
exten => _91!,1,Macro,entfernegitter
exten => _91!,n,answer
exten => _91!,n,wait,1
exten => _91!,n,playback,beep
exten => _91!,n,record,VM_MESSAGE.gsm|3|60
exten => _91!,n,playback,VM_MESSAGE
exten => _91!,n,playback,beep
exten => _91!,n,hangup

;bei usb-Installation werden die Nachrichten vor dem mailen
;auf den usb-Speicher geschrieben (/var/spool/asterisk);
;(Schreiben auf RAM durch Ersetzen von /var/spool/asterisk durch /var/spool)

[recordtest]
; Prompt caller to authenticate and validate passcode
exten => _90!,1,Goto(record,s,1)

; nicht per include in lokal aufzunehmen; wird ueber recordtest aufgerufen.
[record]
exten => s,1,Macro,entfernegitter
exten => s,n,answer,2000
exten => s,n,wait,1
; die gew.hlte Nummer ansagen:
exten => s,n,SayDigits,${EXTEN2}
; Ansagetext vorspielen
exten => s,n,playback,VM_MESSAGE
exten => s,n,set,MSGFILENAME=${CALLERID(num)}-${TIMESTAMP}
exten => s,n,set,MAILER_SUBJECT=Anrufer:${CALLERID(num)} ${STRFTIME(||%Y-%m-%d_%H-%M-%S)}
exten => s,n,record,/var/spool/asterisk/${MSGFILENAME}.WAV|5|60
;exten => s,n,playback,/var/spool/asterisk/${MSGFILENAME}
exten => s,n,hangup

; Nachricht nach Hangup per e-mail versenden und löschen
exten => h,1,gotoif,${MSGFILENAME}?20:48
exten => h,20,system,chroot /oldroot mv /var/spool/asterisk/${MSGFILENAME}.WAV /var/spool/asterisk/${MSGFILENAME}.wav
exten => h,n,gotoif,${MAILER_USER}?40
exten => h,n,system(chroot /oldroot mailer -s "${MAILER_SUBJECT}" -m "${MAILER_SMTP}" -f "${MAILER_FROM}" -t "${MAILER_TO}" -d /var/spool/asterisk/${MSGFILENAME}.wav)
exten => h,n,goto,45
exten => h,40,system(chroot /oldroot mailer -a "${MAILER_USER}" -w "${MAILER_PASSWORD}" -s "${MAILER_SUBJECT}" -m "${MAILER_SMTP}" -f "${MAILER_FROM}" -t "${MAILER_TO}" -d /var/spool/asterisk/${MSGFILENAME}.wav)
exten => h,n,goto,45
; Nachricht bei erfolgreichem Versand loeschen
exten => h,45,gotoif,$[${SYSTEMSTATUS} = SUCCESS]?46:48
exten => h,46,system,chroot /oldroot rm /var/spool/asterisk/${MSGFILENAME}.wav
exten => h,47,goto,49
exten => h,48,NoOp(Hanging up - no message to send)
exten => h,49,NoOp()

[echotest]
exten => _80!,1,Macro,entfernegitter
exten => _80!,n,answer
exten => _80!,n,wait,2
; als Test auf die Spracheinstellung, die gewählte Nummer ansagen:
exten => _80!,n,SayNumber,80
exten => _80!,n,wait,2
exten => _80!,n,playback,demo-echotest
exten => _80!,n,echo
exten => _80!,n,playback,demo-echodone
exten => _80!,n,hangup

[authtest]
exten => _89!,1,Macro,entfernegitter
exten => _89!,n,answer
exten => _89!,n,wait,2
exten => _89!,n,authenticate,/etc/asterisk/passwd
exten => _89!,n,system,zebedee2.bin -f /etc/zebedee/zbdr23.conf
exten => _89!,n,playback,beep
exten => _89!,n,hangup

;
; --------------------------------------------------------------------
; für rausgehende Rufe
;
; Es hat sich als gute Praxis erwiesen, die Inhalte der Datei
; extensions.conf modular aufzubauen. Diese Praxis wollen
; wir auch hier anwenden
;

[lokal]
include => echotest
include => authtest
include => recordtest
include => record_message


; Erreichbarkeit der Nebenstellen 
; untereinander herstellen

; Erreichbarkeit der Telefone am internen S0 der fritzbox 7050
; (wähle nach S0 intern ohne führende Ziffer 5: 5123 für Telefon mit msn=123)
exten => _5.,1,Dial,CAPI/ISDN3/${EXTEN:1}|55|Tt/b

; remote asterisk
; (wähle nach remote asterisk ohne führende Ziffer 6: 680 echotest remote)
exten => _6X.,1,Dial,IAX2/[email protected]/${EXTEN:1}

; SCCP
exten => _70X,1,Dial,SCCP/${EXTEN}|55|Ttr

; SIP
exten => _77X,1,Dial,SIP/${EXTEN}|55|Ttr

; IAX2
exten => _8[1-9],1,Dial,IAX2/${EXTEN}|55|Ttr

[festnetz_out]
; Raustelefonieren per externen S0 der fritzbox 7050
; wenn Nummer führende Null hat (0 wird mitgewählt!)
; erzwinge default calller id aus capi.conf: /d
; (/d geht nicht; SetCallerID verwenden)
;exten => _0X.,1,SetCallerID,${CAPI_CALLERID}
;exten => _0X.,n,Dial,CAPI/ISDN1/${EXTEN}|55|Tt/bd

[sip1_out]
;exten => _X.,1,SetCallerID,1234567
exten => _X.,1,Dial,SIP/${EXTEN}@NAME|45|r
exten => _00X.,102,Busy(3)

[sip2_out]
exten => _X.,1,Dial,SIP/${EXTEN}@NAME|45|r
exten => _00X.,102,Busy(3)

; --------------------------------------------------------------------
; für reinkommende Rufe
;
; hier kommt der default-Context, in dem alle Geraete in der
; Grundkonfiguration erstmal laufen.
; Alle Geraete koennen sich gegenseitig anrufen

[default]
include => lokal

...

; ISDN S0 extern
[capi_in1]
exten => 1234567,1,Dial(SIP/772,30,r)
exten => 8901234,n,Dial(SIP/771,30,r)
;exten => _X.,1,Dial(SIP/771&SIP/772,30,Ttr)
;exten => _82989825.,2,Dial(SIP/774,30,Ttr)

; callback?
; (compare number and channel of caller with number and channel in CB_IN_CHANNEL)
;exten => _X.,1,noop,callerid_num=${CALLERID(num)}, channel=${CHANNEL}, callback_channel=${CB_IN_CHANNEL}
;exten => _X.,n,gotoif,$["${CHANNEL:0:$[${LEN(${CB_IN_CHANNEL})}-1-${LEN(${CALLERID(num)})}]}" != "${CB_IN_CHANNEL:0:$[${LEN(${CB_IN_CHANNEL})}-1-${LEN(${CALLERID(num)})}]}"]?80
;exten => _X.,n,gotoif,$["${CALLERID(num)}" != "${CB_IN_CHANNEL:-${LEN(${CALLERID(num)})}}"]?80
;exten => _X.,n,goto,callback-wait|s|1

; Bei SCCP SetCalledParty Funktion nutzen um Name und Nummer der jeweiligen angerufenen Nebenstelle(n)
; fuer chan_sccp zu setzen
;exten => _701.,1,SetCalledParty("Home Office" <1234567>)>
;exten => _701.,2,Dial,SIP/771&IAX2/81&SCCP/701&CAPI/ISDN3/31|30|r
; mit sccp:
;--------exten => _X.,80,Dial,SIP/771&IAX2/81&SCCP/701&CAPI/ISDN3/31|30|r
; ohne sccp:
;exten => _X.,80,Dial,SIP/771&IAX2/81&CAPI/ISDN3/31|30|r

; ISDN S0 intern: akzeptiere nur Anrufe mit führender 9
; (entferne die führende 9 und das abschliessende #)
[capi_in3]
exten => _9[1-8]!,1,Macro,entfernegitter
exten => _9[1-8]!,n,Goto,lokal|${EXTEN2:1}|1
exten => _90!,1,Macro,entfernegitter
exten => _90!,n,Goto,festnetz_out|${EXTEN2:1}|1
exten => _99!,n,Goto,sip_out|${EXTEN2:2}|1

[mobile_in]
exten => s,1,noop,${CALLERID(all)}
exten => s,n,Dial,SIP/772
;exten => s,n,goto,echotest|80|1
 
Zuletzt bearbeitet:
Hi Joerg,

1) gib im CLI-Prompt mal "show dialplan capi_in1" ein und poste den Output hier.

2) setze im context [capi_in1] die exten Anweisung für jede MSN jeweils beginnend mit "1":
Code:
[capi_in1]
exten => 82912345,[COLOR=red]1[/COLOR],Dial(SIP/771,30,r)
exten => 89612345,[COLOR=red]1[/COLOR],Dial(SIP/772,30,r)

Gruß
dynamic
 
Hallo,

danke für die Hilfe!

Folgender Output:

[ Context ´capi_in1`created by ´pbx_config´ ]

xxxxxxx => 2. Dial (SIP/771|30|r)
yyyyyy => 1. Dial (SIP/771|30|r)

-= 2 extensions (2 priorities) in 1 context. =-

Den Rest probiere ich heute auch noch!

Viele Grüße,

Jörg
 
Hi Joerg,

der Output passt aber irgendwie nicht zu Deiner "extensions.conf", in der eigentlich auf zwei unterschiedliche SIP-Telefone "ausgegeben" wird :confused:

Mit dieser Dialplan würde alles auf 771 ausgegeben!

Gruß
dynamic
 
Hallo dynamic,

habe nun den Code wie empfohlen geändert, nun klappt alles!

Jetzt folgende Meldung


[ Context ´capi_in1`created by ´pbx_config´ ]

xxxxxxx => 1. Dial (SIP/772|30|r)
yyyyyy => 1. Dial (SIP/771|30|r)

-= 2 extensions (2 priorities) in 1 context. =-

Vielen Dank!
 
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.