Skip to content

Instantly share code, notes, and snippets.

@meitinger
Last active November 6, 2015 00:38
Show Gist options
  • Save meitinger/a9730bc4e536bd3194e3 to your computer and use it in GitHub Desktop.
Save meitinger/a9730bc4e536bd3194e3 to your computer and use it in GitHub Desktop.
Asterisk Dialplan (obsolete, see https://github.com/meitinger/asterisk)
; 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
BRANCH_2_MAIL=office.badhaering@aufbauwerk.com
BRANCH_4_NAME=Innsbruck
BRANCH_4_ID=+43512585814
BRANCH_4_SLOWLINK=0
BRANCH_4_DID=1
BRANCH_4_SERVER=innsbruck.aufbauwerk.com
BRANCH_4_MAIL=office.innsbruck@aufbauwerk.com
BRANCH_5_NAME=Lengberg
BRANCH_5_ID=+4348588206
BRANCH_5_SLOWLINK=0
BRANCH_5_DID=1
BRANCH_5_SERVER=lengberg.aufbauwerk.com
BRANCH_5_MAIL=office.lengberg@aufbauwerk.com
BRANCH_6_NAME=Telfs
BRANCH_6_ID=+43526267680
BRANCH_6_SLOWLINK=0
BRANCH_6_DID=1
BRANCH_6_SERVER=telfs.aufbauwerk.com
BRANCH_6_MAIL=office.telfs@aufbauwerk.com
BRANCH_8_NAME=Lachhof
BRANCH_8_ID=+43522357757
BRANCH_8_SLOWLINK=0
BRANCH_8_DID=1
BRANCH_8_SERVER=lachhof.aufbauwerk.com
BRANCH_8_MAIL=office.lachhof@aufbauwerk.com
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