;#################################################### ;#my server # ;# Locate-Me Feature Context # ;# # ;#################################################### [loacte_me_setup] ; lme_prompt = If you wish to listen the locate-me number(s) that you have press 1, to edit them or add press 2. ; To enable/disable the feature press 3. To delete a number press 4 ; To exit hangup or press 5 exten => _loc_me_.,1,Noop(------> locate-me setup (${EXTEN:7}) <-----) exten => _loc_me_.,n,Set(user=${EXTEN:7}) exten => _loc_me_.,n,GotoIf($[${DB_EXISTS(locateme/${user})}=0]?:in_db) exten => _loc_me_.,n,Set(DB(locateme/${user})=OFF) exten => _loc_me_.,n(in_db),Set(cnt_lmn=${IF($[${DB_EXISTS(locateme/${user}/N1)}=1]?1:0)}) exten => _loc_me_.,n,Set(cnt_lmn=${IF($[${DB_EXISTS(locateme/${user}/N2)}=1]?$[${cnt_lmn}+1]:${cnt_lmn})}) exten => _loc_me_.,n,Gotoif($[${cnt_lmn} > 0]?:the_prompt) exten => _loc_me_.,n,Playback(vm-youhave) exten => _loc_me_.,n,Playback(digits/${cnt_lmn}) exten => _loc_me_.,n,Macro(multi_numb,${cnt_lmn}) exten => _loc_me_.,n(the_prompt),Background(${varCustom_Prompts_Dir}lme_prompt) exten => _loc_me_.,n,WaitExten() exten => _loc_me_.,n,Goto(the_prompt) exten => 1,1,Noop(-----> listen numbers) exten => 1,n,Gotoif($[${cnt_lmn} > 0]?not_empty_db) exten => 1,n,Noop(--> you don''t have any numbers in the database) exten => 1,n,Background(${varCustom_Prompts_Dir}lme_option_1) exten => 1,n,Goto(loc_me_${user},the_prompt) exten => 1,n(not_empty_db),Playback(vm-youhave) exten => 1,n,Playback(digits/${cnt_lmn}) exten => 1,n,Macro(multi_numb,${cnt_lmn}) exten => 1,n,Set(num_db=${IF($[${DB_EXISTS(locateme/${user}/N1)}=1]?${DB(locateme/${user}/N1)}:${DB(locateme/${user}/N2)})}) exten => 1,n,PLayback(beep) exten => 1,n,SayDigits(${num_db}) exten => 1,n,Gotoif($[${cnt_lmn} > 1]?:loc_me_${user},the_prompt) exten => 1,n,Set(num_db=${DB(locateme/${user}/N2)}) exten => 1,n,PLayback(beep) exten => 1,n,SayDigits(${num_db}) exten => 1,n,Goto(loc_me_${user},the_prompt) ; lme_case_1 = You have the maximum 2 locate-me numbres. What number you would like to edit the first or the second one? (1/2) ; lme_case_2 = You have only one number. To edit that number press 1, to add a new one press 2. ; lme_case_3 = You don't have any numbers. To add a new one press 1. exten => 2,1,Noop(-----> add/edit numbers) exten => 2,n,Set(prompt_opt=${IF($[${cnt_lmn}=2]?${varCustom_Prompts_Dir}lme_case_1)}) exten => 2,n,Set(prompt_opt=${IF($[${cnt_lmn}=1]?${varCustom_Prompts_Dir}lme_case_2)}) exten => 2,n,Set(prompt_opt=${IF($[${cnt_lmn}=0]?${varCustom_Prompts_Dir}lme_case_3)}) exten => 2,n,Gotoif($[${cnt_lmn}=0]?lme_empty_db) exten => 2,n,Read(usr_sel,${prompt_opt},1,,,4) exten => 2,n,GotoIf($[${ISNULL(${usr_sel})}=1]?i,1) exten => 2,n,GotoIf($[${usr_sel} > 2]?i,1) exten => 2,n,Gotoif($[${cnt_lmn}=1]?:label_1) exten => 2,n(lme_empty_db),Set(usr_sel=${IF($[${DB_EXISTS(locateme/${user}/N1)}=0]?1:2)}) exten => 2,n,Gotoif($[${cnt_lmn}=0]?:label_1) ; in case the user has 0 num and his selection is 2 exten => 2,n,Gotoif($[${usr_sel}=2]?i,1) exten => 2,n(label_1),Macro(number_new,${usr_sel}) exten => 2,n,Goto(loc_me_${user},the_prompt) exten => 3,1,Noop(-----> enable/disable | status was: ${DB(locateme/${user})}) exten => 3,n,Noop(${CUT(DB(locateme/${user}),:,1))}) exten => 3,n,Gotoif($[${cnt_lmn}=0]?loc_me_${user},the_prompt) exten => 3,n,Set(temp=${IF($["${CUT(DB(locateme/${user}),:,1))}"="ON"]?OFF:ON:${cnt_lmn})}) exten => 3,n,Set(say_on_off=${IF($["${temp}"="OFF"]?ha/off:ha/on)}) exten => 3,n,Set(DB(locateme/${user})=${temp}) exten => 3,n,PLayback(${say_on_off}) exten => 3,n,Goto(loc_me_${user},the_prompt) exten => 4,1,Noop(-----> remove numbers) exten => 4,n,GotoIf($[${cnt_lmn}=0]?l:lme_del_1) exten => 4,n,Playback(${varCustom_Prompts_Dir}lme_option_4_0) exten => 4,n,Goto(loc_me_${user},the_prompt) exten => 4,n(lme_del_1),Set(prompt_opt=${IF($[${cnt_lmn}=2]?${varCustom_Prompts_Dir}lme_option_4_2)}) exten => 4,n,Set(prompt_opt=${IF($[${cnt_lmn}=1]?${varCustom_Prompts_Dir}lme_option_4_1)}) exten => 4,n,Noop(--> Select which number you would like to remove) exten => 4,n,Read(usr_sel,${prompt_opt},1,,,4) exten => 4,n,GotoIf($[${ISNULL(${usr_sel})}=1]?i,1); incase of 1 num exten => 4,n,GotoIf($[${cnt_lmn}=1]?l:lme_del_2) exten => 4,n,GotoIf($[${usr_sel} = 2]?i,1) exten => 4,n,GotoIf($[${usr_sel} > 1]?loc_me_${user},the_prompt) exten => 4,n,Set(usr_sel=${IF($[${DB_EXISTS(locateme/${user}/N1)}=1]?1:2)}) exten => 4,n(lme_del_2),GotoIf($[${usr_sel} > 2]?i,1) exten => 4,n,Set(num_del=${DB_DELETE(locateme/${user}/N${usr_sel})}) exten => 4,n,Set(cnt_lmn=${IF($[${DB_EXISTS(locateme/${user}/N1)}=1]?1:0)}) exten => 4,n,Set(cnt_lmn=${IF($[${DB_EXISTS(locateme/${user}/N2)}=1]?$[${cnt_lmn}+1]:${cnt_lmn})}) exten => 4,n,Set(DB(locateme/${user})=${IF($[${cnt_lmn}=0]?OFF:ON:${cnt_lmn})}) exten => 4,n,Gotoif($[${ISNULL(${num_del})}=1]?loc_me_${user},the_prompt) exten => 4,n,SayDigits(${num_del}) exten => 4,n,PLayback(lm_deleted) exten => 4,n,Goto(loc_me_${user},the_prompt) exten => 5,1,Noop(-----> get out of here <------) exten => 5,n,Hangup() exten => i,1,Wait(1) exten => i,n,PLayback(invalid) exten => i,n,Goto(loc_me_${user},the_prompt) exten => t,1,Goto(loc_me_${user},the_prompt) [macro-multi_numb] exten => s,1,Noop(-----> macro multi_numb: ARG1=${ARG1}) exten => s,n,Gotoif($[${ARG1} > 1]?many) exten => s,n,PLayback(number) exten => s,n,MacroExit() exten => s,n(many),PLayback(numbers) [macro-number_new] ; ARG1 - cnt_lmn - the number of stored numbers exten => s,1,Playback(enter-phone-number10) exten => s,n,Read(lme_num,and-prs-pound-whn-finished,10,,,4) exten => s,n,GotoIf($[ ${ISNULL(${lme_num})} = 1 ]?s,1) exten => s,n,Playback(the-num-i-have-is) exten => s,n,SayDigits(${lme_num}) exten => s,n,Background(to-enter-a-diff-number) exten => s,n,Background(press-any-key) exten => s,n,Background(if-correct) exten => s,n,Background(please-stay-on-the-line) exten => s,n,Read(try_again,,1,,,2) exten => s,n,Set(try_again=${IF($[ ${ISNULL(${try_again})} = 1 ]?2:1)}) ; if the choice is null Temp will be 2 exten => s,n,GotoIf($[ ${try_again} = 1 ]?s,1) exten => s,n,Set(DB(locateme/${user}/N${ARG1})=${lme_num}) exten => s,n,Set(cnt_lmn=${IF($[${DB_EXISTS(locateme/${user}/N1)}=1]?1:0)}) exten => s,n,Set(cnt_lmn=${IF($[${DB_EXISTS(locateme/${user}/N2)}=1]?$[${cnt_lmn}+1]:${cnt_lmn})})