nw_rt_csc_XXX_2901_35ATS#term len 0 nw_rt_csc_XXX_2901_35ATS#more Arkas_Turizm_Izmir.tcl #TCL IVR Script, accepts calls and plays welcome AA, if busy or no answer, IVR responds #with an option to be transferred to operator or to enter a new extension. #English language selection with 9. proc init { } { global param global pilotno global alerttimeout global langselect global digitcollect set pilotno 6500 set alerttimeout 12 set langselect "Turkish" set digitcollect "" set param(interruptPrompt) true set param(abortKey) * set param(terminationKey) # puts "\n(init) Starting Arkas_Turizm_Izmir.tcl Cisco\n" if { [infotag get cfg_avpair_exists cm-pilot] } { set pilotno [infotag get cfg_avpair cm-pilot] } else { puts "\ndebug(init) Critical problem found, no Pilot number defined!\n"; } if { [infotag get cfg_avpair_exists alert-time] } { set alerttimeout [infotag get cfg_avpair alert-time] } else { puts "\ndebug(init) Critical problem found, no Alert-Timeout defined!\n"; } puts "\ndebug(init)Language selected currently is '$langselect'\n"; puts "\ndebug(init)Digitcollect currently is '$digitcollect'\n"; puts "\ndebug(init)Finished Initialisation, CMpilot is $pilotno, Alerttime is $alerttimeout\n" } proc act_Setup { } { global alerttimeout global langselect global digitcollect global weekdays global hour global minute global param set langselect "Turkish" set digitcollect "" set weekdays [clock format [clock seconds] -format "%w"] set hour [clock format [clock seconds] -format "%H"] set minute [clock format [clock seconds] -format "%M"] puts "\ndebug(act_Setup)Language selected currently is '$langselect'\n"; puts "\ndebug(act_Setup)Digitcollect currently is '$digitcollect'\n"; puts "\n(act_Setup) Entering procedure\n" if { [infotag get leg_isdid] } { leg proceeding leg_incoming leg progress leg_incoming leg connect leg_incoming if { $weekdays >= 1 && $weekdays <= 5 } { if { $hour == "08" } { if { $minute >= "00" && $minute < "30" } { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Disi.au } else { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Gunaydin_TR.au } } elseif { $hour == "09"} { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Gunaydin_TR.au } elseif { $hour == "10" } { if { $minute >= "00" && $minute < "30" } { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Gunaydin_TR.au } else { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Iyi_Gunler_TR.au } } elseif { $hour >= "11" && $hour < "18" } { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Iyi_Gunler_TR.au } else { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Disi.au } } if { $weekdays == 6} { if { $hour >= "09" && $hour < "14" } { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Cumartesi.au } else { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Disi.au } } if { $weekdays == 0 } { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Disi.au } set param(interDigitTimeout) 3 set param(initialDigitTimeout) 2 set param(maxDigits) 4 set param(interruptPrompt) true set param(abortKey) * set param(terminationKey) # leg collectdigits leg_incoming param fsm setstate SELECTOPT } else { call close } } proc act_Collected { } { global delay global pilotno global langselect global digitcollect global alerttimeout global weekdays global hour global minute puts "\ndebug(act_Collected) Entering procedure\n"; puts "\ndebug(act_Collected) Digitcollect is: '$digitcollect'\n" set status [infotag get evt_status] puts "\n(act_Collected) Collect status is '$status' (lang=$langselect)\n" if { $weekdays >= 1 && $weekdays <= 5 } { if { $hour == "08" } { if { $minute >= "00" && $minute < "30" } { call close } } elseif { $hour >= "18" && $hour <= "23" } { call close } elseif { $hour >= "00" && $hour < "08" } { call close } } if { $weekdays == 6} { if { $hour >= "00" && $hour < "09" } { call close } elseif { $hour >= "14" } { call close } } if { $weekdays == 0 } { call close } if { $status == "cd_001"} { puts "\n(act_Collected) Collect Timeout play prompt and transfer to operator\n" if { $langselect == "Turkish" } { puts "\n(act_Collected) Playing Turkish prompt\n" media play leg_incoming flash:Transfer.au } if { $langselect == "English" } { puts "\n(act_Collected) Playing English prompt\n" media play leg_incoming flash:Transfer.au } fsm setstate TRANSFERTOOP } if { $status == "cd_005" } { set choice [infotag get evt_dcdigits] puts "\n(act_Collected) Digits entered is '$choice'\n"; if { $choice == "0" } { puts "\n(act_Collected) Transferring to operator ($pilotno)\n"; leg setup "6500" callInfo leg_incoming media play leg_incoming flash:Transfer_To_Operator.au } elseif { $choice != "0" && $choice == "1" } { leg setup "#6591" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice != "1" && $choice == "2" } { leg setup "#6592" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice != "1" && $choice != "2" && $choice == "3"} { leg setup "#6593" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice != "1" && $choice != "2" && $choice != "3" && $choice == "4"} { leg setup "#6594" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice != "1" && $choice != "2" && $choice != "3" && $choice != "4" && $choice == "5"} { leg setup "#6595" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice != "1" && $choice != "2" && $choice != "3" && $choice != "4" && $choice != "5" && $choice == "6"} { leg setup "#6596" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice != "1" && $choice != "2" && $choice != "3" && $choice != "4" && $choice != "5" && $choice != "6" && $choice == "7"} { leg setup "#6597" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice != "1" && $choice != "2" && $choice != "3" && $choice != "4" && $choice != "5" && $choice != "6" && $choice != "7" && $choice == "9"} { set param(interDigitTimeout) 3 set param(initialDigitTimeout) 2 set param(maxDigits) 4 set param(interruptPrompt) true set param(abortKey) * set param(terminationKey) # leg collectdigits leg_incoming param set weekdays [clock format [clock seconds] -format "%w"] set hour [clock format [clock seconds] -format "%H"] set minute [clock format [clock seconds] -format "%M"] if { $weekdays >= 1 && $weekdays <= 5 } { if { $hour == "08" } { if { $minute >= "00" && $minute < "30" } { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Disi.au } else { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_ENG.au } } elseif { $hour >= "09" && $hour < "18" } { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_ENG.au } else { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Disi.au } } if { $weekdays == 6} { if { $hour >= "09" && $hour < "14" } { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_ENG.au } else { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Disi.au } } if { $weekdays == 0 } { media play leg_incoming flash:Arkas_Turizm_Mesai_Saatleri_Disi.au } fsm setstate SELECTOPTENG } elseif { $choice != "0" && $choice != "1" && $choice != "2" && $choice != "3" && $choice != "4" && $choice != "5" && $choice != "6" && $choice != "7" && $choice != "9"} { leg setup $choice callInfo leg_incoming } else { puts "\n\n\t\t **** NO acme-sales or acme-service numbers configured from CLI" fsm setstate CLEANUP return } } } proc act_eng_Collected { } { global delay global pilotno global langselect global digitcollect global alerttimeout puts "\ndebug(act_Collected) Entering procedure\n"; puts "\ndebug(act_Collected) Digitcollect is: '$digitcollect'\n" set status [infotag get evt_status] puts "\n(act_Collected) Collect status is '$status' (lang=$langselect)\n" if { $status == "cd_001"} { puts "\n(act_Collected) Collect Timeout play prompt and transfer to operator\n" if { $langselect == "Turkish" } { puts "\n(act_Collected) Playing Turkish prompt\n" media play leg_incoming flash:Transfer.au } if { $langselect == "English" } { puts "\n(act_Collected) Playing English prompt\n" media play leg_incoming flash:Transfer.au } fsm setstate TRANSFERTOOP } if { $status == "cd_005" } { set choice [infotag get evt_dcdigits] puts "\n(act_Collected) Digits entered is '$choice'\n"; if { $choice == "0" } { puts "\n(act_Collected) Transferring to operator ($pilotno)\n"; leg setup "6500" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice == "3" } { leg setup "#6592" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice != "3" && $choice == "4" } { leg setup "#6593" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice != "3" && $choice != "4" && $choice == "5"} { leg setup "#6594" callInfo leg_incoming media play leg_incoming flash:Transfer.au } elseif { $choice != "0" && $choice != "3" && $choice != "4" && $choice != "5"} { leg setup $choice callInfo leg_incoming } else { puts "\n\n\t\t **** NO acme-sales or acme-service numbers configured from CLI" fsm setstate CLEANUP return } } } proc act_Cleanup { } { puts "\n(act_Cleanup)Closing call\n" call close } proc optransfer { } { global pilotno leg setup $pilotno callInfo leg_incoming playtone leg_incoming tn_ringback puts "\n(optransfer)Transfer in progress\n" } proc act_InvalidExt { } { global langselect global pilotno puts "\n(act_InvalidExt) Entering Procedure\n" set status [infotag get evt_status] puts "\nDEBUG STATUS: $status\n" if { $status == "ls_007" } { playtone leg_incoming tn_busy timer start leg_timer 5 leg_incoming fsm setstate CLEANUP return } playtone leg_incoming tn_none if { $status != "ls_000"} { puts "\n(act_InvalidExt) Status is not 000. (Status=$status)\n" if { $langselect == "Turkish" } { puts "\n(act_InvalidExt) Playing Turkish prompt\n" media play leg_incoming flash:Transfer_To_Operator.au } if { $langselect == "English" } { puts "\n(act_InvalidExt) Playing English prompt\n" media play leg_incoming flash:Transfer_To_Operator.au } leg setup $pilotno callInfo leg_incoming puts "\n(act_InvalidExt) Cannot connect so Xfer to OP ($pilotno)\n" } } proc donothing { } { puts "\n(donothing) Cannot end up here\n" } init set delay 5 #---------------------------------- # State Machine #---------------------------------- set fsm(any_state,ev_disconnected) "act_Cleanup same_state" set fsm(CALL_INIT,ev_setup_indication) "act_Setup same_state" set fsm(SELECTOPT,ev_collectdigits_done) "act_Collected same_state" set fsm(PLACECALL,ev_leg_timer) "act_Cleanup same_state" set fsm(SELECTOPTENG,ev_collectdigits_done) "act_eng_Collected TRANSFERTOEXT" set fsm(CLEANUP,ev_leg_timer) "act_Cleanup same_state" set fsm(TRANSFERTOOP,ev_media_done) "optransfer same_state" set fsm(TRANSFERTOEXT,ev_collectdigits_done) "exttransfer same_state" set fsm(TRANSFERTOEXT,ev_setup_done) "act_InvalidExt same_state" fsm define fsm CALL_INIT