Здравствуйте, создал простейшую схему в Астериске, IVR используется как голосовое приветствие.
Хочу реализовать такое:
"Здравствуйте вы позвонили в "Кафешантан", если вы хотите соедениться с Кафетерием нажмите 1, если вы хотите соедениться с Пекарней нажмите 2, если вы хотите соедениться с Рестораном нажмите 3."
Если звонящий нажимает 1 то он попадает на следующее голосовое меню
"Если вы хотите соедениться с администратором нажмите 1, если вы хотите соедениться с продавцом нажмите 2, если вы хотите прослушать информацию о часах работы нажмите 3"
Если я правильно понимаю, то для подобной реализации нужен будет дополнительный контекст на каждую новую ветку IVR ?
Как в диалплане реализуется нажатие цифровых клавиш ?
Конфиг диалплана:
[globals]
[general]
autofallthrough=yes
Спасибо, буду признателен, если подскажите:
Во время WaitExten звонящий может набрать как 1,2,3,4,5 так и Внутренний номер 667 ?
same => n,Goto(somewhere) - что здесь означает same => n ?
Правильно ли я понимаю, что первая цифра означает, номер клавиши ?
exten => 1,1,Goto(ivr-menu-1,s,1)
exten => 2,1,Goto(ivr-menu-2,s,1)
exten => 3,1,Goto(ivr-menu-3,s,1)
karibskii_koks: Это не цифра, это собственно набранный добавочный номер, он может быть и многозначным. Только учтите, если есть и экстеншин 6 и экстеншин 6XX, то при вводе первой шестёрки Asterisk будет ждать несколько секунд, не появится ли следующая цифра номера. Если уже введённый номер уникален, то переход будет выполнен сразу.
Rsa97: тренируясь, решил создать многоуровневый IVR с нажатием кнопок.
Однако при нажатии клавиши 1, ничего не происходит.
В чем может быть проблема, в том, что я неверно указал строку в диалплане, или действительно астериск не получает 1 от звонящего ?
Консоль возвращает мне следующее:
Executing [468174@zadarma-in:1] Goto("SIP/468174-00000077", "ivr-main,s,1") in new stack
-- Goto (ivr-main,s,1)
-- Executing [s@ivr-main:1] Answer("SIP/468174-00000077", "") in new stack
-- Executing [s@ivr-main:2] BackGround("SIP/468174-00000077", "/etc/asterisk/ivr/8") in new stack
-- Playing '/etc/asterisk/ivr/8.slin' (language 'en')
-- Executing [s@ivr-main:3] WaitExten("SIP/468174-00000077", "5") in new stack
[Dec 12 19:54:19] WARNING[21212][C-00000038]: pbx_builtins.c:1021 pbx_builtin_waitexten: Timeout but no rule 't' or 'e' in context 'ivr-main'
== Spawn extension (ivr-main, s, 3) exited non-zero on 'SIP/468174-00000077'
karibskii_koks: Timeout but no rule 't' or 'e' in context
Значит Asterisk не услышал цифры, а при отсутствии экстеншинов t или e не знает куда передать управление.
Попробуйте поиграть с параметром dtmfmode в настройках SIP-канала
karibskii_koks: Скорее всего да. Для SIP надо пропустить порт сигнального протокола, обычно 5060, и порты для RTP-трафика, по умолчанию UDP от 10000 до 20000.
Как вариант, на входном шлюзе можно настроить, чтобы все пакеты с сервера SIP-провайдера шли на Asterisk.