Чат  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Динамическое голосовое меню

Проблемы и их решения Asterisk как такового

Модератор: april22

Динамическое голосовое меню

Сообщение Razor2k » 16 май 2018, 14:03

Добрый день.
Есть задача, посредством asterisk перечислить абоненту его текущие заказы (от 2 до 9) с выбором одного заказа из перечисленного списка (от 1 до Х, где Х - текущее кол-во заказов). Дополнительное условие, если клиент нажал клавишу, которая выходит из диапазона перечисляемого списка, то воспроизведение не должно останавливаться.

Мой решение задачи основывается на выборе опции m и установки четвертого параметра функции Background, в котором подключается нужный контекст, в зависимости от кол-ва заказов абонента:
Код: выделить все
[test-ivr]
exten => s,1,AGI(gen-msg,${CHANNEL},${EXTEN}) ; формируем голосовой файл с перечисляемыми заказами и пишем его в /tmp/asterisk/${CHANNEL}
same => n,Set(ORDERS_COUNT=ODBC_GET_ORDERS_COUNT(${EXTEN})) ; получаем кол-во заказов из БД
same => n,Answer
same => n,Set(RETURN_CONTEXT=${CONTEXT}) ; Запоминаем контекст в который необходимо вернуться
same => n,Background(/tmp/asterisk/${CHANNEL}&silence/5,m,,order-count-${ORDERS_COUNT}) ; Запускаем чтение подготовленного файла, с поиском выбора в нужном контексте
same => n(order-select),Verbose(0,"Abonent chose ${EE}")
same => n,Hangup

[order-count-2]
exten => _[1-2],1,Set(EE=${EXTEN})
same => n,Goto(${RETURN_CONTEXT},s,order-select)
[order-count-3]
exten => _[1-3],1,Set(EE=${EXTEN})
same => n,Goto(${RETURN_CONTEXT},s,order-select)
[order-count-4]
exten => _[1-4],1,Set(EE=${EXTEN})
same => n,Goto(${RETURN_CONTEXT},s,order-select)
[order-count-5]
exten => _[1-5],1,Set(EE=${EXTEN})
same => n,Goto(${RETURN_CONTEXT},s,order-select)
[order-count-6]
exten => _[1-6],1,Set(EE=${EXTEN})
same => n,Goto(${RETURN_CONTEXT},s,order-select)
[order-count-7]
exten => _[1-7],1,Set(EE=${EXTEN})
same => n,Goto(${RETURN_CONTEXT},s,order-select)
[order-count-8]
exten => _[1-8],1,Set(EE=${EXTEN})
same => n,Goto(${RETURN_CONTEXT},s,order-select)
[order-count-9]
exten => _[1-9],1,Set(EE=${EXTEN})
same => n,Goto(${RETURN_CONTEXT},s,order-select)

Есть ли более оптимальное решение данной задачи?
Razor2k
 
Сообщений: 9
Зарегистрирован: 14 май 2018, 11:47

Re: Динамическое голосовое меню

Сообщение zzuz » 16 май 2018, 14:10

Вы просите провести аудит вашего диалплана , который используется в коммерческих целях?
Линия24 - Системы Массового Телефонного Обслуживания
Аватар пользователя
zzuz
 
Сообщений: 1506
Зарегистрирован: 21 сен 2010, 13:33

Re: Динамическое голосовое меню

Сообщение Razor2k » 16 май 2018, 14:18

А кто-то использует asterisk не в коммерческих целях, покупают номер у АТС, заводят SIP-транк себе домой и настраивают IVR на маму, папу, брата, сестру и кошку?

У меня просто возник вопрос по отдельному пункту IVR, который я не просто задал, а еще и приложил свое решение, чтобы было понятно, что я имею ввиду. Если вам проще ответить на вопрос без моего решения, то не смотрите его, а просто расскажите, как вы решали подобную задачу.
Razor2k
 
Сообщений: 9
Зарегистрирован: 14 май 2018, 11:47

Re: Динамическое голосовое меню

Сообщение BorisTheBlade » 16 май 2018, 15:03

Мне кажется разумнее информировать клиента о том что что-то пошло не так, типа - "вы нажали 3, но у вас только 2 позиции"
А так у вас вполне себе решение получилось учитывая специфические условия.
BorisTheBlade
 
Сообщений: 98
Зарегистрирован: 14 фев 2011, 15:24

Re: Динамическое голосовое меню

Сообщение Razor2k » 16 май 2018, 15:31

BorisTheBlade писал(а):Мне кажется разумнее информировать клиента о том что что-то пошло не так, типа - "вы нажали 3, но у вас только 2 позиции"

Вопрос, в какой момент времени информировать? Если, например, список в 5 позиций и абонент нажал 7 в то время, когда читалась информация о 4 позиции.
Если говорить после оглашения всего списка, то непонятно, как это организовать без прерывания оглашения списка.
Если говорить сразу после того, как нажал, то потом необходимо будет повторять сначала весь список, что долго.
Поэтому был выбран такой план, что на необрабатываемые кнопки не будет никакой реакции.
Razor2k
 
Сообщений: 9
Зарегистрирован: 14 май 2018, 11:47

Re: Динамическое голосовое меню

Сообщение ded » 16 май 2018, 16:44

Надо подтверждать каждую позицию списка Да?/Нет?, и тогда переходить к следующей позиции списка.
ded
 
Сообщений: 13340
Зарегистрирован: 26 авг 2010, 19:00

Re: Динамическое голосовое меню

Сообщение Repz » 17 май 2018, 00:41

Repz
 
Сообщений: 129
Зарегистрирован: 04 мар 2015, 12:35

Re: Динамическое голосовое меню

Сообщение virus_net » 17 май 2018, 08:02

Razor2k писал(а):Вопрос, в какой момент времени информировать

Так можно же читать списком и запоминать последнюю озвученную позицию и начинать с нее или после нее при не верном ответе.
А вообще пора переходить на распознавание речи и уходить от топорного "нажмите Х для того чтобы..."
Уж "да" или "нет" распознается 100% всегда. Подтверждаю это многочисленными тестами.
мой SIP URI sip:virus_net@asterisk.ru или sip:dn@postmet.com
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Аватар пользователя
virus_net
 
Сообщений: 2206
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва


Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

© 2008 — 2018 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH