Some macros: =========== [macro-filterExten] ; exten => s,1,Gotoif(${REGEX("&,/|@" ${ARG1})}?badexten,1) exten => s,n,MacroExit exten => badexten,1,playback(invalid,noanswer) exten => badexten,n,NoOp(Invalid extension) exten => badexten,n,wait(.5) exten => badexten,n,congestion [macro-setDialingExtenFromSipHeader] ; ; We extract the DIALING extension from SIP header ; which is of the form exten => s,1,Set(__DIALINGEXTEN=${CUT(SIP_HEADER(FROM),@,1)}) exten => s,n,Set(__DIALINGEXTEN=${CUT(DIALINGEXTEN,:,2)}) exten => s,n,MacroExit [macro-monitor] ; exten => s,1,Set(__email=${ARG3}) exten => s,n,Set(__accountcode=${CDR(accountcode)}) exten => s,n,GotoIf($["${accountcode}" != ""]?setMonitor) exten => s,n,Set(__accountcode=_UNKNOWN) exten => s,n(setMonitor),Set(__MONITOR_EXEC="/usr/local/bin/mixMonitorCalls") exten => s,n,Set(__format=${ARG2}) exten => s,n,GotoIf($["${format}" != ""]?startOrStop) exten => s,n,Set(__format=wav) exten => s,n(startOrStop),GotoIf($["${ARG1}" != "start"]?stop) exten => s,n(setFile),Set(__MONITOR_FILE=/home/ftp/Asterisk/Records/${accountcode}/${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}_${CALLERID(num)}) exten => s,n,Monitor(${format},${MONITOR_FILE},m) ;TIMESTAMP only 1.2 exten => s,n,MacroExit exten => s,n(stop),GotoIf($["${ARG1}" != "stop"]?end) exten => s,n,StopMonitor exten => s,n,GotoIf($["${email}" = ""]?end) exten => s,n,system(uuencode ${MONITOR_FILE}.${format} ${MONITOR_FILE}.${format} | /usr/bin/mail -s "TOOTAiAudio - Conversation enregistrée" ${email}) exten => s,n(end),MacroExit [macro-OFFICE-Numbers] ; include => GeneralNumbersAsExtensions ; ARG1 = extension to dial ; ARG2 = priority to go. If not set, priority is 1 exten => s,1,GotoIf($["${ARG2}" != ""]?${ARG1},${ARG2}) same => n,Goto(${ARG1},1) ; Various exten => 301,1,Dial(SIP/3803090182,,tT) exten => 302,1,Dial(IAX2/scooter-gw/911) exten => 303,1,Dial(SIP/0950622918,,tT) exten => 304,1,Goto(Jaless,000,incomingCall) exten => 305,1,macro(dialGTALK,vvvvvvv@gmail.com) exten => 306,1,Goto(to-customerEB,100,Start) exten => 307,1,Dial(SIP/xxxxxx@ekiga.net) exten => 308,1,Dial(SIP/astphone/yyyyyy,,${DIAL_OPTIONS}t) exten => 309,1,Dial(SIP/astphone/xxxxxx,,${DIAL_OPTIONS}t) exten => 310,1,macro(dialGTALK,wwwwwww@gmail.com) exten => 311,1,macro(dialGTALK,zzzzzzz@gmail.com) exten => 312,1,macro(dialGTALK,xxxxxxx@gmail.com) exten => 313,1,macro(dialGTALK,yyyyyyy@gmail.com) exten => 314,1,Set(CHANNEL(secure_bridge_signaling)=1) ; =1 force TLS (same as transport=tls) same => n,Set(CHANNEL(secure_bridge_media)=1) ; =1 force SRTP(same as encryption=yes) same => n,Dial(SIP/astphone/xxx,,${DIAL_OPTIONS}t) ; Test PBX soft - diatonis replacement exten => 600,1,Dial(SIP/8081773619,,TG(dialOptionSilenceMarked^s^1)) exten => 601,1,Dial(SIP/6295495402,,TG(dialOptionSilenceMarked^s^1)) exten => 602,1,Dial(SIP/134,,TG(dialOptionSilenceMarked^s^1)) ; Acces aux services des GW exten => 940,1,Macro(dialSIPGATE,10000,r) exten => 941,1,Macro(dialSIPGATE,50000,r) exten => 950,1,Macro(dialWENGO,333,T) exten => 951,1,Macro(dialWENGO,123,T) exten => 952,1,Macro(dialWENGO,444,T) exten => 960,1,Macro(dialTOOTAiAudio,800,T) exten => 980,1,Macro(dialSipPHONE,**,T) [GeneralNumbersAsExtensions] exten => _X,1,Macro(GeneralNumbers,${EXTEN}) exten => _X.,1,Macro(GeneralNumbers,${EXTEN}) exten => _[*a-zA-Z].,1,Macro(GeneralNumbers,${EXTEN}) [macro-GeneralNumbers] ; ARG1 = extension to dial. If not set continue s in sequence ; ARG2 = priority to go. If not set, priority is 1 exten => s,1,GotoIf($["${ARG2}" != ""]?${ARG1},${ARG2}) exten => s,n,GotoIf($["${ARG1}" != ""]?${ARG1},1) exten => s,n(callme),NoOp(Callme application) exten => s,n,Authenticate(xxxx) exten => s,n,Set(TIMEOUT(digit)=12) exten => s,n,Disa(no-password,from-HOME) exten => s,n,Hangup exten => 720,1,Answer() exten => 720,n,NoOp(Voice call) exten => 720,n,Hangup exten => fax,1,ReceiveFAX(/tmp/fax.tiff) ;Pour test FAX exten => fax,n,Hangup exten = 801,1,Set(CHANNEL(musicclass)=TOOTAi) exten = 801,n,MusicOnHold() exten = 801,n,Hangup exten = 808,1,Dial(SIP/ABCD,30,${DIAL_OPTIONS}) exten = 808,n,GotoIf($["${RETURN_TO_ON_HANGUP}" != ""]?noHangup) exten = 808,n,Hangup exten = 808,n(noHangup),Goto(${RETURN_TO_ON_HANGUP}) exten => 809,1,Goto(s,callme) exten => _88[0-7],1,Set(CHANNEL(Musiclass)=MeetMe) exten => _88[0-7],n,GotoIf($["${SIP_HEADER(X-TOOTAI-LANGUAGE)}" != "" ]?:languageOK) exten => _88[0-7],n,Set(CHANNEL(language)=${SIP_HEADER(X-TOOTAI-LANGUAGE)}) exten => _88[0-7],n(languageOK),Answer exten => _88[0-7],n,Wait(1) exten => _88[0-7],n,MeetMe(${EXTEN},cMr) ;${SILENCEOPTIONS})=que de la musique au cas ou les conférences sont crackées exten => _88[0-7],n,Hangup exten => _888,1,Set(CHANNEL(musicclass)=MeetMe) exten => _888,n,GotoIf($["${X-TOOTAI-LANGUAGE}" != "" ]?:languageOK) exten => _888,n,Set(CHANNEL(language)=${X-TOOTAI-LANGUAGE)}) exten => _888,n(languageOK),Answer exten => _888,n,Wait(1) exten => _888,n,ConfBridge(${EXTEN}) exten => _888,n,Hangup exten => _89[0-9],1,Set(CHANNEL(Musicclass)=MeetMe) exten => _89[0-9],n,GotoIf($["${SIP_HEADER(X-TOOTAI-LANGUAGE)}" != "" ]?:languageOK) exten => _89[0-9],n,Set(CHANNEL(language)=${SIP_HEADER(X-TOOTAI-LANGUAGE)}) exten => _89[0-9],n(languageOK),Answer exten => _89[0-9],n,Wait(1) exten => _89[0-9],n,MeetMe(${EXTEN},cM) exten => _89[0-9],n,Playback(vm-goodbye) exten => _89[0-9],n,Hangup