All pastes #328 Raw Edit

Anonymous

public ini v1 · immutable
#328 ·published 2004-07-26 22:15 UTC
rendered paste body
;; Extension Configuration for Asterisk;[general]static = yeswriteprotect = yes;;;; Global Extension Information;;;[globals]; Global variables to simulate macro return valuesmacro_ReplaceAll_return =macro_groupcall_return =john_office             = SIP/?_john_officedavid_office    = SIP/?_david_officeadam_office             = SIP/?_adam_officecindy_office    = SIP/?_cindy_officefamily_room             = Zap/2kitchen                 = SIP/?_kitchenjohn_bedroom1   = SIP/?_john_bedroomjohn_bedroom2   = Zap/5john_bedroom    = ${john_bedroom1}&${john_bedroom2}adam_bedroom    = SIP/?_adam_bedroomcindy_bedroom1  = SIP/?_cindy_bedroomcindy_bedroom2  = Zap/3cindy_bedroom   = ${cindy_bedroom1}&${cindy_bedroom2}cell_20X3 = 1234567890cell_21X3 = 1234567890cell_22X3 = 1234567890cell_23X3 = 1234567890company_0 = homecompany_1 = cpccompany_2 = cptsperson_10 = mainperson_11 = supportperson_20 = cindyperson_21 = johnperson_22 = adamperson_23 = davidfunction_0 = groupfunction_1 = officefunction_2 = bedroomhome_group              = john_group&cindy_group&family_room&kitchenmain_group              = john_office&david_office&adam_office&cindy_office&family_room&kitchen&john_bedroom&adam_bedroom&cindy_bedroomsupport_group   = ${main_group}cindy_group             = cindy_office&cindy_bedroomjohn_group              = john_office&john_bedroomadam_group              = adam_office&adam_bedroomdavid_group             = david_officecpc_main_queue          = ${cindy_group}cpc_support_queue       = ${john_group}&${adam_group}&${david_group}cpts_main_queue         = ${cindy_group}cpts_support_queue      = ${john_group}&${adam_group}&${david_group}[extensions]; Change to internal contextexten => _#.,1,Goto(internal,${EXTEN:1},1); Change to an outgoing contextexten => _X.,1,GotoIf($[_${CHANNEL:0:3} = _SIP]?4:2)exten => _X.,2,SetVar(NewChannel=home)exten => _X.,3,Goto(5)exten => _X.,4,Cut(NewChannel=CHANNEL:4,_,1)exten => _X.,5,Goto(outgoing-${NewChannel},${EXTEN},1)[internal]; Change to extensions contextexten => _9.,1,Goto(extensions,${EXTEN:1},1); Internal Extensionsexten => _XXXX,1,Macro(ProcessInternal,${EXTEN},${CHANNEL}); Global Voicemailexten => 8000/_XX0X,1,VoiceMailMain(s1000)exten => 8000/_1[0-1][1-2]X,1,VoiceMailMain(s${CALLERIDNUM:0:3}0)exten => 8000/_2[0-3][1-2]X,1,VoiceMailMain(s${CALLERIDNUM:0:3}0); Conference Bridgeexten => _82[0-1]X,1,Meetme(${EXTEN}|Ms); Timeexten => 8800,1,Goto(incoming-did,4989,1); Recordingexten => 8810,1,Macro(Record,/tmp/asterisk-recording); Invalid Handlerexten => i,1,Playback(tt-weasels)exten => i,2,Playback(vm-goodbye)exten => i,3,Hangup();;;; Incoming Calls;;;[incoming-fxo]exten => s,1,Dial(Zap/6)[incoming-t1]; Handle DID Numbersexten => _99912345[6-8]X,1,Goto(incoming-did,${EXTEN:6},1); Handle the main numbersexten => 9991234567,1,Macro(SetupDID,${home_group},home,1000)exten => 9991234568,1,Dial(Zap/6)exten => 9991234569,1,Goto(incoming-did,4961,1)exten => 9991234570,1,Goto(incoming-did,4962,1)[incoming-did]; Cobalt Pointe Consultingexten => 4960,1,Macro(SetupDID,${cpc_main_queue},cpc,1010)exten => 4961,1,Macro(SetupDID,${cindy_group},cpc,2010)exten => 4962,1,Macro(SetupDID,${john_group},cpc,2110)exten => 4963,1,Macro(SetupDID,${adam_group},cpc,2210)exten => 4964,1,Macro(SetupDID,${david_group},cpc,2310)exten => 4966,1,Macro(SetupDID,${cpc_support_queue},cpc,1110)exten => 4969,1,Dial(Zap/6); Cobalt Pointe Technical Servicesexten => 4970,1,Macro(SetupDID,${cpts_main_queue},cpts,1020)exten => 4971,1,Macro(SetupDID,${cindy_group},cpts,2020)exten => 4972,1,Macro(SetupDID,${john_group},cpts,2120)exten => 4973,1,Macro(SetupDID,${adam_group},cpts,2220)exten => 4974,1,Macro(SetupDID,${david_group},cpts,2320)exten => 4976,1,Macro(SetupDID,${cpts_support_queue},cpts,1120)exten => 4979,1,Dial(Zap/6); Time Serviceexten => 4989,1,Wait(2)exten => 4989,2,SayUnixTime(||\'beep\' IMp \'vm-for\' ABd)exten => 4989,3,Wait(5)exten => 4989,4,Goto(2); Voice Mail Accessexten => 4988,1,Wait(2)exten => 4988,2,VoiceMailMain()exten => 4988,3,Hangup;;;; Outgoing Calls;;;[outgoing-home]exten => _X.,1,SetCIDNum(999-123-4571)exten => _X.,2,SetCIDName(Preston Residence)exten => _X.,3,Goto(outgoing,${EXTEN},1)[outgoing-cpc]exten => _X.,1,SetCIDNum(999-123-4572)exten => _X.,2,SetCIDName(Cobalt Pointe Consulting)exten => _X.,3,Goto(outgoing,${EXTEN},1)[outgoing-cpts]exten => _X.,1,SetCIDNum(999-123-4573)exten => _X.,2,SetCIDName(Cobalt Pointe Technical Services)exten => _X.,3,Goto(outgoing,${EXTEN},1)[outgoing]include => outgoing-localinclude => outgoing-longdistance; DID Numbers stay in the systemexten => _99912345[6-8]X,1,Goto(incoming-did,${EXTEN:6},1); Easter Eggexten => 8675309,1,Mp3Player(/var/lib/asterisk/sounds/jenny.mp3)[outgoing-local]exten => _N11,1,Dial(Zap/1/${EXTEN})exten => _404XXXXXXX,1,Dial(Zap/1/${EXTEN}||d)exten => _770XXXXXXX,1,Dial(Zap/1/${EXTEN}|d)exten => _678XXXXXXX,1,Dial(Zap/1/${EXTEN}||d)exten => _1404XXXXXXX,1,Dial(Zap/1/${EXTEN:1}||d)exten => _1770XXXXXXX,1,Dial(Zap/1/${EXTEN:1}||d)exten => _1678XXXXXXX,1,Dial(Zap/1/${EXTEN:1}||d)[outgoing-longdistance]exten => _1NXXXXXXXXX,1,Dial(Zap/1/${EXTEN})exten => _NXXXXXXXXX,1,Dial(Zap/1/1${EXTEN});;;; Macros;;;[macro-SetupDID]exten => s,1,Macro(GroupCall,${ARG1},${CHANNEL})exten => s,2,Macro(ReplaceAll,${macro_GroupCall_return},?,${ARG2})exten => s,3,Dial(${macro_ReplaceAll_return}|15|Tt)exten => s,4,VoiceMail(u${ARG3})exten => s,5,Goto(200)exten => s,104,VoiceMail(b${ARG3})exten => s,105,Goto(200)exten => s,200,Playback(vm-goodbye)exten => s,201,Hangup()[macro-ReplaceAll]; Initialize variablesexten => s,1,SetVar(source=${ARG1})exten => s,2,SetVar(dest=)exten => s,3,SetVar(a=${ARG2})exten => s,4,SetVar(b=${ARG3})exten => s,5,Goto(10); While string a is in source, replace a with b (dumping it into dest)exten => s,10,Cut(tmp=source,${a},1)exten => s,11,Cut(source=source,${a},2-)exten => s,12,GotoIf($["${source}" = ""]?90)exten => s,13,SetVar(dest=${dest}${tmp}${b})exten => s,14,Goto(10)exten => s,90,SetVar(dest=${dest}${tmp})exten => s,91,Goto(100)exten => s,100,SetVar(macro_ReplaceAll_return=${dest})[macro-Record]exten => s,1,Wait(2)exten => s,2,Record(${ARG1}:gsm)exten => s,3,Wait(1)exten => s,4,Playback(${ARG1})exten => s,6,Hangup[macro-ProcessInternal]; Setup variablesexten => s,1,SetVar(extension=${ARG1})exten => s,2,SetVar(channel=${ARG2})exten => s,3,Goto(20); Handle Call Typesexten => s,20,GotoIf($[${extension:-1} >= 0 & ${extension:-1} <= 5]?21:3000)exten => s,21,Goto(1${extension:-1}00); Group Callexten => s,1000,Goto(2000); Office Callexten => s,1100,Goto(2000); Bedroom Callexten => s,1200,Goto(2000); Cell Callexten => s,1300,Goto(extensions,${cell_${extension:0:2}X${extension:-1}},1); Leave Voicemailexten => s,1400,VoiceMail(${extension:0:3}0)exten => s,1401,Playback(vm-goodbye)exten => s,1402,Hangup(); Check Voicemailexten => s,1500,Wait(2)exten => s,1501,Playback(voicemail/default/${extension:1}0/greet)exten => s,1502,VoiceMailMain(${extension:0:3}0)exten => s,1503,Hangup(); Handle Group, Office and Bedroom calls.exten => s,2000,SetVar(front=${person_${extension:0:2}})exten => s,2001,SetVar(back=${function_${extension:3:1}})exten => s,2002,GotoIf($["${front}" = "" | "${back}" = ""]?3000)exten => s,2003,GotoIf($["${back}" = "group"]?2010:2020)exten => s,2010,Macro(GroupCall,${${front}_${back}},${CHANNEL})exten => s,2011,Goto(2030)exten => s,2020,Macro(GroupCall,${front}_${back},${CHANNEL})exten => s,2021,Goto(2030)exten => s,2030,Macro(ReplaceAll,${macro_groupcall_return},?,${company_${extension:2:1}})exten => s,2031,GotoIf($["${macro_ReplaceAll_return}" = ""]?3000)exten => s,2032,Dial(${macro_ReplaceAll_return}||Tt)exten => s,3000,Goto(internal,i,1)[macro-GroupCall]; Initialize variablesexten => s, 1, SetVar(final_channel_list=)exten => s, 2, SetVar(possible_names_list=${ARG1})exten => s, 3, SetVar(channel_to_remove=${ARG2})exten => s, 4, Cut(channel_to_remove=channel_to_remove,-,1)exten => s, 5, Cut(tmp_channel=channel_to_remove,_,2-)exten => s, 6, GotoIf($[_${tmp_channel} = _]?8)exten => s, 7, SetVar(channel_to_remove=${tmp_channel})exten => s, 8, Goto(13); Start outer loop; Pop next nameexten => s,13, Cut(this_name=possible_names_list,&,1)exten => s,14, Cut(possible_names_list=possible_names_list,&,2-)exten => s,15, NoOp();this_name=${this_name})exten => s,16, NoOp();possible_names_list=${possible_names_list})exten => s,17, SetVar(channel_list=${${this_name}})exten => s,18, SetVar(a_channel_match=0); Start inner loop; Pop next channelexten => s,19, Cut(this_channel=channel_list,&,1)exten => s,20, Cut(channel_list=channel_list,&,2-)exten => s,21, Cut(tmp_channel=this_channel,_,2-)exten => s,22, GotoIf($[_${tmp_channel} = _]?24)exten => s,23, GotoIf($[_${tmp_channel} = _${channel_to_remove}]?30:32)exten => s,24, GotoIf($[_${this_channel} = _${channel_to_remove}]?30:32)exten => s,30, SetVar(a_channel_match=1)exten => s,31, Goto(33)exten => s,32, GotoIf($[_${channel_list} = _]?33:19)exten => s,33, GotoIf($[${a_channel_match}]?13:34)exten => s,34, SetVar(final_channel_list=${final_channel_list}&${${this_name}})exten => s,35, GotoIf($[_${possible_names_list} = _]?46:13)exten => s,46, NoOp();final_channel_list=${final_channel_list})exten => s,47, SetVar(macro_GroupCall_return=${final_channel_list:1})