The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Написание IVR"
Отправлено рфыр, 28-Ноя-06 19:07 
>Поработал еще. Ситуация улучшается. На сегодня конфиг такой:
>
>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

Если у вас все получилось, пожалуйста, будьте любезны поделиться скриптом.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру