- Помогите разобраться с WaitExten
- Re: Помогите разобраться с WaitExten
- Re: Помогите разобраться с WaitExten
- Не работает WaitExten
- Re: Не работает WaitExten
- Re: Не работает WaitExten
- Re: Не работает WaitExten
- Re: Не работает WaitExten
- Настройка голосового меню (IVR) на Asterisk
- Принцип настройки
- Базовая настройка
- Голосовое дерево
- Таймаут по времени ожидания и неправильные действия
- Если не работает донабор
- Примеры настроек
- 1. Расписание
- Мгновенная обработка WaitExten()
- Comments
- 2 Ответа
- Comments
Помогите разобраться с WaitExten
Приветствую!
Ситиуцая такая:
[inc]
include => main
exten => s,1,Background(beep)
exten => s,2,Answer
exten => s,3,WaitExten
[main]
include =>
exten => 666,1,Goto(inc,s,1)
exten => 100,1,Macro(dialexten,100,SIP/tel100)
Сделано для того, чтобы осуществлять донабор на внутренние номера. Изначально звонок поступает на addpac, который делает direct call на 666, где собственно и осуществляется донабор.
НО!
Если нажимаю, например, цифру 4, то в логах астериска видно, что нет екстеншена, начинающего с такой цифры. Так оно и есть.
А когда я набираю номер существующего екстеншена, то происходит то, что хорошо видно в логе.
Т.е., если существует такой екстеншн, то WaitExten подставляет сразу две цифры.
Помогите разобраться!
Re: Помогите разобраться с WaitExten
Invalid extension ’11’, but no rule ‘i’ in context ‘out’
номер уходит в контекст out, его я что то не заметил в твоем посте.
Re: Помогите разобраться с WaitExten
это не важно.
Раньше он назывался out, а теперь inc.
Пусть будет так:
[out]
include => main
exten => s,1,Background(beep)
exten => s,2,Answer
exten => s,3,WaitExten
[main]
exten => 666,1,Goto(inc,s,1)
exten => 100,1,Macro(dialexten,100,SIP/tel100)
Суть в другом
Если я делаю донабор сушествуюшего екстеншена, то подставляются сразу две цифры. Если екстеншена нет, то одна.
Источник
Не работает WaitExten
Подскажите в чём проблема.
Создал интерактивное меню:
exten => *45,1,Answer
exten => *45,n,Wait(1)
exten => *45,n,SetMusicOnHold(default)
exten => *45,n,Background(seconds)
exten => *45,n,WaitExten(10)
exten => 1,1,Answer
exten => 1,n,Playback(1)
exten => 1,n,Dial(SIP/11@device)
exten => 2,1,Answer
exten => 2,n,Playback(2)
exten => 2,n,Dial(SIP/12@device)
послен абора номера *45 в линию проговаривается слово second
ожидание 10 сек
и чтобы я не нажимал — отбой
З.Ы.: в линии тоновые наборы слышны в обоих трубках
я смотрю в консоль, вижу отработку экстеншенов
выполняется
trixbox*CLI>
— Executing [*45@from-internal:1] Answer(«SIP/90-08781b68», «») in new stack
— Executing [*45@from-internal:2] Wait(«SIP/90-08781b68», «1») in new stack
— Executing [*45@from-internal:3] SetMusicOnHold(«SIP/90-08781b68», «default») in new stack
— Executing [*45@from-internal:4] BackGround(«SIP/90-08781b68», «seconds») in new stack
— Playing ‘seconds’ (language ‘en’) — в этот момент я слышу в трубке слово «second»
— Executing [*45@from-internal:5] WaitExten(«SIP/90-08781b68», «10») in new stack
— пауза в 10 сек, в течении которой я пытаюсь нажать кнопки
— Timeout on SIP/90-08781b68, continuing.
— Executing [*45@from-internal:6] Congestion(«SIP/90-08781b68», «20») in new stack
написал
в zapata.conf — relaxdtmf=yes
в sip.conf — dtmfmode = rfc2833
в Dial в генеральных настройках — tTr
Почемуто после набранного номера при снятой трубке asterisk не обрабатывает нажание клавиш.
ОСь — TrixBox 2.5
Телефон — D-Link DPH-140S
Re: Не работает WaitExten
Re: Не работает WaitExten
то что я описал — это создано самим TrixBox при помощи web-консоли, я просто удалил лишнее (ну зачем расписывать 30 строк ненужных переходов?)
А голословно заявить, что не в том ишется и я могу.
Если Вам чегото не нравится — просто промолчите и всё.
Если непонятно — спросите.
А я считаю — что в том, и по логам вижу, что в том.
Re: Не работает WaitExten
Создал интерактивное меню:
exten => *45,1,Answer
exten => *45,n,Wait(1)
exten => *45,n,SetMusicOnHold(default)
exten => *45,n,Background(seconds)
exten => *45,n,WaitExten(10)
exten => 1,1,Answer
exten => 1,n,Playback(1)
exten => 1,n,Dial(SIP/11@device)
exten => 2,1,Answer
exten => 2,n,Playback(2)
exten => 2,n,Dial(SIP/12@device)
Re: Не работает WaitExten
Создал интерактивное меню:
exten => *45,1,Answer
exten => *45,n,Wait(1)
exten => *45,n,SetMusicOnHold(default)
exten => *45,n,Background(seconds)
exten => *45,n,WaitExten(10)
exten => 1,1,Answer
exten => 1,n,Playback(1)
exten => 1,n,Dial(SIP/11@device)
exten => 2,1,Answer
exten => 2,n,Playback(2)
exten => 2,n,Dial(SIP/12@device)
Я всё прекрасно понимаю, что спрашиваю и рот я никому не затыкаю.
Т.к. Вы умнее меня, то не надо этим кичиться и писать общие фразы. То, что здесь во втором посте было написано, я мог написать почти сразу после установки TrixBox.
А здесь написал, потому-что это спецально для TrixBox создано, а там посмотрите предпоследнее сообщение в созданном топике.
Теперь по вопросам:
1. IRV можно создать основными двумя способоми (не мне вас учить и я могу ошибаться). И вопрост не в том, что не работает интерактивное меню, а в том, что оно отрабатывается, но в момент работы WaitExten не воспринимает набор клавиш. Точно такая же проблема существует в голосовой почте: я делаю вызов, мне проговаривает введите имя, ждёт секунд 10, после чего говорит «введите пароль», опять сек 10 ждёт и после этого сообщает, что имя и пароль ошибочны. При этом я могу набирать, что угодно — ответ одинаков (только не надо писать, что я неправильно набираю имя и пароль или у меня не настроен голосовой ящик:-) )
2. Чтобы было понятно, я подобную ситуацию тестировал на FreeBSD+Asterisk, там после нажатия клавиши на телефоне в консоль кидалось сообщение подобного типа:
— Executing [1@from-internal:1] Answer — точно не помню, могу ошибиться
3. Что написал — то и происходит. Я снимаю трубку на IP-телефоне, набираю «*45», слышу в ответ слово «second» и чтобы я не нажимал после 10 сек отбой.
4. Виноват, опечатался при наборе. Строчки «З.Ы.: в линии тоновые наборы слышны в обоих трубках» не должно быть.
З.Ы.: под тем что здесь называется консолью я подразумеваю Pytty и команду «Asterisk -r»
Источник
Настройка голосового меню (IVR) на Asterisk
Интерактивное голосовое меню, или голосовое дерево, IVR меню или просто, IVR используется для возможности позвонившему подключиться к конкретному сотруднику компании или соединиться с линией поддержки определенной категории. Также, с помощью IVR можно получить необходимую информацию без ответа со стороны оператора, выбрав интересующую информацию. Другими словами, это система, взаимодействующая с абонентом и реагирующая на его команды.
Принцип настройки
IVR настраивается в плане набора Aterisk (dialplan) — в конфигурационном файле extensions.conf.
Сначала мы проигрываем запись с голосовым приветствием и предложением ввести номер в тональном режиме. В том же файле мы обрабатываем вводимую информацию, перекидывая абонента на другие диалплан, очередь или конкретного сотрудника.
Записать голосовое приветствие с просьбой ввода номера можно с помощью различных программ звукозаписи. Asterisk работает с форматами .waw, .gsm. В случае наличия другого формата, можно воспользоваться пакетом для конвертации — sox. Также можно загрузить и установить готовый список голосов на русском, который частично, можно использовать.
Базовая настройка
Открываем конфигурационный файл:
[outcaling]
.
exten => 222,1,Answer()
same => n,Background(basic-pbx-ivr-main)
exten => _XXX,1,Dial(SIP/$
* в данном примере, при звонке на номер 222 нам проигрывается голосовая запись basic-pbx-ivr-main (из каталога /var/lib/asterisk/sounds/ ). Когда мы вводим трехзначный добавочный номер, нас соединяет Asterisk с этим номером. Предполагается, что наш основной диалплан называется outcaling.
Перезапускаем настройки диалплана:
asterisk -x «dialplan reload»
Голосовое дерево
Теперь настроим возможность выбора отдела, с которым абонент захочет соединиться.
Приводим наш диалплан к следующему виду:
exten => 333,1,Answer()
exten => 333,2,Background(basic-pbx-ivr-main)
exten => 333,3,WaitExten(5)
exten => 1,1,Goto(managers,s,1)
exten => 2,1,Goto(support,s,1)
[managers]
exten => s,1,Ringing
same => n,Wait(1)
same => n,Background(/var/lib/asterisk/sounds/wav/managers)
same => n,Waitexten(5)
exten => 1,1,Dial(SIP/201)
exten => 2,1,Dial(SIP/202)
exten => 0,1,Goto(outcaling,333,1)
[support]
exten => s,1,Ringing
same => n,Wait(1)
same => n,Background(/var/lib/asterisk/sounds/wav/support)
same => n,Waitexten(5)
exten => 1,1,Dial(SIP/101)
exten => 2,1,Dial(SIP/102)
exten => 0,1,Goto(outcaling,333,1)
- 333 — внутренний номер, позвонив на который мы услышим голосовое меню.
- WaitExten(5) — система ожидает ввода номера в течение 5 секунд.
- 1,1,Goto(managers,s,1) — если абонент ввел 1, переходим к диалплану managers, пункту s,1.
- 2,1,Goto(support,s,1) — если абонент ввел 2, переходим к диалплану support, пункту s,1.
- Background(/var/lib/asterisk/sounds/wav/managers) — запись голосового меню для managers.
- Background(/var/lib/asterisk/sounds/wav/support) — запись голосового меню для support.
Перечитываем настройки диалплана:
asterisk -x «dialplan reload»
Таймаут по времени ожидания и неправильные действия
Добавим обработку неправильно введенной цифры и превышение времени ожидания. В вышеуказанном примере просто происходит отбой звонка.
Данное поведения указывается в диалплане с помощью ключей t и i. Добавим их в наш конфиг:
exten => 333,1,Answer()
same => n,Background(basic-pbx-ivr-main)
same => n,WaitExten(5)
exten => 1,1,Goto(managers,s,1)
exten => 2,1,Goto(support,s,1)
exten => t,1,Dial(SIP/101)
exten => i,1,Background(invalid)
same => n,Goto(outcaling,333,3)
* где t,1,Dial(SIP/101) — позвонить по номеру 101, если будет превышен таймаут ожидания; i,1,Background(invalid) — сообщить о том, что введен неправильный номер.
Если не работает донабор
Если во время тестирования возникнут проблемы при донаборе внутреннего номера, необходимо проверить режим DTMF. В двух словах, это аналоговый сигнал для набора телефонного номера. Он может отправляться разными способами: inband, rfc2833 / rfc4733, info. При возникновении проблем, попробуйте в настройках клиента выставить rfc2833 или inband.
На стороне Asterisk также можно настроить sip-пир на определенный способ передачи DTMF:
* настройка может быть задана на глобальном уровне, уровне шаблона или для конкретного пира.
Примеры настроек
Рассмотрим некоторые дополнительные примеры настроек диалплана, которые будут полезны при конфигурировании автоинформатора.
1. Расписание
а) Мы можем вызывать различные контексты диалплана в зависимости от времени суток. Для этого вызываем приложение GotoIfTime:
exten => ,1,NoOp(Задаем расписание колл-центра)
same => n,GotoIfTime(08:00-19:59,mon-fri,*,*?working_hours,s,1)
same => n,Goto(not_working_hours,s,1)
[working_hours]
exten => s,1,NoOp(Рабочие часы)
same => .
[not_working_hours]
exten => s,1,NoOp(Нерабочие часы)
same => .
* в данном примере при звонке с 08 до 20:00 в будние дни нас перекинет в контекст working_hours, иначе — в not_working_hours.
б) Чтобы во время нашей работы в рабочие часы мы могли проверить работу автоинформатора в нерабочее время, можно задать исключение для определенного номера:
exten => ,1,NoOp(Задаем расписание колл-центра)
same => n,GotoIf($[«$
same => n,GotoIfTime(08:00-19:59,mon-fri,*,*?working_hours,s,1)
same => n,Goto(not_working_hours,s,1)
* в данном примере мы добавили строку с проверкой исходящего номера. Если мы звоним с телефона 9062504869, то звонок всегда перекидывать в контекст not_working_hours.
в) Также мы можем менять направление диалплана в зависимости от времени:
exten => s,1,NoOp(Разные пути в зависимости от времени и дня)
same => n,GotoIfTime(10:00-13:59,mon-fri,*,*?true:false)
same => n(true),NoOp(TRUE)
same => n,Background(wav/true)
same => n,Hangup()
same => n(false),NoOp(FALSE)
same => n,Background(wav/false)
same => n,Hangup()
* в данном примере мы проиграем файл wav/true, если звонок будет совершен в будние дни с 10 до 14, и wav/false — в любое другое время.
Источник
Мгновенная обработка WaitExten()
Подскажите как можно сделать так что бы при вводе цифры во время WaitExten система не дожидалась истечения таймаута, а сразу переходила к введенному экстеншину (как собственно работают ИВР у мобильных операторов)?
godlike
814 ● 92 ● 24 ● 62
Comments
А с чего Вы взяли , что команда не сразу отрабатывает нажатие?
ну наверно потому что я поставил WaitExten(10) и нажимаю 1 в самом начале но попадаю на 1 экстеншн только когда пройдет 10 сек
хотя вру, через 7 секунд хотя стоит 10
2 Ответа
чтобы по 1 отрабатывалось сразу надо писать так
тоесть ! срабатывает именно как «больше символов с таким префиксом быть не может».
соответвенно если вы его не поставили, оно логично ожидает продолжения ввода, чтоб отрабатывало 10,11,119911 и так далее.
ну еще можно таймаут поставить
у вас срабатывает digit наверное
meral
23217 ● 24 ● 20 ● 175
http://pro-sip.net/
Comments
Масло маслянное получилось. _1! — читается , как вхождение множества номеров , начинающихся с единицы и заканчивающихся этой единицей.
зато работает 🙂 Спасибо meral
м? это единственный способ так сказать.или вы знаете другой? _1 нефига на прекращает ожидания набора дальнейших цифр. ну развечто можн попробывать 1!, но так вродетоже не работает.
Это кому комментарий адресован?
это по поводу масла масляного. знаешь немасляный метод?) ну кроме диалпана в которм у всех екстеншенов длина одинаковая.
в одном контексте , где присутствует WaitExten достаточно нарисовать exten = 1,1,Noop() , что будет делать тоже самое. Единственно , что если в этом контексте есть шаблоны «_1X.» , то тогда будет таймаут. Но если есть такой шаблон , то видимо он для чего то нужен?
неа. если есть 1 и 20 или 3X. например в одном контексте, то будет ждать ввода после 1. а после _1! ждать не будет.
Это зависит не от WaitExten, а:
1 — от диалплана. Если там только 1-но символьные экстеншены, то будит отрабатываться сразу, если 2-х и более, то соотведственно будет ждать не будет ли ввод второй цифры и т.д.
2- И от заданного параметра DigitTimeout, в случае если в диалплане есть 2-х или более значные экстаншены.
Источник