Last active
November 6, 2015 00:38
-
-
Save meitinger/a9730bc4e536bd3194e3 to your computer and use it in GitHub Desktop.
Asterisk Dialplan (obsolete, see https://github.com/meitinger/asterisk)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Copyright (C) 2007-2012, Manuel Meitinger | |
; This program is free software, distributed under the terms of | |
; the GNU General Public License Version 2. See the LICENSE file | |
; at the top of the source tree. | |
; (1) Alle Benutzer und Administratoren haben Voicemail und einen - mit einer Faxdurchwahl übereinstimmenden - Account-Code. | |
; (2) Alle Benutzer, und nur Benutzer kommen in den from-user Kontext. | |
; (3) Alle Administratoren, und nur Administratoren kommen in den from-admin Kontext. | |
; (4) Alle Geräte, und nur Geräte kommen in den from-device Kontext. | |
; (5) Kein Gerät hat Voicemail. | |
; (6) Alle Benutzer und Administratoren haben mindestens SIP. | |
; (7) Alle vollständig terminierbaren haben zwei, alle nicht vollständig terminierbaren Geräte haben mindestens drei Stellen. | |
; (8) Alle Benutzer und Administratoren, und nur Benutzer und Administratoren dürfen Transferieren, Parken und Aufzeichnen. | |
; (9) Alle direkt anwählbaren Benutzer und Administratoren haben zwei, alle nicht direkt anwählbaren Benutzer und Administratoren mindestens drei Stellen. | |
; (10) Alle Angaben in users.conf (mit Ausnahme von Namen und Passwörter) müssen ohne die Verwenden der QUOTE-Funktion im Dialplan verwendet werden können. | |
[general] | |
static=yes ; Die Datei darf nicht von pbx_config geschrieben werden... | |
writeprotect=yes ; ...und auch nicht über die CLI. | |
clearglobalvars=no ; Globale Variablen sollen reloads überstehen, aber eigentlich eh nicht geändert werden. | |
userscontext=extensions ; Kontext in dem die hints von der users.conf eingetragen werden. | |
[globals] | |
TRANSFER_CONTEXT=from-transfer | |
RECORDINGS=/var/spool/asterisk/recordings/ | |
MONITOR_EXEC=/var/spool/asterisk/monitor/send.sh | |
MONITOR_PARAMS=||m | |
MONITOR_DOMAIN=aufbauwerk.com | |
SMS_PREFIX=43676842968 | |
SMS_PIN=0568 | |
FAX_TIMEOUT_IN=600 | |
FAX_TIMEOUT_OUT=360 | |
FAX_DOMAIN=aufbauwerk.com | |
BRANCH_2_NAME=Bad Häring | |
BRANCH_2_ID=+43533293300 | |
BRANCH_2_SLOWLINK=0 | |
BRANCH_2_DID=1 | |
BRANCH_2_SERVER=badhaering.aufbauwerk.com | |
[email protected] | |
BRANCH_4_NAME=Innsbruck | |
BRANCH_4_ID=+43512585814 | |
BRANCH_4_SLOWLINK=0 | |
BRANCH_4_DID=1 | |
BRANCH_4_SERVER=innsbruck.aufbauwerk.com | |
[email protected] | |
BRANCH_5_NAME=Lengberg | |
BRANCH_5_ID=+4348588206 | |
BRANCH_5_SLOWLINK=0 | |
BRANCH_5_DID=1 | |
BRANCH_5_SERVER=lengberg.aufbauwerk.com | |
[email protected] | |
BRANCH_6_NAME=Telfs | |
BRANCH_6_ID=+43526267680 | |
BRANCH_6_SLOWLINK=0 | |
BRANCH_6_DID=1 | |
BRANCH_6_SERVER=telfs.aufbauwerk.com | |
[email protected] | |
BRANCH_8_NAME=Lachhof | |
BRANCH_8_ID=+43522357757 | |
BRANCH_8_SLOWLINK=0 | |
BRANCH_8_DID=1 | |
BRANCH_8_SERVER=lachhof.aufbauwerk.com | |
[email protected] | |
ISBRIDGEDCHANNEL=0 | |
ISEXTERNALCHANNEL=0 | |
ISUSERCHANNEL=0 | |
ISFAXCHANNEL=0 | |
ISMOBILECHANNEL=0 | |
[macro-stdexten] ; Ein Stub für den Kontext stdexten, da die Faxerkennung innerhalb von Macros nicht funktioniert. | |
exten => s,1,Set(DIALUSER=${ARG1}) | |
exten => s,n,Set(DIALTECH=${ARG2}) | |
exten => s,n,Goto(stdexten,s,1) | |
[macro-feature] ; Führt ein Feature aus und gibt den Erfolg als Ton wieder. | |
exten => s,1,TryExec(${ARG1}) | |
exten => s,n,Playback(beep${IF($["${TRYSTATUS}"!="SUCCESS"]?err)}) | |
exten => s,n,MacroExit() | |
[macro-set-bridged] ; Setzt die Variablen auf dem mit dem Benutzerkanal verbundenen Kanal. | |
exten => s,1,Set(ISBRIDGEDCHANNEL=1) | |
;exten => s,n,GotoIf($[!${ISEXTERNALCHANNEL}||${EXISTS(${CALLERID(name)})}]?+2) | |
;exten => s,n,AGI(herold,${CALLERID(num)}) | |
exten => s,n,MacroExit() | |
[macro-set-bridge] ; Setzt die Variablen auf dem Benutzerkanal. | |
exten => s,1,Set(_BRIDGEDCALLERID=${QUOTE(${ARG1})}) | |
exten => s,n,Set(DYNAMIC_FEATURES=monitor-start#monitor-stop#monitor-pause#monitor-resume) | |
exten => s,n,Set(MONITOR_EXEC_ARGS=${QUOTE(${QUOTE(${SIPPEER(${USER},callerid_name)}@${MONITOR_DOMAIN})} ${QUOTE(${BRANCH_${BRANCH}_ID}${USER})} ${QUOTE(${CALLERID(num,${ARG1})})})}) | |
exten => s,n,MacroExit() | |
[macro-forward-callerid] ; Setzt die Caller-ID auf jene des verbundenen Kanals mit dem Präfix 'WG:'. | |
exten => s,1,Set(CALLERID(name)=${QUOTE(WG:${CALLERID(${IF(${EXISTS(${CALLERID(name,${BRIDGEDCALLERID})})}?name:num)},${BRIDGEDCALLERID})})}) | |
exten => s,n,Set(CALLERID(num)=${QUOTE(${CALLERID(num,${BRIDGEDCALLERID})})}) | |
exten => s,n,MacroExit() | |
[macro-voicemailmain] ; Startet das VoiceMail-Menü des aktuellen Benutzers ohne Passwort oder mit vollständiger Authentifizierung. | |
exten => s,1,Answer(500) | |
exten => s,n,VoiceMailMain(${IF(${ISUSERCHANNEL}?${SIPPEER(${USER},mailbox)},s)}) | |
exten => s,n,Hangup() | |
[macro-voicemail] ; Fragt das Passwort für den angebenen Benutzer ab und geht dann ins VoiceMail-Menü des Benutzerkanals. | |
exten => s,1,Answer(1000) | |
exten => s,n,GotoIf($["${SIPPEER(${ARG1},context)}"="from-user"||"${SIPPEER(${ARG1},context)}"="from-admin"]?+3) | |
exten => s,n,Playback(vm-incorrect) | |
exten => s,n,Hangup() | |
exten => s,n,Set(USER=${ARG1}) | |
exten => s,n,VMAuthenticate(${SIPPEER(${USER},mailbox)}) | |
exten => s,n,Macro(set-user-channel) | |
exten => s,n,VoiceMailMain(${SIPPEER(${USER},mailbox)},s) | |
exten => s,n,Hangup() | |
[macro-dial-as] ; Führt einen Anruf im Kontext eines anderen Benutzers aus. | |
exten => s,1,Answer(1500) | |
exten => s,n,Read(DIAL_AS,beep,,,1,10) | |
exten => s,n,Goto(${FILTER(*0123456789,${DIAL_AS})},1) | |
exten => _XX*.,1,GotoIf($["${SIPPEER(${EXTEN:0:2},context)}"="from-user"||"${SIPPEER(${EXTEN:0:2},context)}"="from-admin"]?+3) | |
exten => _XX*.,n,Playback(vm-incorrect) | |
exten => _XX*.,n,Hangup() | |
exten => _XX*.,n,Set(USER=${EXTEN:0:2}) | |
exten => _XX*.,n,VMAuthenticate(${SIPPEER(${USER},mailbox)}) | |
exten => _XX*.,n,Macro(set-user-channel) | |
exten => _XX*.,n,Goto(${SIPPEER(${USER},context)},${EXTEN:3},1) | |
exten => i,1,Hangup() | |
[macro-set-user] ; Markiert den aktuellen Kanal als Benutzerkanal und ermittelt die Benutzernummer, wenn dies nicht schon geschehen ist. | |
exten => s,1,GotoIf(${ISUSERCHANNEL}?+3) | |
exten => s,n,Set(USER=${CUT(CHANNEL,-,1-$[${FIELDQTY(CHANNEL,-)}-1]):$[${LEN(${CHANNEL(channeltype)})}+1]}) | |
exten => s,n,Macro(set-user-channel) | |
exten => s,n,MacroExit() | |
[macro-set-user-channel] ; Setzt alle Benutzerinformationen und markiert den Kanal als Benutzerkanal. | |
exten => s,1,Set(ISUSERCHANNEL=1) | |
exten => s,n,Set(CALLERID(name)=${QUOTE(${SIPPEER(${USER},callerid_name)})}) | |
exten => s,n,Set(CALLERID(num)=${BRANCH_${BRANCH}_ID}${USER}) | |
exten => s,n,Set(CHANNEL(language)=${SIPPEER(${USER},language)}) | |
exten => s,n,Set(CDR(accountcode)=${SIPPEER(${USER},accountcode)}) | |
exten => s,n,MacroExit() | |
[macro-set-user-bridge] ; Führt sowohl set-user als auch set-bridge aus und entfernt die PickUp-Marke. | |
exten => s,1,Set(PICKUPMARK=) | |
exten => s,n,Macro(set-user) | |
exten => s,n,Macro(set-bridge,${ARG1}) | |
exten => s,n,MacroExit() | |
[macro-set-external] ; Markiert den aktuellen Kanal als extern und normiert die Nummer des Anrufers. | |
exten => s,1,Set(ISEXTERNALCHANNEL=1) | |
exten => s,n,Goto(s-${FILTER(+0123456789,${CALLERID(num):0:1})}${FILTER(0123456789,${CALLERID(num):1})},1) | |
exten => _s-00.,1,Set(CALLERID(num)=+${EXTEN:4}) | |
exten => _s-0.,1,Set(CALLERID(num)=+43${EXTEN:3}) | |
exten => _s-.,1,Set(CALLERID(num)=${EXTEN:2}) | |
exten => _s-.,2,MacroExit() | |
exten => s-,1,Set(CALLERID(num)=) | |
exten => s-,n,GotoIf($["${MACRO_CONTEXT}"!="from-sip"]?+2) | |
exten => s-,n,Set(CALLERID(num)=${SIPCHANINFO(recvip)}) | |
exten => s-,n,Set(CALLERID(name)=${IF(${ISNULL(${CALLERID(num)})}?Anonymer Anruf:Internetanruf)}) | |
exten => s-,n,MacroExit() | |
[macro-set-external-bridged] ; Setzt die Variable für externe Kanäle und führt set-bridged aus. | |
exten => s,1,Set(ISEXTERNALCHANNEL=1) | |
exten => s,n,Macro(set-bridged) | |
exten => s,n,MacroExit() | |
[macro-verify-user] ; Überprüft ob es sich bei der angegebenen anwählbaren Nummer um einen Benuter handelt und legt auf wenn dem nicht so ist. | |
exten => s,1,GotoIf($["${SIPPEER(${ARG1},context)}"!="from-user"&&"${SIPPEER(${ARG1},context)}"!="from-admin"]?+2) | |
exten => s,n,MacroExit() | |
exten => s,n,Talk(Der Anschluss ${ARG1} ist ungültig. Es wurden keine Änderungen vorgenommen.,p) | |
exten => s,n,Hangup() | |
[macro-queue-members] ; Listet alle Mitglieder einer bestimmten Warteschlange auf und ruft eine angegeben Unterroutine auf. | |
exten => s,1,Set(QUEUE_MEMBERS=${QUOTE(${QUEUE_MEMBER_LIST(${ARG1})})}) | |
exten => s,n,Set(QUEUE_MEMBERS_COUNT=${FIELDQTY(QUEUE_MEMBERS,\,)}) | |
exten => s,n,While(${QUEUE_MEMBERS_COUNT}) | |
exten => s,n,Set(QUEUE_MEMBER=${QUOTE(${CUT(QUEUE_MEMBERS,\,,${QUEUE_MEMBERS_COUNT})})}) | |
exten => s,n,Set(QUEUE_EXTEN=${FILTER(0123456789,${QUEUE_MEMBER:6:2})}) | |
exten => s,n,Set(QUEUE_PENALTY=${FILTER(123456789,${QUEUE_MEMBER:9:1})}) | |
exten => s,n,GotoIf($[${QUOTE(${QUEUE_MEMBER})}!="Local/${QUEUE_EXTEN}-${QUEUE_PENALTY}@from-queue"]?+2) | |
exten => s,n,Gosub(${MACRO_CONTEXT},${MACRO_EXTEN},${ARG2}) | |
exten => s,n,Set(QUEUE_MEMBERS_COUNT=$[${QUEUE_MEMBERS_COUNT}-1]) | |
exten => s,n,EndWhile() | |
exten => s,n,MacroExit() | |
[macro-set-program] ; Legt das aktuelle Programm fest und ändert das BLF. | |
exten => s,1,Set(PROGRAM_INDEX=9) | |
exten => s,n,While(${PROGRAM_INDEX}) | |
exten => s,n,Set(DEVSTATE(Custom:Program${PROGRAM_INDEX})=${IF($[${PROGRAM_INDEX}=${ARG1}]?INUSE:NOT_INUSE)}) | |
exten => s,n,Set(PROGRAM_INDEX=$[${PROGRAM_INDEX}-1]) | |
exten => s,n,EndWhile() | |
exten => s,n,GotoIf(${ARG1}?+3) | |
exten => s,n,DBDel(Program/Current) | |
exten => s,n,MacroExit() | |
exten => s,n,Set(DB(Program/Current)=${ARG1}) | |
exten => s,n,MacroExit() | |
[macro-dial-out] ; Wählt eine externe Nummer wenn der Kanal ein Benutzerkanal ist. | |
exten => s,1,Set(DIAL_DTMF=) | |
exten => s,2,GotoIf($[!${ISUSERCHANNEL}||${ISEXTERNALCHANNEL}]?${MACRO_CONTEXT},i,1) | |
exten => s,n,GotoIf(${ISMOBILECHANNEL}?:+3) | |
exten => s,n,Talk(Bitte verwenden Sie das Mobiltelefon.,m,macro-dial-out) | |
exten => s,n,MacroExit() | |
exten => s,n,GotoIf($["${MACRO_EXTEN:0:3}"="+43"]?+2) | |
exten => s,n,Talk(Achtung! Es wird nun nach ${ARG1} gewählt.,m,macro-dial-out) | |
exten => s,n,Set(EXITCONTEXT=${CONTEXT}) | |
exten => s,n,Macro(dial-string,${IF($["${MACRO_EXTEN:0:3}"="+43"]?0${MACRO_EXTEN:3}:${IF($["${MACRO_EXTEN:0:1}"="+"]?00${MACRO_EXTEN:1}:${MACRO_EXTEN})})},${BRANCH},${IF($[${LEN(${USER})}=2]?${USER}:)}) | |
exten => s,n,Macro(set-bridge,"" <${MACRO_EXTEN}>) | |
exten => s,n,Dial(${MACRO_RESULT},,dgKTM(set-external-bridged)${IF(${EXISTS(${DIAL_DTMF})}?D(${DIAL_DTMF}))}) | |
exten => s,n,GotoIf($["${DIALSTATUS}"!="CHANUNAVAIL"]?+2) | |
exten => s,n,Talk(Keine freie ausgehende Leitung.,p) | |
exten => s,n,GotoIf($["${DIALSTATUS}"!="NOANSWER"]?+2) | |
exten => s,n,Talk(Gegenstelle antwortet nicht.,p) | |
exten => s,n,GotoIf($["${DIALSTATUS}"!="BUSY"]?+2) | |
exten => s,n,Talk(Zur Zeit besetzt.,p) | |
exten => s,n,GotoIf($["${DIALSTATUS}"!="CONGESTION"]?+2) | |
exten => s,n,Talk(Verbindungsfehler.,p) | |
exten => s,n,MacroExit() | |
exten => *,1,MacroExit() | |
[macro-dial-in] ; Wählt eine interne Nummer, entweder in der lokalen oder einer entfernten Zweigstelle. | |
exten => s,1,Goto(s-${MACRO_EXTEN:${IF(${EXISTS(${ARG2})}?${ARG2}:${LEN(${BRANCH_${ARG1}_ID})})}},1) | |
exten => s-,1,Goto(s-00,1) | |
exten => _s-XX,1,GotoIf($[${ARG1}=${BRANCH}||!(${BRANCH_${BRANCH}_SLOWLINK}||${BRANCH_${ARG1}_SLOWLINK})]?fast) | |
exten => _s-XX,n,GotoIf(${BRANCH_${ARG1}_DID}?+2) | |
exten => _s-XX,n,Set(DIAL_DTMF=${EXTEN:2}) | |
exten => _s-XX,n,Set(ARG1=${BRANCH_${ARG1}_NAME}) | |
exten => _s-XX,n,Goto(s,2) | |
exten => _s-XX,n(fast),Set(EXITCONTEXT=${CONTEXT}) | |
exten => _s-XX,n,GotoIf(${ISUSERCHANNEL}?:+2) | |
exten => _s-XX,n,Macro(set-bridge,"${ARG1}${EXTEN:2}" <${MACRO_EXTEN}>) | |
exten => _s-XX,n,Dial(${IF($[${ARG1}=${BRANCH}]?Local/${EXTEN:2}-${IF(${ISUSERCHANNEL}?local:extensions)}@${CONTEXT}/n:IAX2/${ARG1}/${EXTEN:2}:${IF(${ISUSERCHANNEL}?local:extensions)})},,dig${IF(${ISUSERCHANNEL}?KTM(set-bridged))}) | |
exten => _s-XX,n,MacroExit() | |
exten => _s-.,1,Playback(pbx-invalid) | |
exten => _s-.,n,MacroExit() | |
exten => _XX-.,1,Goto(${EXTEN:3},${EXTEN:0:2},1) | |
include => macro-dial-out | |
[macro-did] ; Beginnt einen eingehenden Anruf mit den Anfangsziffern einer direkter Durchwahl. | |
;exten => s,1,Set(TIMEOUT(digit)=$[${IF(${BRANCH_${BRANCH}_DID}?1.5:3)}*${ARG3}]) | |
exten => s,1,Set(TIMEOUT(digit)=${IF(${BRANCH_${BRANCH}_DID}?1.5:3)}) | |
exten => s,n,Set(PREFIX=${ARG1}) | |
exten => s,n,Set(SUFFIX=from-extern-xxx) | |
exten => s,n,Goto(${SUFFIX:0:$[12+${LEN(${PREFIX})}]},s,1) | |
[macro-fax] ; Definiert die Faxkopfzeile und initialisiert den Faxempfang. | |
exten => s,1,GotoIf($["${MACRO_EXTEN}"="fax"]?+2) | |
exten => s,n,Set(FAXEXTEN=${MACRO_EXTEN}) | |
exten => s,n,Set(FAXMAILTO=${QUOTE(${ARG1})}) | |
exten => s,n,Set(LOCALHEADERINFO=${QUOTE(${ARG2})}) | |
exten => s,n,Set(LOCALSTATIONID=${BRANCH_${BRANCH}_ID}${FAXEXTEN}) | |
exten => s,n,GotoIf($["${MACRO_CONTEXT}"!="faxes"]?+2) | |
exten => s,n,Return() | |
exten => s,n,Set(TIMEOUT(absolute)=${FAX_TIMEOUT_IN}) | |
exten => s,n,GotoIf($[${QUOTE(${CHANNEL(channeltype)})}="CAPI"]?fax-capi,s,1:fax-spandsp,s,1) | |
[fax-from-iax] ; Ruft eine Faxnummer für das iaxmodem an. | |
exten => _X.,1,Set(TIMEOUT(absolute)=${FAX_TIMEOUT_OUT}) | |
exten => _X.,n,Macro(dial-string,${EXTEN},${BRANCH},) | |
exten => _X.,n,Dial(${MACRO_RESULT}) | |
exten => _X.,n,Hangup() | |
[fax-from-exim] ; Ruft eine Faxnummer für das Versenden mit exim (also per Mail) an. | |
exten => _X.,1,Macro(dial-string,${EXTEN},${BRANCH},${SIPPEER(${USER},accountcode)}) | |
exten => _X.,n,Dial(${MACRO_RESULT}) | |
exten => _X.,n,Hangup() | |
[fax-exim] ; Sendet ein Fax das vorher per Mail empfangen wurde. | |
exten => try,1,Set(REASON=x) | |
exten => try,n,Set(TIMEOUT(absolute)=${FAX_TIMEOUT_OUT}) | |
exten => try,n,Answer() | |
exten => try,n,Wait(3) | |
exten => try,n,Gosub(faxes,${SIPPEER(${USER},accountcode)},1) | |
exten => try,n,GotoIf($[${QUOTE(${CHANNEL(channeltype)})}="CAPI"]?capi:spandsp) | |
exten => try,n(spandsp),Set(TRYSTATUS=) | |
exten => try,n,TryExec(TxFAX(/var/spool/asterisk/fax/${MESSAGE}/tif)) | |
exten => try,n,Hangup() | |
exten => try,n(capi),Set(FAXSTATUS=) | |
exten => try,n,Set(FAXREASON=) | |
exten => try,n,capiCommand(sendfax,/var/spool/asterisk/fax/${MESSAGE}/sff,${LOCALSTATIONID},${LOCALHEADERINFO}) | |
exten => try,n,Hangup() | |
exten => failed,1,Hangup() | |
exten => failed-x,1,Set(REASON="Übertragungsfehler") | |
exten => failed-t,1,Set(REASON="Zeitüberschreitung") | |
exten => failed-8,1,Set(REASON="Keine freie Leitung") | |
exten => failed-3,1,Set(REASON="Keine Antwort") | |
exten => failed-5,1,Set(REASON="Leitung belegt") | |
exten => _failed-.,1,Set(REASON="Keine Verbindung") | |
exten => _failed-.,n,System(/var/spool/asterisk/fax/failure.sh ${QUOTE(${MESSAGE})} ${QUOTE(${RETRIES})} ${QUOTE(${REASON})} ${QUOTE(${SIPPEER(${USER},callerid_name)}@${MONITOR_DOMAIN})}) | |
exten => succeeded,1,System(/var/spool/asterisk/fax/success.sh ${QUOTE(${MESSAGE})} ${QUOTE(${SIPPEER(${USER},callerid_name)}@${MONITOR_DOMAIN})}) | |
exten => h,1,GotoIf(${IF($[${QUOTE(${CHANNEL(channeltype)})}="CAPI"]?$["${FAXSTATUS}"="0"&&"${FAXREASON}"="0"]:$["${TRYSTATUS}"="SUCCESS"])}?succeeded,1:failed-${REASON},1) | |
exten => T,1,Set(REASON=t) | |
exten => T,n,Hangup() | |
[fax-spandsp] ; Wird vom Faxmakro aufgerufen und sendet ein Fax mittels SpanDSP. | |
exten => s,1,Set(TRYSTATUS=) | |
exten => s,n,Set(FAXFORMAT=tif) | |
exten => s,n,TryExec(RxFAX(/var/spool/asterisk/fax/${UNIQUEID}.tif)) | |
exten => s,n,Hangup() | |
exten => h,1,GotoIf($["${TRYSTATUS}"!="SUCCESS"]?end) | |
exten => h,2,Set(FAXID=${QUOTE(${REMOTESTATIONID})}) | |
include => fax | |
[fax-capi] ; Wird vom Faxmakro aufgerufen und sendet ein Fax mittels CAPI. | |
exten => s,1,Set(FAXSTATUS=) | |
exten => s,n,Set(FAXREASON=) | |
exten => s,n,capiCommand(receivefax,/var/spool/asterisk/fax/${UNIQUEID}.sff,${LOCALSTATIONID},${LOCALHEADERINFO}) | |
exten => s,n,Hangup() | |
exten => h,1,GotoIf($["${FAXSTATUS}"!="0"||"${FAXREASON}"!="0"]?end) | |
exten => h,2,Set(FAXFORMAT=${IF($["${FAXFORMAT}"="0"]?sff:unknown)}) | |
include => fax | |
[fax] ; Versendet ein erfolgreich empfangenes Fax per Mail und benachrichtigt Manageranwendungen darüber. | |
exten => h,3,System(/var/spool/asterisk/fax/send.sh ${QUOTE(/var/spool/asterisk/fax/${UNIQUEID})} ${QUOTE(${CALLERID(all)})} ${QUOTE(${FAXID})} ${QUOTE(${FAXPAGES})} ${QUOTE(${FAXMAILTO})} ${QUOTE(${FAXFORMAT})}) | |
exten => h,4,UserEvent(Fax,Extension: ${FAXEXTEN},From: ${CALLERID(all)},Station: ${FAXID},Pages: ${FAXPAGES}) | |
exten => h,5(end),NoOp() | |
[dial] ; Wählt eine allgemeine Nummer und springt auf (i,return) danach. | |
exten => _+.,1,Goto(+${FILTER(0123456789,${EXTEN:1})},2) | |
exten => _+1!,3,Macro(dial-out,Nordamerika) | |
exten => _+1242!,3,Macro(dial-out,Bahamas) | |
exten => _+1246!,3,Macro(dial-out,Barbados) | |
exten => _+1264!,3,Macro(dial-out,Anguilla) | |
exten => _+1268!,3,Macro(dial-out,Antigua und Barbuda) | |
exten => _+1284!,3,Macro(dial-out,Britische Jungferninseln) | |
exten => _+1340!,3,Macro(dial-out,Amerikanische Jungferninseln) | |
exten => _+1345!,3,Macro(dial-out,Kaimaninseln) | |
exten => _+1441!,3,Macro(dial-out,Bermuda) | |
exten => _+1473!,3,Macro(dial-out,Grenada) | |
exten => _+1649!,3,Macro(dial-out,Turks und Caicosinseln) | |
exten => _+1664!,3,Macro(dial-out,Montserrat) | |
exten => _+1670!,3,Macro(dial-out,Nördliche Marianen) | |
exten => _+1671!,3,Macro(dial-out,Guam) | |
exten => _+1684!,3,Macro(dial-out,Amerikanisch-Samoa) | |
exten => _+1758!,3,Macro(dial-out,Sankt Lucia) | |
exten => _+1767!,3,Macro(dial-out,Dominica) | |
exten => _+1784!,3,Macro(dial-out,Sankt Vincent und die Grenadinen) | |
exten => _+1787!,3,Macro(dial-out,Puerto Rico) | |
exten => _+1808!,3,Macro(dial-out,Midwayinseln) | |
exten => _+1809!,3,Macro(dial-out,Dominikanische Republik) | |
exten => _+1829!,3,Macro(dial-out,Dominikanische Republik) | |
exten => _+1868!,3,Macro(dial-out,Trinidad und Tobago) | |
exten => _+1869!,3,Macro(dial-out,Sankt Kitts und Nevis) | |
exten => _+1876!,3,Macro(dial-out,Jamaika) | |
exten => _+1939!,3,Macro(dial-out,Puerto Rico) | |
exten => _+20!,3,Macro(dial-out,Ägypten) | |
exten => _+212!,3,Macro(dial-out,Marokko) | |
exten => _+213!,3,Macro(dial-out,Algerien) | |
exten => _+216!,3,Macro(dial-out,Tunesien) | |
exten => _+218!,3,Macro(dial-out,Libyen) | |
exten => _+220!,3,Macro(dial-out,Gambia) | |
exten => _+221!,3,Macro(dial-out,Senegal) | |
exten => _+222!,3,Macro(dial-out,Mauretanien) | |
exten => _+223!,3,Macro(dial-out,Mali) | |
exten => _+224!,3,Macro(dial-out,Guinea) | |
exten => _+225!,3,Macro(dial-out,Elfenbeinküste) | |
exten => _+226!,3,Macro(dial-out,Burkina Faso) | |
exten => _+227!,3,Macro(dial-out,Niger) | |
exten => _+228!,3,Macro(dial-out,Togo) | |
exten => _+229!,3,Macro(dial-out,Benin) | |
exten => _+230!,3,Macro(dial-out,Mauritius) | |
exten => _+231!,3,Macro(dial-out,Liberia) | |
exten => _+232!,3,Macro(dial-out,Sierra Leone) | |
exten => _+233!,3,Macro(dial-out,Ghana) | |
exten => _+234!,3,Macro(dial-out,Nigeria) | |
exten => _+235!,3,Macro(dial-out,Tschad) | |
exten => _+236!,3,Macro(dial-out,Zentralafrikanische Republik) | |
exten => _+237!,3,Macro(dial-out,Kamerun) | |
exten => _+238!,3,Macro(dial-out,Kap Verde) | |
exten => _+239!,3,Macro(dial-out,São Tomé und Príncipe) | |
exten => _+240!,3,Macro(dial-out,Äquatorialguinea) | |
exten => _+241!,3,Macro(dial-out,Gabun) | |
exten => _+242!,3,Macro(dial-out,Republik Kongo) | |
exten => _+243!,3,Macro(dial-out,Demokratische Republik Kongo) | |
exten => _+244!,3,Macro(dial-out,Angola) | |
exten => _+245!,3,Macro(dial-out,Guinea-Bissau) | |
exten => _+246!,3,Macro(dial-out,Chagos-Archipel) | |
exten => _+247!,3,Macro(dial-out,Ascension) | |
exten => _+248!,3,Macro(dial-out,Seychellen) | |
exten => _+249!,3,Macro(dial-out,Sudan) | |
exten => _+250!,3,Macro(dial-out,Ruanda) | |
exten => _+251!,3,Macro(dial-out,Äthiopien) | |
exten => _+252!,3,Macro(dial-out,Somalia) | |
exten => _+253!,3,Macro(dial-out,Dschibuti) | |
exten => _+254!,3,Macro(dial-out,Kenia) | |
exten => _+255!,3,Macro(dial-out,Tansania) | |
exten => _+256!,3,Macro(dial-out,Uganda) | |
exten => _+257!,3,Macro(dial-out,Burundi) | |
exten => _+258!,3,Macro(dial-out,Mosambik) | |
exten => _+260!,3,Macro(dial-out,Sambia) | |
exten => _+261!,3,Macro(dial-out,Madagaskar) | |
exten => _+262!,3,Macro(dial-out,Réunion) | |
exten => _+263!,3,Macro(dial-out,Simbabwe) | |
exten => _+264!,3,Macro(dial-out,Namibia) | |
exten => _+265!,3,Macro(dial-out,Malawi) | |
exten => _+266!,3,Macro(dial-out,Lesotho) | |
exten => _+267!,3,Macro(dial-out,Botsuana) | |
exten => _+268!,3,Macro(dial-out,Swasiland) | |
exten => _+269!,3,Macro(dial-out,Komoren und Mayotte) | |
exten => _+27!,3,Macro(dial-out,Südafrika) | |
exten => _+290!,3,Macro(dial-out,Sankt Helena) | |
exten => _+291!,3,Macro(dial-out,Eritrea) | |
exten => _+297!,3,Macro(dial-out,Aruba) | |
exten => _+298!,3,Macro(dial-out,Färöer) | |
exten => _+299!,3,Macro(dial-out,Grönland) | |
exten => _+30!,3,Macro(dial-out,Griechenland) | |
exten => _+31!,3,Macro(dial-out,Niederlande) | |
exten => _+32!,3,Macro(dial-out,Belgien) | |
exten => _+33!,3,Macro(dial-out,Frankreich) | |
exten => _+34!,3,Macro(dial-out,Spanien) | |
exten => _+350!,3,Macro(dial-out,Gibraltar) | |
exten => _+351!,3,Macro(dial-out,Portugal) | |
exten => _+352!,3,Macro(dial-out,Luxemburg) | |
exten => _+353!,3,Macro(dial-out,Irland) | |
exten => _+354!,3,Macro(dial-out,Island) | |
exten => _+355!,3,Macro(dial-out,Albanien) | |
exten => _+356!,3,Macro(dial-out,Malta) | |
exten => _+357!,3,Macro(dial-out,Zypern) | |
exten => _+358!,3,Macro(dial-out,Finnland) | |
exten => _+359!,3,Macro(dial-out,Bulgarien) | |
exten => _+36!,3,Macro(dial-out,Ungarn) | |
exten => _+370!,3,Macro(dial-out,Litauen) | |
exten => _+371!,3,Macro(dial-out,Lettland) | |
exten => _+372!,3,Macro(dial-out,Estland) | |
exten => _+373!,3,Macro(dial-out,Moldawien) | |
exten => _+374!,3,Macro(dial-out,Armenien) | |
exten => _+375!,3,Macro(dial-out,Weißrussland) | |
exten => _+376!,3,Macro(dial-out,Andorra) | |
exten => _+377!,3,Macro(dial-out,Monaco) | |
exten => _+378!,3,Macro(dial-out,San Marino) | |
exten => _+379!,3,Macro(dial-out,Vatikanstadt) | |
exten => _+380!,3,Macro(dial-out,Ukraine) | |
exten => _+381!,3,Macro(dial-out,Serbien) | |
exten => _+382!,3,Macro(dial-out,Montenegro) | |
exten => _+385!,3,Macro(dial-out,Kroatien) | |
exten => _+386!,3,Macro(dial-out,Slowenien) | |
exten => _+387!,3,Macro(dial-out,Bosnien und Herzegowina) | |
exten => _+3883!,3,Macro(dial-out,Europäischer Telefonnummerierungsraum) | |
exten => _+389!,3,Macro(dial-out,Mazedonien) | |
exten => _+39!,3,Macro(dial-out,Italien) | |
exten => _+3906!,3,Macro(dial-out,Vatikanstadt) | |
exten => _+40!,3,Macro(dial-out,Rumänien) | |
exten => _+41!,3,Macro(dial-out,Schweiz) | |
exten => _+420!,3,Macro(dial-out,Tschechien) | |
exten => _+421!,3,Macro(dial-out,Slowakei) | |
exten => _+423!,3,Macro(dial-out,Liechtenstein) | |
exten => _+43!,3,Macro(dial-out,Österreich) | |
exten => _+44!,3,Macro(dial-out,Vereinigtes Königreich) | |
exten => _+45!,3,Macro(dial-out,Dänemark) | |
exten => _+46!,3,Macro(dial-out,Schweden) | |
exten => _+47!,3,Macro(dial-out,Norwegen) | |
exten => _+48!,3,Macro(dial-out,Polen) | |
exten => _+49!,3,Macro(dial-out,Deutschland) | |
exten => _+500!,3,Macro(dial-out,Falklandinseln) | |
exten => _+501!,3,Macro(dial-out,Belize) | |
exten => _+502!,3,Macro(dial-out,Guatemala) | |
exten => _+503!,3,Macro(dial-out,El Salvador) | |
exten => _+504!,3,Macro(dial-out,Honduras) | |
exten => _+505!,3,Macro(dial-out,Nicaragua) | |
exten => _+506!,3,Macro(dial-out,Costa Rica) | |
exten => _+507!,3,Macro(dial-out,Panama) | |
exten => _+508!,3,Macro(dial-out,Saint-Pierre und Miquelon) | |
exten => _+509!,3,Macro(dial-out,Haiti) | |
exten => _+51!,3,Macro(dial-out,Peru) | |
exten => _+52!,3,Macro(dial-out,Mexiko) | |
exten => _+53!,3,Macro(dial-out,Kuba) | |
exten => _+54!,3,Macro(dial-out,Argentinien) | |
exten => _+55!,3,Macro(dial-out,Brasilien) | |
exten => _+56!,3,Macro(dial-out,Chile) | |
exten => _+57!,3,Macro(dial-out,Kolumbien) | |
exten => _+58!,3,Macro(dial-out,Venezuela) | |
exten => _+590!,3,Macro(dial-out,Guadeloupe) | |
exten => _+591!,3,Macro(dial-out,Bolivien) | |
exten => _+592!,3,Macro(dial-out,Guyana) | |
exten => _+593!,3,Macro(dial-out,Ecuador) | |
exten => _+594!,3,Macro(dial-out,Französisch-Guayana) | |
exten => _+595!,3,Macro(dial-out,Paraguay) | |
exten => _+596!,3,Macro(dial-out,Martinique) | |
exten => _+597!,3,Macro(dial-out,Suriname) | |
exten => _+598!,3,Macro(dial-out,Uruguay) | |
exten => _+599!,3,Macro(dial-out,Niederländische Antillen) | |
exten => _+60!,3,Macro(dial-out,Malaysia) | |
exten => _+61!,3,Macro(dial-out,Australien) | |
exten => _+62!,3,Macro(dial-out,Indonesien) | |
exten => _+63!,3,Macro(dial-out,Philippinen) | |
exten => _+64!,3,Macro(dial-out,Neuseeland) | |
exten => _+649!,3,Macro(dial-out,Pitcairninseln) | |
exten => _+65!,3,Macro(dial-out,Singapur) | |
exten => _+66!,3,Macro(dial-out,Thailand) | |
exten => _+670!,3,Macro(dial-out,Osttimor) | |
exten => _+672!,3,Macro(dial-out,Australische Außengebiete Antarktis und Norfolkinsel) | |
exten => _+673!,3,Macro(dial-out,Brunei) | |
exten => _+674!,3,Macro(dial-out,Nauru) | |
exten => _+675!,3,Macro(dial-out,Papua-Neuguinea) | |
exten => _+676!,3,Macro(dial-out,Tonga) | |
exten => _+677!,3,Macro(dial-out,Salomonen) | |
exten => _+678!,3,Macro(dial-out,Vanuatu) | |
exten => _+679!,3,Macro(dial-out,Fidschi) | |
exten => _+680!,3,Macro(dial-out,Palau) | |
exten => _+681!,3,Macro(dial-out,Wallis und Futuna) | |
exten => _+682!,3,Macro(dial-out,Cookinseln) | |
exten => _+683!,3,Macro(dial-out,Niue) | |
exten => _+685!,3,Macro(dial-out,Samoa) | |
exten => _+686!,3,Macro(dial-out,Kiribati und Gilbertinseln) | |
exten => _+687!,3,Macro(dial-out,Neukaledonien) | |
exten => _+688!,3,Macro(dial-out,Tuvalu und Elliceinseln) | |
exten => _+689!,3,Macro(dial-out,Französisch-Polynesien) | |
exten => _+690!,3,Macro(dial-out,Tokelau) | |
exten => _+691!,3,Macro(dial-out,Mikronesien) | |
exten => _+692!,3,Macro(dial-out,Marshallinseln) | |
exten => _+7!,3,Macro(dial-out,Russland und Kasachstan) | |
exten => _+800!,3,Macro(dial-out,internationale Free-Phone-Dienste) | |
exten => _+808!,3,Macro(dial-out,internationale Shared-Cost-Dienste) | |
exten => _+81!,3,Macro(dial-out,Japan) | |
exten => _+82!,3,Macro(dial-out,Republik Südkorea) | |
exten => _+84!,3,Macro(dial-out,Vietnam) | |
exten => _+850!,3,Macro(dial-out,Demokratische Volksrepublik Nordkorea) | |
exten => _+852!,3,Macro(dial-out,Hongkong) | |
exten => _+853!,3,Macro(dial-out,Macao) | |
exten => _+855!,3,Macro(dial-out,Kambodscha) | |
exten => _+856!,3,Macro(dial-out,Laos) | |
exten => _+86!,3,Macro(dial-out,China) | |
exten => _+870!,3,Macro(dial-out,Inmarsat S N A C) | |
exten => _+871!,3,Macro(dial-out,Inmarsat Atlantik Ost) | |
exten => _+872!,3,Macro(dial-out,Inmarsat Pazifik) | |
exten => _+873!,3,Macro(dial-out,Inmarsat Indischer Ozean) | |
exten => _+874!,3,Macro(dial-out,Inmarsat Atlantik West) | |
exten => _+875!,3,Macro(dial-out,maritime Mobiltelefone) | |
exten => _+876!,3,Macro(dial-out,maritime Mobiltelefone) | |
exten => _+877!,3,Macro(dial-out,maritime Mobiltelefone) | |
exten => _+878!,3,Macro(dial-out,persönliche Rufnummerndienste) | |
exten => _+87810!,3,Macro(dial-out,VISIONng ENUM) | |
exten => _+879!,3,Macro(dial-out,nationale mobile beziehungsweise maritime Telefone) | |
exten => _+880!,3,Macro(dial-out,Bangladesch) | |
exten => _+881!,3,Macro(dial-out,globale mobile Satellitensysteme) | |
exten => _+882!,3,Macro(dial-out,internationale Netzwerke) | |
exten => _+883!,3,Macro(dial-out,internationale Netzwerke) | |
exten => _+886!,3,Macro(dial-out,Taiwan) | |
exten => _+90!,3,Macro(dial-out,Türkei und Türkische Republik Nordzypern) | |
exten => _+91!,3,Macro(dial-out,Indien) | |
exten => _+92!,3,Macro(dial-out,Pakistan) | |
exten => _+93!,3,Macro(dial-out,Afghanistan) | |
exten => _+94!,3,Macro(dial-out,Sri Lanka) | |
exten => _+95!,3,Macro(dial-out,Myanmar) | |
exten => _+960!,3,Macro(dial-out,Malediven) | |
exten => _+961!,3,Macro(dial-out,Libanon) | |
exten => _+962!,3,Macro(dial-out,Jordanien) | |
exten => _+963!,3,Macro(dial-out,Syrien) | |
exten => _+964!,3,Macro(dial-out,Irak) | |
exten => _+965!,3,Macro(dial-out,Kuwait) | |
exten => _+966!,3,Macro(dial-out,Saudi-Arabien) | |
exten => _+967!,3,Macro(dial-out,Jemen) | |
exten => _+968!,3,Macro(dial-out,Oman) | |
exten => _+970!,3,Macro(dial-out,Palästinensische Autonomiegebiete) | |
exten => _+971!,3,Macro(dial-out,Vereinigte Arabische Emirate) | |
exten => _+972!,3,Macro(dial-out,Israel) | |
exten => _+973!,3,Macro(dial-out,Bahrain) | |
exten => _+974!,3,Macro(dial-out,Katar) | |
exten => _+975!,3,Macro(dial-out,Bhutan) | |
exten => _+976!,3,Macro(dial-out,Mongolei) | |
exten => _+977!,3,Macro(dial-out,Nepal) | |
exten => _+979!,3,Macro(dial-out,internationale Premium-Rate-Dienste) | |
exten => _+98!,3,Macro(dial-out,Iran) | |
exten => _+991!,3,Macro(dial-out,I T P C S) | |
exten => _+991001!,3,Macro(dial-out,Neustar ENUM) | |
exten => _+992!,3,Macro(dial-out,Tadschikistan) | |
exten => _+993!,3,Macro(dial-out,Turkmenistan) | |
exten => _+994!,3,Macro(dial-out,Aserbaidschan) | |
exten => _+995!,3,Macro(dial-out,Georgien) | |
exten => _+996!,3,Macro(dial-out,Kirgisistan) | |
exten => _+998!,3,Macro(dial-out,Usbekistan) | |
exten => _${BRANCH_2_ID}!,3,Macro(dial-in,2,) | |
exten => _${BRANCH_4_ID}!,3,Macro(dial-in,4,) | |
exten => _${BRANCH_5_ID}!,3,Macro(dial-in,5,) | |
exten => _${BRANCH_6_ID}!,3,Macro(dial-in,6,) | |
exten => _${BRANCH_8_ID}!,3,Macro(dial-in,8,) | |
exten => _+43522357512!,3,Macro(dial-in,8,12) | |
exten => _+436763778108!,3,Macro(dial-in,4,13) | |
exten => _+436763778109!,3,Macro(dial-in,2,13) | |
exten => _+43676842968200!,3,Macro(dial-in,2,15) | |
exten => _+43676842968400!,3,Macro(dial-in,4,15) | |
exten => _+.,3,Talk(Unbekannte Landesvorwahl. Stellen Sie sicher dass die Nummer stimmt und Sie beim Wählen keine zusätzliche Null angegeben haben.,p) | |
exten => _+.,4,Goto(i,return) | |
exten => _00.,1,Goto(+${FILTER(0123456789,${EXTEN:2})},2) | |
exten => _0.,1,Goto(+43${FILTER(0123456789,${EXTEN:1})},2) | |
[extensions] ; Alle wählbaren internen Nummern. | |
exten => 00,1,Macro(program-timer) | |
exten => 00,n,Goto(program,${IF(${DB_EXISTS(Program/Current)}?${DB_RESULT}:${MACRO_RESULT})},1) | |
exten => i,1,Congestion(3) | |
[stdexten] ; Ruft einen Benutzer an oder hinterlässt ihm eine Nachricht und legt dann auf. | |
exten => s,1,Set(DIALSTATUS=DONTCALL) | |
exten => s,n,Set(VMSTATUS=FAILED) | |
exten => s,n,GotoIf(${ISFAXCHANNEL}?fax,2) | |
exten => s,n,Answer() | |
exten => s,n,Ringing() | |
exten => s,n,GotoIf(${DB_EXISTS(User/${DIALUSER}/DND)}?vm) | |
exten => s,n,Macro(set-bridged) | |
exten => s,n,Set(_PICKUPMARK=${DIALUSER}) | |
exten => s,n,Dial(${DIALTECH},${IF(${DB_EXISTS(User/${DIALUSER}/Timeout)}?${DB_RESULT}:20)},irktM(set-user-bridge^${QUOTE(${CALLERID(all)})})) | |
exten => s,n,Set(_PICKUPMARK=) | |
exten => s,n(vm),VoiceMail(${SIPPEER(${DIALUSER},mailbox)},${IF($["${DIALSTATUS}"="BUSY"]?b:u)}s) | |
exten => s,n,Hangup() | |
exten => a,1,Hangup() | |
exten => o,1,UserEvent(Operator,Extension: ${DIALUSER},From: ${CALLERID(all)}) | |
exten => o,n,GotoIf(${ISNULL(${DB(User/${DIALUSER}/DND)})}?extensions,00,1) | |
exten => o,n,GotoIf($[${LEN(${DB_RESULT})}>1]?extensions,${DB_RESULT},1) | |
exten => o,n,Goto(program,${DB_RESULT},1) | |
exten => h,1,UserEvent(Call,Extension: ${DIALUSER},From: ${CALLERID(all)},Status: ${DIALSTATUS}) | |
exten => h,n,GotoIf($["${DIALSTATUS}"="ANSWER"||"${VMSTATUS}"!="FAILED"]?+2) | |
exten => h,n,System(echo ${QUOTE(Sie haben einen Anruf von ${CALLERID(all)} ${STRFTIME(,,am %d.%m.%Y um %H:%M:%S)} verpasst.)} | mailx -s ${QUOTE(${SMS_PIN})} ${QUOTE(${SMS_PREFIX}${BRANCH}${DIALUSER}@sms.t-mobile.at)}) | |
exten => fax,1,Set(ISFAXCHANNEL=1) | |
exten => fax,2,Set(FAXEXTEN=${DIALUSER}) | |
exten => fax,n,Macro(fax,${SIPPEER(${DIALUSER},callerid_name)}@${FAX_DOMAIN},${SIPPEER(${DIALUSER},callerid_name)}) | |
[program] ; Führt das angegebene Programm aus und legt dann auf. | |
exten => _X,1,Set(_PROGRAM=${EXTEN}) | |
exten => _X,n,GotoIf(${ISFAXCHANNEL}?fax,2) | |
exten => _X,n,Answer() | |
exten => _X,n,Ringing() | |
exten => _X,n,GotoIf(${DB_EXISTS(Program/${EXTEN}/Queue)}?:message) | |
exten => _X,n,Set(EXIT=message) | |
exten => _X,n,Macro(set-bridged) | |
exten => _X,n,Queue(${EXTEN},nrkt,,,60) | |
exten => _X,n(message),Set(HASMESSAGE=${STAT(e,${RECORDINGS}program${EXTEN}.wav)}) | |
exten => _X,n,GotoIf(${HASMESSAGE}?:vm) | |
exten => _X,n,Set(EXIT=vm) | |
exten => _X,n,Background(${RECORDINGS}program${EXTEN},m,,macro-program) | |
exten => _X,n(vm),GotoIf(${DB_EXISTS(Program/${EXTEN}/Mailbox)}?:exit) | |
exten => _X,n,Set(EXIT=exit) | |
exten => _X,n,VoiceMail(${DB_RESULT},${IF(${HASMESSAGE}?:u)}s) | |
exten => _X,n(exit),Hangup() | |
exten => a,1,Hangup() | |
exten => *,1,Goto(s,${EXIT}) | |
exten => fax,1,Set(ISFAXCHANNEL=1) | |
exten => fax,2,GotoIf(${DB_EXISTS(Program/${PROGRAM}/Mailbox)}?:+3) | |
exten => fax,n,Set(DIALUSER=${DB_RESULT}) | |
exten => fax,n,Goto(stdexten,fax,2) | |
exten => fax,n,Set(FAXEXTEN=) | |
exten => fax,n,Macro(fax,${BRANCH_${BRANCH}_MAIL},${BRANCH_${BRANCH}_NAME}) | |
[hints] ; Alle subscribefähigen Nummern. (Patterns werden ab 1.6.1 unterstützt.) | |
include => extensions | |
exten => *12*1,hint,Custom:Program1 | |
exten => *12*2,hint,Custom:Program2 | |
exten => *12*3,hint,Custom:Program3 | |
exten => *12*4,hint,Custom:Program4 | |
exten => *12*5,hint,Custom:Program5 | |
exten => *12*6,hint,Custom:Program6 | |
exten => *12*7,hint,Custom:Program7 | |
exten => *12*8,hint,Custom:Program8 | |
exten => *12*9,hint,Custom:Program9 | |
exten => 200,hint,Custom:200 | |
exten => 201,hint,Custom:201 | |
exten => 202,hint,Custom:202 | |
exten => 203,hint,Custom:203 | |
exten => 204,hint,Custom:204 | |
exten => 205,hint,Custom:205 | |
exten => 206,hint,Custom:206 | |
exten => 207,hint,Custom:207 | |
exten => 208,hint,Custom:208 | |
exten => 209,hint,Custom:209 | |
exten => 210,hint,Custom:210 | |
exten => 211,hint,Custom:211 | |
exten => 212,hint,Custom:212 | |
exten => 213,hint,Custom:213 | |
exten => 214,hint,Custom:214 | |
exten => 215,hint,Custom:215 | |
exten => 216,hint,Custom:216 | |
exten => 217,hint,Custom:217 | |
exten => 218,hint,Custom:218 | |
exten => 219,hint,Custom:219 | |
exten => 220,hint,Custom:220 | |
exten => 221,hint,Custom:221 | |
exten => 222,hint,Custom:222 | |
exten => 223,hint,Custom:223 | |
exten => 224,hint,Custom:224 | |
exten => 225,hint,Custom:225 | |
exten => 226,hint,Custom:226 | |
exten => 227,hint,Custom:227 | |
exten => 228,hint,Custom:228 | |
exten => 229,hint,Custom:229 | |
exten => 230,hint,Custom:230 | |
exten => 231,hint,Custom:231 | |
exten => 232,hint,Custom:232 | |
exten => 233,hint,Custom:233 | |
exten => 234,hint,Custom:234 | |
exten => 235,hint,Custom:235 | |
exten => 236,hint,Custom:236 | |
exten => 237,hint,Custom:237 | |
exten => 238,hint,Custom:238 | |
exten => 239,hint,Custom:239 | |
exten => 240,hint,Custom:240 | |
exten => 241,hint,Custom:241 | |
exten => 242,hint,Custom:242 | |
exten => 243,hint,Custom:243 | |
exten => 244,hint,Custom:244 | |
exten => 245,hint,Custom:245 | |
exten => 246,hint,Custom:246 | |
exten => 247,hint,Custom:247 | |
exten => 248,hint,Custom:248 | |
exten => 249,hint,Custom:249 | |
exten => 250,hint,Custom:250 | |
exten => 251,hint,Custom:251 | |
exten => 252,hint,Custom:252 | |
exten => 253,hint,Custom:253 | |
exten => 254,hint,Custom:254 | |
exten => 255,hint,Custom:255 | |
exten => 256,hint,Custom:256 | |
exten => 257,hint,Custom:257 | |
exten => 258,hint,Custom:258 | |
exten => 259,hint,Custom:259 | |
exten => 260,hint,Custom:260 | |
exten => 261,hint,Custom:261 | |
exten => 262,hint,Custom:262 | |
exten => 263,hint,Custom:263 | |
exten => 264,hint,Custom:264 | |
exten => 265,hint,Custom:265 | |
exten => 266,hint,Custom:266 | |
exten => 267,hint,Custom:267 | |
exten => 268,hint,Custom:268 | |
exten => 269,hint,Custom:269 | |
exten => 270,hint,Custom:270 | |
exten => 271,hint,Custom:271 | |
exten => 272,hint,Custom:272 | |
exten => 273,hint,Custom:273 | |
exten => 274,hint,Custom:274 | |
exten => 275,hint,Custom:275 | |
exten => 276,hint,Custom:276 | |
exten => 277,hint,Custom:277 | |
exten => 278,hint,Custom:278 | |
exten => 279,hint,Custom:279 | |
exten => 280,hint,Custom:280 | |
exten => 281,hint,Custom:281 | |
exten => 282,hint,Custom:282 | |
exten => 283,hint,Custom:283 | |
exten => 284,hint,Custom:284 | |
exten => 285,hint,Custom:285 | |
exten => 286,hint,Custom:286 | |
exten => 287,hint,Custom:287 | |
exten => 288,hint,Custom:288 | |
exten => 289,hint,Custom:289 | |
exten => 290,hint,Custom:290 | |
exten => 291,hint,Custom:291 | |
exten => 292,hint,Custom:292 | |
exten => 293,hint,Custom:293 | |
exten => 294,hint,Custom:294 | |
exten => 295,hint,Custom:295 | |
exten => 296,hint,Custom:296 | |
exten => 297,hint,Custom:297 | |
exten => 298,hint,Custom:298 | |
exten => 299,hint,Custom:299 | |
exten => 400,hint,Custom:400 | |
exten => 401,hint,Custom:401 | |
exten => 402,hint,Custom:402 | |
exten => 403,hint,Custom:403 | |
exten => 404,hint,Custom:404 | |
exten => 405,hint,Custom:405 | |
exten => 406,hint,Custom:406 | |
exten => 407,hint,Custom:407 | |
exten => 408,hint,Custom:408 | |
exten => 409,hint,Custom:409 | |
exten => 410,hint,Custom:410 | |
exten => 411,hint,Custom:411 | |
exten => 412,hint,Custom:412 | |
exten => 413,hint,Custom:413 | |
exten => 414,hint,Custom:414 | |
exten => 415,hint,Custom:415 | |
exten => 416,hint,Custom:416 | |
exten => 417,hint,Custom:417 | |
exten => 418,hint,Custom:418 | |
exten => 419,hint,Custom:419 | |
exten => 420,hint,Custom:420 | |
exten => 421,hint,Custom:421 | |
exten => 422,hint,Custom:422 | |
exten => 423,hint,Custom:423 | |
exten => 424,hint,Custom:424 | |
exten => 425,hint,Custom:425 | |
exten => 426,hint,Custom:426 | |
exten => 427,hint,Custom:427 | |
exten => 428,hint,Custom:428 | |
exten => 429,hint,Custom:429 | |
exten => 430,hint,Custom:430 | |
exten => 431,hint,Custom:431 | |
exten => 432,hint,Custom:432 | |
exten => 433,hint,Custom:433 | |
exten => 434,hint,Custom:434 | |
exten => 435,hint,Custom:435 | |
exten => 436,hint,Custom:436 | |
exten => 437,hint,Custom:437 | |
exten => 438,hint,Custom:438 | |
exten => 439,hint,Custom:439 | |
exten => 440,hint,Custom:440 | |
exten => 441,hint,Custom:441 | |
exten => 442,hint,Custom:442 | |
exten => 443,hint,Custom:443 | |
exten => 444,hint,Custom:444 | |
exten => 445,hint,Custom:445 | |
exten => 446,hint,Custom:446 | |
exten => 447,hint,Custom:447 | |
exten => 448,hint,Custom:448 | |
exten => 449,hint,Custom:449 | |
exten => 450,hint,Custom:450 | |
exten => 451,hint,Custom:451 | |
exten => 452,hint,Custom:452 | |
exten => 453,hint,Custom:453 | |
exten => 454,hint,Custom:454 | |
exten => 455,hint,Custom:455 | |
exten => 456,hint,Custom:456 | |
exten => 457,hint,Custom:457 | |
exten => 458,hint,Custom:458 | |
exten => 459,hint,Custom:459 | |
exten => 460,hint,Custom:460 | |
exten => 461,hint,Custom:461 | |
exten => 462,hint,Custom:462 | |
exten => 463,hint,Custom:463 | |
exten => 464,hint,Custom:464 | |
exten => 465,hint,Custom:465 | |
exten => 466,hint,Custom:466 | |
exten => 467,hint,Custom:467 | |
exten => 468,hint,Custom:468 | |
exten => 469,hint,Custom:469 | |
exten => 470,hint,Custom:470 | |
exten => 471,hint,Custom:471 | |
exten => 472,hint,Custom:472 | |
exten => 473,hint,Custom:473 | |
exten => 474,hint,Custom:474 | |
exten => 475,hint,Custom:475 | |
exten => 476,hint,Custom:476 | |
exten => 477,hint,Custom:477 | |
exten => 478,hint,Custom:478 | |
exten => 479,hint,Custom:479 | |
exten => 480,hint,Custom:480 | |
exten => 481,hint,Custom:481 | |
exten => 482,hint,Custom:482 | |
exten => 483,hint,Custom:483 | |
exten => 484,hint,Custom:484 | |
exten => 485,hint,Custom:485 | |
exten => 486,hint,Custom:486 | |
exten => 487,hint,Custom:487 | |
exten => 488,hint,Custom:488 | |
exten => 489,hint,Custom:489 | |
exten => 490,hint,Custom:490 | |
exten => 491,hint,Custom:491 | |
exten => 492,hint,Custom:492 | |
exten => 493,hint,Custom:493 | |
exten => 494,hint,Custom:494 | |
exten => 495,hint,Custom:495 | |
exten => 496,hint,Custom:496 | |
exten => 497,hint,Custom:497 | |
exten => 498,hint,Custom:498 | |
exten => 499,hint,Custom:499 | |
exten => 500,hint,Custom:500 | |
exten => 501,hint,Custom:501 | |
exten => 502,hint,Custom:502 | |
exten => 503,hint,Custom:503 | |
exten => 504,hint,Custom:504 | |
exten => 505,hint,Custom:505 | |
exten => 506,hint,Custom:506 | |
exten => 507,hint,Custom:507 | |
exten => 508,hint,Custom:508 | |
exten => 509,hint,Custom:509 | |
exten => 510,hint,Custom:510 | |
exten => 511,hint,Custom:511 | |
exten => 512,hint,Custom:512 | |
exten => 513,hint,Custom:513 | |
exten => 514,hint,Custom:514 | |
exten => 515,hint,Custom:515 | |
exten => 516,hint,Custom:516 | |
exten => 517,hint,Custom:517 | |
exten => 518,hint,Custom:518 | |
exten => 519,hint,Custom:519 | |
exten => 520,hint,Custom:520 | |
exten => 521,hint,Custom:521 | |
exten => 522,hint,Custom:522 | |
exten => 523,hint,Custom:523 | |
exten => 524,hint,Custom:524 | |
exten => 525,hint,Custom:525 | |
exten => 526,hint,Custom:526 | |
exten => 527,hint,Custom:527 | |
exten => 528,hint,Custom:528 | |
exten => 529,hint,Custom:529 | |
exten => 530,hint,Custom:530 | |
exten => 531,hint,Custom:531 | |
exten => 532,hint,Custom:532 | |
exten => 533,hint,Custom:533 | |
exten => 534,hint,Custom:534 | |
exten => 535,hint,Custom:535 | |
exten => 536,hint,Custom:536 | |
exten => 537,hint,Custom:537 | |
exten => 538,hint,Custom:538 | |
exten => 539,hint,Custom:539 | |
exten => 540,hint,Custom:540 | |
exten => 541,hint,Custom:541 | |
exten => 542,hint,Custom:542 | |
exten => 543,hint,Custom:543 | |
exten => 544,hint,Custom:544 | |
exten => 545,hint,Custom:545 | |
exten => 546,hint,Custom:546 | |
exten => 547,hint,Custom:547 | |
exten => 548,hint,Custom:548 | |
exten => 549,hint,Custom:549 | |
exten => 550,hint,Custom:550 | |
exten => 551,hint,Custom:551 | |
exten => 552,hint,Custom:552 | |
exten => 553,hint,Custom:553 | |
exten => 554,hint,Custom:554 | |
exten => 555,hint,Custom:555 | |
exten => 556,hint,Custom:556 | |
exten => 557,hint,Custom:557 | |
exten => 558,hint,Custom:558 | |
exten => 559,hint,Custom:559 | |
exten => 560,hint,Custom:560 | |
exten => 561,hint,Custom:561 | |
exten => 562,hint,Custom:562 | |
exten => 563,hint,Custom:563 | |
exten => 564,hint,Custom:564 | |
exten => 565,hint,Custom:565 | |
exten => 566,hint,Custom:566 | |
exten => 567,hint,Custom:567 | |
exten => 568,hint,Custom:568 | |
exten => 569,hint,Custom:569 | |
exten => 570,hint,Custom:570 | |
exten => 571,hint,Custom:571 | |
exten => 572,hint,Custom:572 | |
exten => 573,hint,Custom:573 | |
exten => 574,hint,Custom:574 | |
exten => 575,hint,Custom:575 | |
exten => 576,hint,Custom:576 | |
exten => 577,hint,Custom:577 | |
exten => 578,hint,Custom:578 | |
exten => 579,hint,Custom:579 | |
exten => 580,hint,Custom:580 | |
exten => 581,hint,Custom:581 | |
exten => 582,hint,Custom:582 | |
exten => 583,hint,Custom:583 | |
exten => 584,hint,Custom:584 | |
exten => 585,hint,Custom:585 | |
exten => 586,hint,Custom:586 | |
exten => 587,hint,Custom:587 | |
exten => 588,hint,Custom:588 | |
exten => 589,hint,Custom:589 | |
exten => 590,hint,Custom:590 | |
exten => 591,hint,Custom:591 | |
exten => 592,hint,Custom:592 | |
exten => 593,hint,Custom:593 | |
exten => 594,hint,Custom:594 | |
exten => 595,hint,Custom:595 | |
exten => 596,hint,Custom:596 | |
exten => 597,hint,Custom:597 | |
exten => 598,hint,Custom:598 | |
exten => 599,hint,Custom:599 | |
exten => 600,hint,Custom:600 | |
exten => 601,hint,Custom:601 | |
exten => 602,hint,Custom:602 | |
exten => 603,hint,Custom:603 | |
exten => 604,hint,Custom:604 | |
exten => 605,hint,Custom:605 | |
exten => 606,hint,Custom:606 | |
exten => 607,hint,Custom:607 | |
exten => 608,hint,Custom:608 | |
exten => 609,hint,Custom:609 | |
exten => 610,hint,Custom:610 | |
exten => 611,hint,Custom:611 | |
exten => 612,hint,Custom:612 | |
exten => 613,hint,Custom:613 | |
exten => 614,hint,Custom:614 | |
exten => 615,hint,Custom:615 | |
exten => 616,hint,Custom:616 | |
exten => 617,hint,Custom:617 | |
exten => 618,hint,Custom:618 | |
exten => 619,hint,Custom:619 | |
exten => 620,hint,Custom:620 | |
exten => 621,hint,Custom:621 | |
exten => 622,hint,Custom:622 | |
exten => 623,hint,Custom:623 | |
exten => 624,hint,Custom:624 | |
exten => 625,hint,Custom:625 | |
exten => 626,hint,Custom:626 | |
exten => 627,hint,Custom:627 | |
exten => 628,hint,Custom:628 | |
exten => 629,hint,Custom:629 | |
exten => 630,hint,Custom:630 | |
exten => 631,hint,Custom:631 | |
exten => 632,hint,Custom:632 | |
exten => 633,hint,Custom:633 | |
exten => 634,hint,Custom:634 | |
exten => 635,hint,Custom:635 | |
exten => 636,hint,Custom:636 | |
exten => 637,hint,Custom:637 | |
exten => 638,hint,Custom:638 | |
exten => 639,hint,Custom:639 | |
exten => 640,hint,Custom:640 | |
exten => 641,hint,Custom:641 | |
exten => 642,hint,Custom:642 | |
exten => 643,hint,Custom:643 | |
exten => 644,hint,Custom:644 | |
exten => 645,hint,Custom:645 | |
exten => 646,hint,Custom:646 | |
exten => 647,hint,Custom:647 | |
exten => 648,hint,Custom:648 | |
exten => 649,hint,Custom:649 | |
exten => 650,hint,Custom:650 | |
exten => 651,hint,Custom:651 | |
exten => 652,hint,Custom:652 | |
exten => 653,hint,Custom:653 | |
exten => 654,hint,Custom:654 | |
exten => 655,hint,Custom:655 | |
exten => 656,hint,Custom:656 | |
exten => 657,hint,Custom:657 | |
exten => 658,hint,Custom:658 | |
exten => 659,hint,Custom:659 | |
exten => 660,hint,Custom:660 | |
exten => 661,hint,Custom:661 | |
exten => 662,hint,Custom:662 | |
exten => 663,hint,Custom:663 | |
exten => 664,hint,Custom:664 | |
exten => 665,hint,Custom:665 | |
exten => 666,hint,Custom:666 | |
exten => 667,hint,Custom:667 | |
exten => 668,hint,Custom:668 | |
exten => 669,hint,Custom:669 | |
exten => 670,hint,Custom:670 | |
exten => 671,hint,Custom:671 | |
exten => 672,hint,Custom:672 | |
exten => 673,hint,Custom:673 | |
exten => 674,hint,Custom:674 | |
exten => 675,hint,Custom:675 | |
exten => 676,hint,Custom:676 | |
exten => 677,hint,Custom:677 | |
exten => 678,hint,Custom:678 | |
exten => 679,hint,Custom:679 | |
exten => 680,hint,Custom:680 | |
exten => 681,hint,Custom:681 | |
exten => 682,hint,Custom:682 | |
exten => 683,hint,Custom:683 | |
exten => 684,hint,Custom:684 | |
exten => 685,hint,Custom:685 | |
exten => 686,hint,Custom:686 | |
exten => 687,hint,Custom:687 | |
exten => 688,hint,Custom:688 | |
exten => 689,hint,Custom:689 | |
exten => 690,hint,Custom:690 | |
exten => 691,hint,Custom:691 | |
exten => 692,hint,Custom:692 | |
exten => 693,hint,Custom:693 | |
exten => 694,hint,Custom:694 | |
exten => 695,hint,Custom:695 | |
exten => 696,hint,Custom:696 | |
exten => 697,hint,Custom:697 | |
exten => 698,hint,Custom:698 | |
exten => 699,hint,Custom:699 | |
exten => 800,hint,Custom:800 | |
exten => 801,hint,Custom:801 | |
exten => 802,hint,Custom:802 | |
exten => 803,hint,Custom:803 | |
exten => 804,hint,Custom:804 | |
exten => 805,hint,Custom:805 | |
exten => 806,hint,Custom:806 | |
exten => 807,hint,Custom:807 | |
exten => 808,hint,Custom:808 | |
exten => 809,hint,Custom:809 | |
exten => 810,hint,Custom:810 | |
exten => 811,hint,Custom:811 | |
exten => 812,hint,Custom:812 | |
exten => 813,hint,Custom:813 | |
exten => 814,hint,Custom:814 | |
exten => 815,hint,Custom:815 | |
exten => 816,hint,Custom:816 | |
exten => 817,hint,Custom:817 | |
exten => 818,hint,Custom:818 | |
exten => 819,hint,Custom:819 | |
exten => 820,hint,Custom:820 | |
exten => 821,hint,Custom:821 | |
exten => 822,hint,Custom:822 | |
exten => 823,hint,Custom:823 | |
exten => 824,hint,Custom:824 | |
exten => 825,hint,Custom:825 | |
exten => 826,hint,Custom:826 | |
exten => 827,hint,Custom:827 | |
exten => 828,hint,Custom:828 | |
exten => 829,hint,Custom:829 | |
exten => 830,hint,Custom:830 | |
exten => 831,hint,Custom:831 | |
exten => 832,hint,Custom:832 | |
exten => 833,hint,Custom:833 | |
exten => 834,hint,Custom:834 | |
exten => 835,hint,Custom:835 | |
exten => 836,hint,Custom:836 | |
exten => 837,hint,Custom:837 | |
exten => 838,hint,Custom:838 | |
exten => 839,hint,Custom:839 | |
exten => 840,hint,Custom:840 | |
exten => 841,hint,Custom:841 | |
exten => 842,hint,Custom:842 | |
exten => 843,hint,Custom:843 | |
exten => 844,hint,Custom:844 | |
exten => 845,hint,Custom:845 | |
exten => 846,hint,Custom:846 | |
exten => 847,hint,Custom:847 | |
exten => 848,hint,Custom:848 | |
exten => 849,hint,Custom:849 | |
exten => 850,hint,Custom:850 | |
exten => 851,hint,Custom:851 | |
exten => 852,hint,Custom:852 | |
exten => 853,hint,Custom:853 | |
exten => 854,hint,Custom:854 | |
exten => 855,hint,Custom:855 | |
exten => 856,hint,Custom:856 | |
exten => 857,hint,Custom:857 | |
exten => 858,hint,Custom:858 | |
exten => 859,hint,Custom:859 | |
exten => 860,hint,Custom:860 | |
exten => 861,hint,Custom:861 | |
exten => 862,hint,Custom:862 | |
exten => 863,hint,Custom:863 | |
exten => 864,hint,Custom:864 | |
exten => 865,hint,Custom:865 | |
exten => 866,hint,Custom:866 | |
exten => 867,hint,Custom:867 | |
exten => 868,hint,Custom:868 | |
exten => 869,hint,Custom:869 | |
exten => 870,hint,Custom:870 | |
exten => 871,hint,Custom:871 | |
exten => 872,hint,Custom:872 | |
exten => 873,hint,Custom:873 | |
exten => 874,hint,Custom:874 | |
exten => 875,hint,Custom:875 | |
exten => 876,hint,Custom:876 | |
exten => 877,hint,Custom:877 | |
exten => 878,hint,Custom:878 | |
exten => 879,hint,Custom:879 | |
exten => 880,hint,Custom:880 | |
exten => 881,hint,Custom:881 | |
exten => 882,hint,Custom:882 | |
exten => 883,hint,Custom:883 | |
exten => 884,hint,Custom:884 | |
exten => 885,hint,Custom:885 | |
exten => 886,hint,Custom:886 | |
exten => 887,hint,Custom:887 | |
exten => 888,hint,Custom:888 | |
exten => 889,hint,Custom:889 | |
exten => 890,hint,Custom:890 | |
exten => 891,hint,Custom:891 | |
exten => 892,hint,Custom:892 | |
exten => 893,hint,Custom:893 | |
exten => 894,hint,Custom:894 | |
exten => 895,hint,Custom:895 | |
exten => 896,hint,Custom:896 | |
exten => 897,hint,Custom:897 | |
exten => 898,hint,Custom:898 | |
exten => 899,hint,Custom:899 | |
[transfer] ; Gültige Blindtransfer-Ziele. | |
include => extensions | |
include => faxes | |
exten => i,1,Goto(00,1) | |
[extern] ; Gültige Ziele für eingehende Anrufe. | |
exten => s,1,Goto(0${BRANCH},1) | |
exten => _X,1,Goto(00,1) | |
exten => 01,1,Macro(set-external) | |
exten => 01,n,Macro(voicemailmain) | |
exten => _0[24568],1,Set(CALLBACK=${FILTER(+0123456789,${CALLERID(num):0:1})}${FILTER(0123456789,${CALLERID(num):1})}) | |
exten => _0[24568],n,GotoIf(${ISNULL(${CALLBACK})}?${EXTEN:1}00,1) | |
exten => _0[24568],n,Set(CALLBACK=${IF($["${CALLBACK:0:3}"="+43"]?0${CALLBACK:3}:${IF($["${CALLBACK:0:1}"="+"]?00${CALLBACK:1}:${CALLBACK})})}) | |
exten => _0[24568],n,Macro(callback-number,${CALLBACK},${EXTEN:1}) | |
exten => _0[24568],n,Goto(${MACRO_RESULT},1) | |
exten => 09,1,Macro(set-external) | |
exten => 09,n,Macro(dial-as) | |
exten => _XX,1,Macro(set-external) | |
exten => _XX,n,Goto(transfer,${EXTEN},1) | |
exten => _1XX,1,Macro(set-external) | |
exten => _1XX,n,Macro(voicemail,${EXTEN:1}) | |
exten => _[24568]XX,1,GotoIf($[${EXTEN:0:1}=${BRANCH}]?${EXTEN:1},1) | |
exten => _[24568]XX,2,Macro(set-external) | |
exten => _[24568]XX,3,Dial(IAX2/${EXTEN:0:1}/${EXTEN:1}:transfer) | |
exten => _[24568]XX,4,Hangup() | |
exten => _XXX,1,Goto(00,1) | |
[local] ; Alle lokale direkten Anrufziele. | |
include => extensions | |
exten => 10,1,MeetMe(10,coIMs) | |
include => parkedcalls | |
exten => i,1,Playback(pbx-invalid) | |
exten => i,n,Congestion() | |
[pickup] ; Alle lokal stellvertretend annehmbaren Anrufziele. | |
exten => _XX,1,Pickup(${EXTEN}@PICKUPMARK) | |
exten => _XX,n,Hangup() | |
[from-extern-] ; Wird aufgerufen wenn keine Durchwahlziffer angegeben wurde. | |
include => from-extern-x | |
exten => _XXX,1,Goto(extern,${PREFIX}${EXTEN},1) | |
[from-extern-x] ; Wird aufgerufen wenn nur eine Durchwahlziffer angegeben wurde. | |
include => from-extern-xx | |
exten => _XX,1,Goto(extern,${PREFIX}${EXTEN},1) | |
[from-extern-xx] ; Wird aufgerufen wenn zwei Durchwahlziffern angegeben wurden. | |
include => from-extern-xxx | |
exten => _X,1,Goto(extern,${PREFIX}${EXTEN},1) | |
[from-extern-xxx] ; Wird aufgerufen wenn drei Durchwahlziffern angegeben wurden. | |
exten => s,1,GotoIf(${BRANCH_${BRANCH}_DID}?+3) | |
exten => s,n,Answer() | |
exten => s,n,Ringing() | |
exten => s,n,WaitExten(${TIMEOUT(digit)}) | |
exten => s,n,Goto(extern,${PREFIX},1) | |
exten => i,1,Goto(from-extern,i,1) | |
exten => fax,1,GotoIf(${ISFAXCHANNEL}?extern,${PREFIX},1) | |
exten => fax,n,Set(ISFAXCHANNEL=1) | |
exten => fax,n,Macro(did,${PREFIX}) | |
[from-extern] ; Sammelpunkt für einkommende Anrufe an DID-fähigen Endgeräten. | |
exten => s,1,Macro(did,,1) | |
exten => _X,1,Macro(did,${EXTEN},2) | |
exten => _XX,1,Macro(did,${EXTEN},0.5) | |
exten => _XXX,1,Macro(did,${EXTEN},0.25) | |
exten => _XXXX!,1,Goto(i,1) | |
exten => i,1,Answer(1000) | |
exten => i,n,Playback(pbx-invalid) | |
exten => i,n,Hangup() | |
[from-sip] ; Einstiegskontext für alle Gastanrufe mittels SIP. | |
include => extern | |
exten => s,1,Set(SIP_URI=${QUOTE(${SIPCHANINFO(uri)})}) | |
exten => s,n,Set(SIP_URI=${QUOTE(${CUT(SIP_URI,@,1)})}) | |
exten => s,n,Set(SIP_URI=${FILTER(0123456789,${CUT(SIP_URI,:,2)})}) | |
exten => s,n,GotoIf(${ISNULL(${SIP_URI})}?${BRANCH},1:${SIP_URI},1) | |
exten => _[24568]XX,3,Transfer(SIP/${EXTEN:1}@${BRANCH_${EXTEN:0:1}_SERVER}) | |
exten => receiver,1,Goto(0${BRANCH},1) | |
[from-queue] ; Anrufe an ein Warteschlangenmitglied. | |
exten => _XX-Z,1,GotoIf(${DB_EXISTS(User/${EXTEN:0:2}/DND)}?:+3) | |
exten => _XX-Z,n,GotoIf($[${LEN(${DB_RESULT})}>1]?${DB_RESULT}-${EXTEN:3:1},+2) | |
exten => _XX-Z,n,Congestion() | |
exten => _XX-Z,n,Set(PENALTY=0) | |
exten => _XX-Z,n,Set(LOOP_PENALTY=$[${EXTEN:3:1}-1]) | |
exten => _XX-Z,n,While(${LOOP_PENALTY}) | |
exten => _XX-Z,n,Set(LOOP_FOUND_PENALTY=0) | |
exten => _XX-Z,n,Macro(queue-members,${PROGRAM},enum) | |
exten => _XX-Z,n,GotoIf(${LOOP_FOUND_PENALTY}?:+2) | |
exten => _XX-Z,n,Set(PENALTY=$[${PENALTY}+1]) | |
exten => _XX-Z,n,Set(LOOP_PENALTY=$[${LOOP_PENALTY}-1]) | |
exten => _XX-Z,n,EndWhile() | |
exten => _XX-Z,n,Set(_PICKUPMARK=${EXTEN:0:2}) | |
exten => _XX-Z,n,Dial(SIP/${EXTEN:0:2},$[${DB(Program/${PROGRAM}/Queue):${PENALTY}:1}*5],iM(set-user-bridge^${QUOTE(${CALLERID(all)})})) | |
exten => _XX-Z,n,Set(_PICKUPMARK=) | |
exten => _XX-Z,n,Congestion() | |
exten => _XX-Z,n(enum),GotoIf(${DB_EXISTS(User/${QUEUE_EXTEN}/DND)}?:+2) | |
exten => _XX-Z,n,GotoIf($[${LEN(${DB_RESULT})}>1]?:+3) | |
exten => _XX-Z,n,GotoIf($[${QUEUE_PENALTY}!=${LOOP_PENALTY}]?+2) | |
exten => _XX-Z,n,Set(LOOP_FOUND_PENALTY=1) | |
exten => _XX-Z,n,Return() | |
[from-remote] ; Eingehender Kontext für alle zweigstellenübergreifenden Anrufe. | |
exten => _XX:.,1,Goto(${EXTEN:3},${EXTEN:0:2},1) | |
exten => _[24568]XX:.,1,Set(CDR(accountcode)=${EXTEN:0:1}) | |
exten => _[24568]XX:.,n,Macro(dial-string,${FILTER(0123456789,${EXTEN:4})},${EXTEN:0:1},${EXTEN:1:2}) | |
exten => _[24568]XX:.,n,Dial(${MACRO_RESULT}) | |
exten => _[24568]XX:.,n,Hangup() | |
exten => _[24568]:.,1,Set(CDR(accountcode)=${EXTEN:0:1}) | |
exten => _[24568]:.,n,Macro(dial-string,${FILTER(0123456789,${EXTEN:2})},${EXTEN:0:1},) | |
exten => _[24568]:.,n,Dial(${MACRO_RESULT}) | |
exten => _[24568]:.,n,Hangup() | |
[from-transfer] ; Anrufe die transferiert werden sollten. | |
exten => 0,1,Goto(00,1) | |
exten => _XX,1,GotoIf(${ISBRIDGEDCHANNEL}?transfer,${EXTEN},1) | |
exten => _XX,n,Macro(forward-callerid) | |
exten => _XX,n,Goto(extensions,${EXTEN},1) | |
exten => _[24568],1,Goto(${EXTEN}00,1) | |
exten => _[24568]XX,1,GotoIf($[${EXTEN:0:1}=${BRANCH}]?${EXTEN:1},1) | |
exten => _[24568]XX,n,GotoIf(${ISBRIDGEDCHANNEL}?+2) | |
exten => _[24568]XX,n,Macro(forward-callerid) | |
exten => _[24568]XX,n,Dial(IAX2/${EXTEN:0:1}/${EXTEN:1}:${IF(${ISBRIDGEDCHANNEL}?transfer:extensions)}) | |
[from-directory] ; Callbackkontext für das Verzeichnis. | |
exten => _+.,2,NoOp() | |
include => dial | |
exten => i,1,Talk(Diese Nummer kann beziehungsweise darf nicht vom Verzeichnis aus angerufen werden.,p) | |
exten => i,n(return),Return() | |
[from-voicemail] ; Callbackkontext für die Rückruffunktion beim Voicemail. | |
exten => _XX,1,Goto(${BRANCH_${BRANCH}_ID}${EXTEN},1) | |
exten => _+.,2,NoOp() | |
include => dial | |
exten => i,1,Talk(Diese Nummer kann beziehungsweise darf nicht von Voicemail aus zurückgerufen werden.,p) | |
exten => i,n(return),Congestion() | |
[from-originate] ; Kontext für alle stellvertretend hergestellten Verbindungen. | |
exten => _.,1,GotoIf($[${QUOTE(${CHANNEL(channeltype)})}="SIP"]?3) | |
exten => _.,3,Goto(${SIPPEER(${SIPCHANINFO(peername)},context)},,1) | |
[from-device] ; Ausgehender Kontext für alle Geräte in der users.conf. | |
exten => 0,1,Goto(00,1) | |
exten => 1,1,Macro(voicemailmain) | |
exten => _1XX,1,Macro(dial-string,${EXTEN},${BRANCH},) | |
exten => _1XX,n,Dial(${MACRO_RESULT}) | |
exten => _1XX,n,Hangup() | |
exten => 9,1,Macro(dial-as) | |
exten => _[24568],1,Goto(${EXTEN}00,1) | |
exten => _[24568]XX,1,GotoIf($[${EXTEN:0:1}=${BRANCH}]?extensions,${EXTEN:1},1) | |
exten => _[24568]XX,n,Dial(IAX2/${EXTEN:0:1}/${EXTEN:1}:extensions) | |
exten => _[24568]XX,n,Hangup() | |
exten => _XX,1,Goto(extensions,${EXTEN},1) | |
[from-redphone] ; Ausgehender Kontext für alle privilegierten Geräte in users.conf. | |
include => from-device | |
exten => _0043.,1,Macro(dial-string,0${FILTER(0123456789,${EXTEN:4})},${BRANCH},) | |
exten => _0.,1,Macro(dial-string,${FILTER(0123456789,${EXTEN})},${BRANCH},) | |
exten => _0.,n,Dial(${MACRO_RESULT}) | |
exten => _0.,n,Hangup() | |
[from-user] ; Ausgehender Kontext für alle Benutzer in der users.conf. | |
; Dial-As Befehl | |
exten => 9,1,Macro(dial-as) | |
; Firmenverzeichnis | |
exten => 0,1,Macro(set-user) | |
exten => 0,n,Macro(directory) | |
exten => 0,n,Hangup() | |
; Voicemail | |
exten => 1,1,Macro(set-user) | |
exten => 1,n,Macro(voicemailmain) | |
; Notrufe | |
exten => _1XX!,1,Goto(${FILTER(0123456789,${EXTEN})},+1) | |
exten => _1XX!,n,Macro(set-user) | |
exten => _1XX!,n,Macro(dial-out,Notruf- und Informationsdienste) | |
exten => _1XX!,n,Hangup() | |
; Umwandeln von internen in externe Nummern | |
exten => _XX,1,Goto(${BRANCH_${BRANCH}_ID}${EXTEN},1) | |
exten => _[24568],1,Goto(${BRANCH_${EXTEN:0:1}_ID},1) | |
exten => _[24568]XX,1,Goto(${BRANCH_${EXTEN:0:1}_ID}${EXTEN:1:2},1) | |
; Wahl einer beliebiger Nummer | |
exten => _+.,2,Macro(set-user) | |
include => dial | |
; Abfragen globaler Einstellungen | |
exten => *11,1,Macro(program-timer) | |
exten => *11,n,Talk(Momentan ist ${IF(${DB_EXISTS(Program/Current)}?das Programm ${DB_RESULT} aktiviert:die Zeitschaltung aktiviert\, welche auf Programm ${MACRO_RESULT} verweist)}.,p) | |
exten => *11,n,Hangup() | |
exten => _*22*Z,1,GotoIf(${DB_EXISTS(Program/${EXTEN:4:1}/Queue)}?+3) | |
exten => _*22*Z,n,Talk(Die Warteschleife für das Programm ${EXTEN:4:1} ist deaktiviert.,p) | |
exten => _*22*Z,n,Hangup() | |
exten => _*22*Z,n,Talk(Die Warteschleife für das Programm ${EXTEN:4:1} ist aktiviert mit $[${DB_RESULT:0:1}*5]\, $[${DB_RESULT:1:1}*5]\, $[${DB_RESULT:2:1}*5]\, $[${DB_RESULT:3:1}*5]\, $[${DB_RESULT:4:1}*5]\, $[${DB_RESULT:5:1}*5]\, $[${DB_RESULT:6:1}*5]\, $[${DB_RESULT:7:1}*5] und $[${DB_RESULT:8:1}*5] Sekunden Klingeldauer von Position 1 bis 9.,p) | |
exten => _*22*Z,n,Talk(Es folgt eine Aufzählung aller Mitglieder:,p) | |
exten => _*22*Z,n,Macro(queue-members,${EXTEN:4:1},saymember) | |
exten => _*22*Z,n,Talk(Ende der Aufzählung.,p) | |
exten => _*22*Z,n,Hangup() | |
exten => _*22*Z,n(saymember),Talk(Anschluss ${QUEUE_EXTEN}\, ${IF($["${DB(Program/${EXTEN:4:1}/Queue/${QUEUE_EXTEN})}"="${QUEUE_PENALTY}"]?dynamisch:statisch)} an Position ${QUEUE_PENALTY}${IF(${DB_EXISTS(User/${QUEUE_EXTEN}/DND)}?\, jedoch momentan mit aktivierter Nicht Stören ${IF($[${LEN(${DB_RESULT})}>1]?Funktion und Weiterleitung auf Anschluss ${DB_RESULT}:Funktion)})},p) | |
exten => _*22*Z,n,Return() | |
exten => _*33*Z,1,GotoIf(${STAT(e,${RECORDINGS}program${EXTEN:4:1}.wav)}?+3) | |
exten => _*33*Z,n,Talk(Der Ansagetext für das Programm ${EXTEN:4:1} ist deaktiviert.,p) | |
exten => _*33*Z,n,Hangup() | |
exten => _*33*Z,n,Talk(Der Ansagetext für das Programm ${EXTEN:4:1} lautet:,p) | |
exten => _*33*Z,n,Playback(${RECORDINGS}program${EXTEN:4:1}) | |
exten => _*33*Z,n,Hangup() | |
exten => _*44*Z,1,Talk(Die Mailbox für das Programm ${EXTEN:4:1} ist ${IF(${DB_EXISTS(Program/${EXTEN:4:1}/Mailbox)}?gesetzt auf jene des Anschlusses ${DB_RESULT}:deaktiviert)}.,p) | |
exten => _*44*Z,n,Hangup() | |
; Mitgliedschaftsfunktionen für Warteschleifen bei Programmen | |
exten => _*6[678],1,GotoIf(${DB_EXISTS(Program/Current)}?${EXTEN}*${DB_RESULT},1) | |
exten => _*6[678],n,Macro(program-timer) | |
exten => _*6[678],n,Goto(${EXTEN}*${MACRO_RESULT},1) | |
exten => _*6[678]*Z,2,Goto(from-admin,${EXTEN:0:4}${USER}${EXTEN:3:2},verified) | |
; Nichtverfügbarkeitsfunktionen | |
exten => _*7[789],2,Goto(from-admin,${EXTEN}*${USER},verified) | |
; Kurzwahlen | |
exten => _*Z,2,Goto(from-admin,${EXTEN}*${USER},verified) | |
exten => _*Z*,2,Goto(from-admin,${EXTEN}${USER}*,verified) | |
exten => _*Z*.,2,Goto(from-admin,${EXTEN:0:3}${USER}*${FILTER(+*0123456789,${EXTEN:3})},verified) | |
; Besondere Rufnummern | |
exten => _*XXX!,2,Goto(*${FILTER(0123456789,${EXTEN:1})},+1) | |
exten => _*XXX!,n,Macro(set-bridge,"" <${EXTEN}>) | |
exten => _*XXX!,n,Dial(Local/${EXTEN}@extensions/n,,iKTM(set-bridged)) | |
exten => _*XXX!,n,Hangup() | |
; Ausnahmebehandlung bei ungültigen Nummern | |
exten => _*.,1,Macro(set-user) | |
exten => _*.,2,Talk(Der von Ihnen eingegebene Befehl beinhaltet Syntaxfehler\, existiert nicht oder benötigt Verwaltungsrechte.,p) | |
exten => _*.,n,Hangup() | |
exten => _*.,n(verified),Talk(Der Anschluss ${USER} ist für die Ausführung des Befehls nicht berechtigt.,p) | |
exten => _*.,n,Hangup() | |
exten => i,2(return),Hangup() | |
[from-admin] ; Ausgehender Kontext für alle Administratoren in users.conf. | |
; Inkludiere alle Ziele von Benutzern | |
include => from-user | |
; Setzen des aktuellen Programms | |
exten => _*12*Z,1,GotoIf($["${DB(Program/Current)}"!="${EXTEN:4:1}"]?+3) | |
exten => _*12*Z,n,Talk(Das Programm ${EXTEN:4:1} ist bereits aktiv. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*12*Z,n,Hangup() | |
exten => _*12*Z,n,MacroExclusive(set-program,${EXTEN:4:1}) | |
exten => _*12*Z,n,Talk(Das Programm ${EXTEN:4:1} wurde aktiviert.,p) | |
exten => _*12*Z,n,Hangup() | |
exten => *13,1,GotoIf(${DB_EXISTS(Program/Current)}?+3) | |
exten => *13,n,Talk(Die Zeitschaltung ist bereits aktiv. Es wurden keine Änderungen vorgenommen.,p) | |
exten => *13,n,Hangup() | |
exten => *13,n,MacroExclusive(set-program,0) | |
exten => *13,n,Talk(Die Zeitschaltung wurde aktiviert.,p) | |
exten => *13,n,Hangup() | |
; Warteschleifeneinstellung eines bestimmten Programms | |
exten => _*23*Z*ZZZZZZZZZ,1,GotoIf($["${DB(Program/${EXTEN:4:1}/Queue)}"!="${EXTEN:6}"]?+3) | |
exten => _*23*Z*ZZZZZZZZZ,n,Talk(Die Warteschleife für das Programm ${EXTEN:4:1} wurde bereits mit den gleichen Klingelzeiten aktiviert. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*23*Z*ZZZZZZZZZ,n,Hangup() | |
exten => _*23*Z*ZZZZZZZZZ,n,Set(DB(Program/${EXTEN:4:1}/Queue)=${EXTEN:6}) | |
exten => _*23*Z*ZZZZZZZZZ,n,Talk(Die Warteschleife für das Programm ${EXTEN:4:1} wurde aktiviert mit $[${EXTEN:6:1}*5]\, $[${EXTEN:7:1}*5]\, $[${EXTEN:8:1}*5]\, $[${EXTEN:9:1}*5]\, $[${EXTEN:10:1}*5]\, $[${EXTEN:11:1}*5]\, $[${EXTEN:12:1}*5]\, $[${EXTEN:13:1}*5] und $[${EXTEN:14:1}*5] Sekunden Klingeldauer von Position 1 bis 9.,p) | |
exten => _*23*Z*ZZZZZZZZZ,n,Hangup() | |
exten => _*24*Z,1,GotoIf(${DB_EXISTS(Program/${EXTEN:4:1}/Queue)}?+3) | |
exten => _*24*Z,n,Talk(Die Warteschleife für das Programm ${EXTEN:4:1} ist nicht aktiv. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*24*Z,n,Hangup() | |
exten => _*24*Z,n,Macro(queue-members,${EXTEN:4:1},delete) | |
exten => _*24*Z,n,DBDeltree(Program/${EXTEN:4:1}/Queue) | |
exten => _*24*Z,n,Talk(Die Warteschleife für das Programm ${EXTEN:4:1} wurde geleert und deaktiviert.,p) | |
exten => _*24*Z,n,Hangup() | |
exten => _*24*Z,n(delete),RemoveQueueMember(${EXTEN:4:1},${QUEUE_MEMBER}) | |
exten => _*24*Z,n,Return() | |
; Ansagetexteinstellungen eines bestimmten Programms | |
exten => _*34*Z,1,Talk(Sprechen Sie den Ansagetext für das Programm ${EXTEN:4:1} nach dem Signalton und beenden Sie Ihre Eingabe mit der Raute-Taste${IF(${STAT(e,${RECORDINGS}program${EXTEN:4:1}.wav)}?. Der bestehende Ansagetext wird dabei überschrieben)}.,p) | |
exten => _*34*Z,n,Record(${RECORDINGS}program${EXTEN:4:1}.wav,10,60) | |
exten => _*34*Z,n,Talk(Der Ansagetext für das Programm ${EXTEN:4:1} wurde aufgenommen und aktiviert.,p) | |
exten => _*34*Z,n,Hangup() | |
exten => _*35*Z,1,GotoIf(${STAT(e,${RECORDINGS}program${EXTEN:4:1}.wav)}?+3) | |
exten => _*35*Z,n,Talk(Das Programm ${EXTEN:4:1} hat keinen Ansagetext. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*35*Z,n,Hangup() | |
exten => _*35*Z,n,System(rm -f ${QUOTE(${RECORDINGS}program${EXTEN:4:1}.wav)}) | |
exten => _*35*Z,n,Talk(Der Ansagetext für das Programm ${EXTEN:4:1} wurde gelöscht und deaktiviert.,p) | |
exten => _*35*Z,n,Hangup() | |
; Mailboxeinstellungen eines bestimmten Programms | |
exten => _*45*Z*XX,1,Macro(verify-user,${EXTEN:6:2}) | |
exten => _*45*Z*XX,n,GotoIf($["${DB(Program/${EXTEN:4:1}/Mailbox)}"!="${EXTEN:6:2}"]?+3) | |
exten => _*45*Z*XX,n,Talk(Die Mailbox für das Programm ${EXTEN:4:1} ist bereits auf jene des Anschlusses ${EXTEN:6:2} gesetzt. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*45*Z*XX,n,Hangup() | |
exten => _*45*Z*XX,n,Set(DB(Program/${EXTEN:4:1}/Mailbox)=${EXTEN:6:2}) | |
exten => _*45*Z*XX,n,Talk(Die Mailbox für das Programm ${EXTEN:4:1} wurde auf jene des Anschlusses ${EXTEN:6:2} gesetzt.,p) | |
exten => _*45*Z*XX,n,Hangup() | |
exten => _*46*Z,1,GotoIf(${DB_EXISTS(Program/${EXTEN:4:1}/Mailbox)}?+3) | |
exten => _*46*Z,n,Talk(Für das Programm ${EXTEN:4:1} ist keine Mailbox konfiguriert. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*46*Z,n,Hangup() | |
exten => _*46*Z,n,DBDel(Program/${EXTEN:4:1}/Mailbox) | |
exten => _*46*Z,n,Talk(Die Mailbox für das Programm ${EXTEN:4:1} wurde deaktiviert.,p) | |
exten => _*46*Z,n,Hangup() | |
; Berechtigungsfunktionen für dynamische Warteschlangenmitgliedschaft bei Programmen | |
exten => _*55*Z*XX,1,Macro(verify-user,${EXTEN:6:2}) | |
exten => _*55*Z*XX,n,Talk(Der Anschluss ${EXTEN:6:2} darf sich ${IF(${DB_EXISTS(Program/${EXTEN:4:1}/Queue/${EXTEN:6:2})}?an der Position ${DB_RESULT}:nicht)} dynamisch der Warteschleife des Programms ${EXTEN:4:1} hinzufügen oder entfernen.,p) | |
exten => _*55*Z*XX,n,Hangup() | |
exten => _*56*Z*XX*Z,1,Macro(verify-user,${EXTEN:6:2}) | |
exten => _*56*Z*XX*Z,n,GotoIf(${DB_EXISTS(Program/${EXTEN:4:1}/Queue)}?+3) | |
exten => _*56*Z*XX*Z,n,Talk(Für den Anschluss ${EXTEN:6:2} kann keine dynamische Position definiert werden\, da die Warteschleife des Programms ${EXTEN:4:1} deaktiviert ist.,p) | |
exten => _*56*Z*XX*Z,n,Hangup() | |
exten => _*56*Z*XX*Z,n,GotoIf($["${DB(Program/${EXTEN:4:1}/Queue/${EXTEN:6:2})}"!="${EXTEN:9:1}"]?+3) | |
exten => _*56*Z*XX*Z,n,Talk(Der Anschluss ${EXTEN:6:2} darf sich bereits an Position ${EXTEN:9:1} dynamisch der Warteschleife des Programms ${EXTEN:4:1} hinzufügen und entfernen. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*56*Z*XX*Z,n,Hangup() | |
exten => _*56*Z*XX*Z,n,Set(DB(Program/${EXTEN:4:1}/Queue/${EXTEN:6:2})=${EXTEN:9:1}) | |
exten => _*56*Z*XX*Z,n,Talk(Der Anschluss ${EXTEN:6:2} darf sich nun an Position ${EXTEN:9:1} dyamisch der Warteschleife des Programms ${EXTEN:4:1} hinzufügen und entfernen.,p) | |
exten => _*56*Z*XX*Z,n,Hangup() | |
exten => _*57*Z*XX,1,Macro(verify-user,${EXTEN:6:2}) | |
exten => _*57*Z*XX,n,GotoIf(${DB_EXISTS(Program/${EXTEN:4:1}/Queue/${EXTEN:6:2})}?+3) | |
exten => _*57*Z*XX,n,Talk(Der Anschluss ${EXTEN:6:2} ist nicht konfiguriert für das dynamische Hinzufügen zur\, oder Entfernen von der Warteschleife des Programms ${EXTEN:4:1}. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*57*Z*XX,n,Hangup() | |
exten => _*57*Z*XX,n,DBDel(Program/${EXTEN:4:1}/Queue/${EXTEN:6:2}) | |
exten => _*57*Z*XX,n,Talk(Der Anschluss ${EXTEN:6:2} darf sich nun nicht mehr dynamisch der Warteschleife des Programms ${EXTEN:4:1} hinzufügen oder entfernen.,p) | |
exten => _*57*Z*XX,n,Hangup() | |
; Dynamische Mitgliedschaftsfunktionen für Warteschleifen bei Programmen | |
exten => _*66*XX*Z,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*66*XX*Z,n(verified),Set(FOUND_MEMBER=0) | |
exten => _*66*XX*Z,n,Macro(queue-members,${EXTEN:7:1},check) | |
exten => _*66*XX*Z,n,GotoIf(${FOUND_MEMBER}?+2) | |
exten => _*66*XX*Z,n,Talk(Der Anschluss ${EXTEN:4:2} ist kein Mitglied der Warteschleife des Programms ${EXTEN:7:1}${IF(${DB_EXISTS(Program/${EXTEN:7:1}/Queue/${EXTEN:4:2})}?\, kann sich aber dynamisch an Position ${DB_RESULT} hinzufügen und entfernen)}.,p) | |
exten => _*66*XX*Z,n,Hangup() | |
exten => _*66*XX*Z,n(check),GotoIf($["${QUEUE_EXTEN}"!="${EXTEN:4:2}"]?+3) | |
exten => _*66*XX*Z,n,Talk(${IF(${FOUND_MEMBER}?Und:Der Anschluss ${EXTEN:4:2} ist aktuelles Mitglied der Warteschleife des Programms ${EXTEN:7:1})} an der ${IF($["${DB(Program/${EXTEN:7:1}/Queue/${QUEUE_EXTEN})}"="${QUEUE_PENALTY}"]?dynamisch:statisch)}en Position ${QUEUE_PENALTY}.,p) | |
exten => _*66*XX*Z,n,Set(FOUND_MEMBER=1) | |
exten => _*66*XX*Z,n,Return() | |
exten => _*67*XX*Z,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*67*XX*Z,n(verified),GotoIf(${DB_EXISTS(Program/${EXTEN:7:1}/Queue/${EXTEN:4:2})}?+3) | |
exten => _*67*XX*Z,n,Talk(Der Anschluss ${EXTEN:4:2} kann nicht dynamisch zur Warteschleife des Programms ${EXTEN:7:1} hinzugefügt werden\, da für ihn keine Position konfiguriert wurde. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*67*XX*Z,n,Hangup() | |
exten => _*67*XX*Z,n,AddQueueMember(${EXTEN:7:1},Local/${EXTEN:4:2}-${DB_RESULT}@from-queue,${DB_RESULT}) | |
exten => _*67*XX*Z,n,Talk(Der Anschluss ${EXTEN:4:2} ${IF($["${AQMSTATUS}"="ADDED"]?wurde zur Warteschleife des Programms ${EXTEN:7:1} an der dynamischen Position ${DB_RESULT} hinzugefügt:ist bereits Mitglied der Warteschleife des Programms ${EXTEN:7:1} an der dynamischen Position ${DB_RESULT}. Es wurden keine Änderungen vorgenommen)}.,p) | |
exten => _*67*XX*Z,n,Hangup() | |
exten => _*68*XX*Z,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*68*XX*Z,n(verified),GotoIf(${DB_EXISTS(Program/${EXTEN:7:1}/Queue/${EXTEN:4:2})}?+3) | |
exten => _*68*XX*Z,n,Talk(Der Anschluss ${EXTEN:4:2} kann nicht dynamisch von der Warteschleife des Programms ${EXTEN:7:1} entfernt werden\, da für ihn keine Position konfiguriert wurde. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*68*XX*Z,n,Hangup() | |
exten => _*68*XX*Z,n,RemoveQueueMember(${EXTEN:7:1},Local/${EXTEN:4:2}-${DB_RESULT}@from-queue) | |
exten => _*68*XX*Z,n,Talk(Der Anschluss ${EXTEN:4:2} ${IF($["${RQMSTATUS}"="REMOVED"]?wurde von der dynamischen Position ${DB_RESULT} der Warteschleife des Programms ${EXTEN:7:1} entfernt:ist kein Mitglied der Warteschleife des Programms ${EXTEN:7:1} an der dynamischen Position ${DB_RESULT}. Es wurden keine Änderungen vorgenommen)}.,p) | |
exten => _*68*XX*Z,n,Hangup() | |
; Statische Mitgliedschaftsfunktionen für Warteschleifen bei Programmen | |
exten => _*67*Z*XX*Z,1,Macro(verify-user,${EXTEN:6:2}) | |
exten => _*67*Z*XX*Z,n,GotoIf(${DB_EXISTS(Program/${EXTEN:4:1}/Queue)}?+3) | |
exten => _*67*Z*XX*Z,n,Talk(Der Anschluss ${EXTEN:6:2} kann nicht zur der Warteschleife des Programms ${EXTEN:4:1} hinzugefügt werden\, da diese nicht konfiguriert ist. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*67*Z*XX*Z,n,Hangup() | |
exten => _*67*Z*XX*Z,n,AddQueueMember(${EXTEN:4:1},Local/${EXTEN:6:2}-${EXTEN:9:1}@from-queue,${EXTEN:9:1}) | |
exten => _*67*Z*XX*Z,n,Talk(Der Anschluss ${EXTEN:6:2} ${IF($["${AQMSTATUS}"="ADDED"]?wurde der Warteschleife des Programms ${EXTEN:4:1} an der Position ${EXTEN:9:1} hinzugefügt:ist bereits Mitglied er Warteschleife des Programms ${EXTEN:4:1} an der Position ${EXTEN:9:1}. Es wurden keine Änderungen vorgenommen)}.,p) | |
exten => _*67*Z*XX*Z,n,Hangup() | |
exten => _*68*Z*XX*Z,1,Macro(verify-user,${EXTEN:6:2}) | |
exten => _*68*Z*XX*Z,n,GotoIf(${DB_EXISTS(Program/${EXTEN:4:1}/Queue)}?+3) | |
exten => _*68*Z*XX*Z,n,Talk(Der Anschluss ${EXTEN:6:2} kann nicht von der Warteschleife des Programms ${EXTEN:4:1} entfernt werden\, da diese nicht konfiguriert ist. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*68*Z*XX*Z,n,Hangup() | |
exten => _*68*Z*XX*Z,n,RemoveQueueMember(${EXTEN:4:1},Local/${EXTEN:6:2}-${EXTEN:9:1}@from-queue) | |
exten => _*68*Z*XX*Z,n,Talk(Der Anschluss ${EXTEN:6:2} ${IF($["${RQMSTATUS}"="REMOVED"]?wurde von der Warteschleife des Programms ${EXTEN:4:1} an der Position ${EXTEN:9:1} entfernt:ist kein Mitglied der Warteschleife des Programms ${EXTEN:4:1} an der Position ${EXTEN:9:1}. Es wurden keine Änderungen vorgenommen)}.,p) | |
exten => _*68*Z*XX*Z,n,Hangup() | |
; Nichtverfügbarkeitsfunktionen | |
exten => _*77*XX,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*77*XX,n(verified),Talk(Die Nicht Stören Funktion des Anschlusses ${EXTEN:4:2} ist ${IF(${DB_EXISTS(User/${EXTEN:4:2}/DND)}?gesetzt auf ${IF($[${LEN(${DB_RESULT})}>1]?den Anschluss ${DB_RESULT}:das ${IF(${EXISTS(${DB_RESULT})}?Programm ${DB_RESULT}:Standardprogramm)})}:deaktiviert)}.,p) | |
exten => _*77*XX,n,Hangup() | |
exten => _*78*XX,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*78*XX,n(verified),GotoIf($[!${DB_EXISTS(User/${EXTEN:4:2}/DND)}||${EXISTS(${DB_RESULT})}]?+3) | |
exten => _*78*XX,n,Talk(Die Nicht Stören Funktion des Anschlusses ${EXTEN:4:2} ist bereits auf das Standardprogramm gesetzt. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*78*XX,n,Hangup() | |
exten => _*78*XX,n,Set(DB(User/${EXTEN:4:2}/DND)=) | |
exten => _*78*XX,n,UserEvent(DND,Extension: ${EXTEN:4:2},Enabled: true) | |
exten => _*78*XX,n,Talk(Die Nicht Stören Funktion des Anschlusses ${EXTEN:4:2} wurde gesetzt auf das Standardprogramm.,p) | |
exten => _*78*XX,n,Hangup() | |
exten => _*78*XX*Z,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*78*XX*Z,n(verified),GotoIf($["${DB(User/${EXTEN:4:2}/DND)}"!="${EXTEN:7:1}"]?+3) | |
exten => _*78*XX*Z,n,Talk(Die Nicht Stören Funktion des Anschlusses ${EXTEN:4:2} ist bereits auf das Programm ${EXTEN:7:1} gesetzt. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*78*XX*Z,n,Hangup() | |
exten => _*78*XX*Z,n,Set(DB(User/${EXTEN:4:2}/DND)=${EXTEN:7:1}) | |
exten => _*78*XX*Z,n,UserEvent(DND,Extension: ${EXTEN:4:2},Enabled: true) | |
exten => _*78*XX*Z,n,Talk(Die Nicht Stören Funktion des Anschlusses ${EXTEN:4:2} wurde gesetzt auf das Programm ${EXTEN:7:1}.,p) | |
exten => _*78*XX*Z,n,Hangup() | |
exten => _*78*XX*XX,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*78*XX*XX,n(verified),GotoIf($["${DB(User/${EXTEN:4:2}/DND)}"!="${EXTEN:7:2}"]?+3) | |
exten => _*78*XX*XX,n,Talk(Die Nicht Stören Funktion des Anschlusses ${EXTEN:4:2} ist bereits auf den Anschluss ${EXTEN:7:2} gesetzt. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*78*XX*XX,n,Hangup() | |
exten => _*78*XX*XX,n,Macro(verify-user,${EXTEN:7:2}) | |
exten => _*78*XX*XX,n,Set(DB(User/${EXTEN:4:2}/DND)=${EXTEN:7:2}) | |
exten => _*78*XX*XX,n,UserEvent(DND,Extension: ${EXTEN:4:2},Enabled: true) | |
exten => _*78*XX*XX,n,Talk(Die Nicht Stören Funktion des Anschlusses ${EXTEN:4:2} wurde gesetzt auf den Anschluss ${EXTEN:7:2}.,p) | |
exten => _*78*XX*XX,n,Hangup() | |
exten => _*79*XX,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*79*XX,n(verified),GotoIf(${DB_EXISTS(User/${EXTEN:4:2}/DND)}?+3) | |
exten => _*79*XX,n,Talk(Die Nicht Stören Funktion des Anschlusses ${EXTEN:4:2} ist bereits deaktiviert. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*79*XX,n,Hangup() | |
exten => _*79*XX,n,DBDel(User/${EXTEN:4:2}/DND) | |
exten => _*79*XX,n,UserEvent(DND,Extension: ${EXTEN:4:2},Enabled: false) | |
exten => _*79*XX,n,Talk(Die Nicht Stören Funktion des Anschlusses ${EXTEN:4:2} wurde deaktiviert.,p) | |
exten => _*79*XX,n,Hangup() | |
; Klingeldauerfunktionen | |
exten => _*88*XX,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*88*XX,n(verified),Talk(Die Klingeldauer des Anschlusses ${EXTEN:4:2} ist auf ${IF(${DB_EXISTS(User/${EXTEN:4:2}/Timeout)}?${DB_RESULT} Sekunden:die Standarddauer)} gesetzt.,p) | |
exten => _*88*XX,n,Hangup() | |
exten => _*89*XX,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*89*XX,n(verified),GotoIf(${DB_EXISTS(User/${EXTEN:4:2}/Timeout)}?+3) | |
exten => _*89*XX,n,Talk(Die Klingeldauer des Anschlusses ${EXTEN:4:2} ist bereits auf die Standarddauer gesetzt. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*89*XX,n,Hangup() | |
exten => _*89*XX,n,DBDel(User/${EXTEN:4:2}/Timeout) | |
exten => _*89*XX,n,Talk(Die Klingeldauer des Anschlusses ${EXTEN:4:2} wurde auf die Standarddauer gesetzt.,p) | |
exten => _*89*XX,n,Hangup() | |
exten => _*89*XX*Z,1,Macro(verify-user,${EXTEN:4:2}) | |
exten => _*89*XX*Z,n(verified),GotoIf($["${DB(User/${EXTEN:4:2}/Timeout)}"!="$[${EXTEN:7:1}*5]"]?+3) | |
exten => _*89*XX*Z,n,Talk(Die Klingeldauer des Anschlusses ${EXTEN:4:2} ist bereits auf $[${EXTEN:7:1}*5] Sekunden gesetzt. Es wurden keine Änderungen vorgenommen.,p) | |
exten => _*89*XX*Z,n,Hangup() | |
exten => _*89*XX*Z,n,Set(DB(User/${EXTEN:4:2}/Timeout)=$[${EXTEN:7:1}*5]) | |
exten => _*89*XX*Z,n,Talk(Die Klingeldauer des Anschlusses ${EXTEN:4:2} wurde auf $[${EXTEN:7:1}*5] Sekunden gesetzt.,p) | |
exten => _*89*XX*Z,n,Hangup() | |
; Kurzwahlen | |
exten => _*Z*XX,1,Macro(verify-user,${EXTEN:3:2}) | |
exten => _*Z*XX,n(verified),GotoIf(${DB_EXISTS(User/${EXTEN:3:2}/SpeedDial${EXTEN:1:1})}?${DB_RESULT},1) | |
exten => _*Z*XX,n,Talk(Die Kurzwahl ${EXTEN:1:1} ist nicht definiert.,p) | |
exten => _*Z*XX,n,Hangup() | |
exten => _*Z*XX*,1,Macro(verify-user,${EXTEN:3:2}) | |
exten => _*Z*XX*,n(verified),Talk(Die Kurzwahl ${EXTEN:1:1} des Anschlusses ${EXTEN:3:2} ist ${IF(${DB_EXISTS(User/${EXTEN:3:2}/SpeedDial${EXTEN:1:1})}?definiert als ${DB_RESULT}:nicht definiert)}.,p) | |
exten => _*Z*XX*,n,Hangup() | |
exten => _*Z*XX*.,1,Macro(verify-user,${EXTEN:3:2}) | |
exten => _*Z*XX*.,2,Goto(${EXTEN:0:6}${FILTER(+*0123456789,${EXTEN:6})},+1) | |
exten => _*Z*XX**,3(verified),DBDel(User/${EXTEN:3:2}/SpeedDial${EXTEN:1:1}) | |
exten => _*Z*XX**,4,Talk(Die Kurzwahl ${EXTEN:1:1} des Anschlusses ${EXTEN:3:2} wurde entfernt.,p) | |
exten => _*Z*XX*.,3(verified),Set(DB(User/${EXTEN:3:2}/SpeedDial${EXTEN:1:1})=${EXTEN:6}) | |
exten => _*Z*XX*.,4,Talk(Die Kurzwahl ${EXTEN:1:1} des Anschlusses ${EXTEN:3:2} wurde definiert als ${EXTEN:6}.,p) | |
exten => _*Z*XX*.,5,Hangup() | |
; Pickupnummern für Grandstream-Telefone | |
exten => _***.,1,Pickup(*${FILTER(0123456789,${EXTEN:3})}@extensions) | |
exten => _***.,n,Hangup() | |
exten => _**XX,1,Goto(pickup,${EXTEN:2},1) | |
exten => _**[24568]XX,1,GotoIf($[${EXTEN:2:1}=${BRANCH}]?pickup,${EXTEN:3},1) | |
exten => _**[24568]XX,n,Dial(IAX2/${EXTEN:2:1}/${EXTEN:3}:pickup) | |
exten => _**[24568]XX,n,Hangup() | |
#include "extensions_local.conf" | |
#include "extensions_directory.conf" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment