>Поработал еще. Ситуация улучшается. На сегодня конфиг такой: > >proc init { } { ># Инициализация глобальных статических переменных > > puts "\n proc Init >start" > > global param > global phonePattern > global commercePhone > global customerSupport > > infotag set med_language_map 0 >ru > infotag set med_location ru >0 tftp://хххххххххххххххххххххххххххххххх > infotag set med_location ru >1 tftp://хххххххххххххххххххххххххххххххх > infotag set med_language 0 > > > set param(initialDigitTimeout) 10 > set param(interruptPrompt) true > set param(maxDigits) 1 > set phonePattern(1) {[1,2]} > ># Телефонные номера служб "по умолчанию" > set customerSupport "7хххххххххх" > set commercePhone "7хххххххххх" > > puts "\n proc Init >finish" > >} > >proc init_perCallVars { } { ># Процедура инициализирует глобальные динамические переменные > > puts "\n proc Init_perCallVars >start" > > global SetupDone > > set SetupDone 0 > > puts "\n proc Init_perCallVars >finish" >} > >proc act_Setup { } { > ># Процедура принимает входящий звонок и проигрывает приветсвие и просьбу о переводе >телефона в тональный режим > > puts "\n proc act_Setup >start" > > init_perCallVars > leg setupack leg_incoming > leg proceeding leg_incoming > leg connect leg_incoming > SelectMenu > > puts "\n proc act_Setup >finish" > >} > >proc SelectMenu { } { > > puts "\n proc SelectMenu >start" > > global param > global phonePattern > > media play leg_incoming %s500 >_subscriberAbsent.au %s500 _subscriberBusy.au > # Первый файл в >дальнейшем должен быть замещен приветствием и просьбой перевода телефона в тональный >режим. > # Второй файл содержит >информации по номерам > leg collectdigits leg_incoming param >phonePattern > > puts "\n proc SelectMenu >finish" >} > >proc CheckEnteredDigit { } { ># Процедура проверяет событие > > puts "\n proc CheckEnteredDigit >start" > > set collect_status [infotag get >evt_status] > > switch $collect_status { > > "cd_001" { > > media play leg_incoming _nothingEntered.au > > fsm setstate CALLCOMES > > } > > "cd_002" { > > SelectMenu > > fsm setstate CALLCOMES > > } > > "cd_005" { > > fsm setstate PLACECALL > > act_CallSetup > > } > > "cd_006" { > > media play leg_incoming %s500 _wrongMenuPoint.au > > fsm setstate CALLCOMES > > } > } >} > >proc act_CallSetup { } { ># Процедура установки звонка > > puts "\n proc act_CallSetup >start" > > global SetupDone > global customerSupport > global commercePhone > > set SetupDone 1 > set collect_digits [infotag get >evt_dcdigits] > switch $collect_digits { > > 1 { > > leg setup $commercePhone callinfo leg_incoming > > } > > 2 { > > leg setup $customerSupport callinfo leg_incoming > > } > > default { > > media play leg_incoming _wrongMenuPoint.au > > } > } >} > >proc act_CleanupT { } { ># Процедура завершения звонка > > call close >} > >requiredversion 2.0 >init > ># FSM >set ivr_fsm(any_state,ev_disconnected) > "act_Cleanup same_state" >set ivr_fsm(CALLCOMES,ev_setup_indication) > "act_Setup same_state" >set ivr_fsm(CALLCOMES,ev_collectdigits_done) > "CheckEnteredDigit CHECKENTERED" >set ivr_fsm(CHECKENTERED,ev_media_done) > "SelectMenu CALLCOMES" >set ivr_fsm(PLACECALL,ev_media_done) > "act_CallSetup samestate" > >set ivr_fsm(CALLDISCONNECT,ev_disconnect_done) "act_Cleanup >same_state" > >fsm define ivr_fsm CALLCOMES > >На текущий момент нету следующего: >1. Необходимо после истечения таймаута проигрывать аушку типа вы ничего не набрали >и будете соединены с техподдержкой и соединять с customerSupport. >2. После неверно набранной цифры, нужно сделать чтобы после проигрывания аушки "несуществующий >пункт меню" абонент мог повторно нажать цифру и соединиться с нужным >отделом. > >Буду думать дальше. Если у кого есть идеи - прошу поделиться. hsq@inbox.ruЕсли у вас все получилось, пожалуйста, будьте любезны поделиться скриптом.
|