rendered paste body;####################################################
;#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})})