Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Как изменить таймаут ожидания последней цифры при донаборе в IVR [закрыт]

0

Приветствую всех! В нашей компании девять филиалов. В каждом из них работает офисная АТС на FreePBX. Одна из них (в главном офисе) является условно "центральной" АТС, остальные соединены с ней по iax2-транкам. Внутренние локальные номера везде трехзначные. Для звонков в филиалы используются двузначные префиксы 01,02,...09. Т.е. для звонка на номер 555 филиала №2 набирается 02555. На "центральном" Freepbx настроено IVR, в котором включен прямой донабор внутреннего номера (Direct Dial). Донабор успешно работал и для номеров других филиалов, т.е. дозвонившись на IVR центрального офиса, можно было донабрать, например, номер 02555 и звонок переводился на номер 555 филиала №2. Сейчас в связи с открытием еще одного филиала появилась необходимость добавить 10-тый префикс. Внутренние звонки на 10XXX работают нормально, однако с IVR и начались проблемы, т.к. при попытке набора в IVR, например, 10555, астериск сразу отправляет звонок на локальный 105 (экстеншен центрального офиса), игнорируя последние две цифры. Подскажите, как установить таймаут ожидания ввода последней цифры при донаборе?

Контекст этого IVR: [ivr-3] ; Menu

include => from-did-direct-ivr

exten => s,1,Set(IVRCONTEXT${CONTEXT}=${IVRCONTEXT})

exten => s,n,Set(IVRCONTEXT=${CONTEXT})

exten => s,n,Set(_IVRRETVM=)

exten => s,n,GotoIf($["${CDR(disposition)}" = "ANSWERED"]?skip)

exten => s,n,Answer

exten => s,n,Wait(1)

exten => s,n(skip),Set(IVRMSG=custom/menurobot)

exten => s,n(start),Set(TIMEOUT(digit)=3)

exten => s,n,ExecIf($["${IVRMSG}" != ""]?Background(${IVRMSG}))

exten => s,n,WaitExten(20,)

exten => t,1(ivrsel-t),Goto(from-did-direct,137,1)

exten => t,n,Playback(sorry-youre-having-problems)

exten => t,n,Goto(hang,1)

exten => 0,1(ivrsel-0),Goto(ext-fax,500,1)

exten => i,1,Playback(sorry-youre-having-problems)

exten => i,n,Goto(hang,1)

exten => return,1,Set(IVRCONTEXT=${CONTEXT})

exten => return,n,Set(IVRCONTEXT${CONTEXT}=${IVRCONTEXT_${CONTEXT}})

exten => return,n,Set(IVRMSG=custom/menurobot)

exten => return,n,Goto(s,start)

exten => h,1,Hangup

exten => hang,1,Playback(vm-goodbye)

exten => hang,n,Hangup

По идее, Set(TIMEOUT(digit)=3) уже дает время ожидания любой цифры (в т.ч. последней) 3 секунды. Однако, при наборе 10555 переключение на 105 происходит почти мгновенно. В чем дело, почему не срабатывает ожидание ?

удалить переоткрыть спам изменить тег редактировать

спросил 2017-12-26 11:06:44 +0400

leitalex Gravatar leitalex
1 1

обновил 2017-12-26 14:43:35 +0400

Comments

Переписать на Read ?

awsswa ( 2017-12-26 12:09:43 +0400 )редактировать
1

может потому, что вы нарушили принцип пострения атс? freepbx расчитана на фиксированную длину екстеншена. и не расчитана на просмотр внешних роутов в ivr. наймите експерта или перепишите номреной план.

meral ( 2017-12-26 20:13:17 +0400 )редактировать

Вот что происходит, когда программирует сеть АТС не инженер связи или специалист по атс а администратор или еще кто то... непонимающий принципы построения сети АТС.

Вы можете с этой IVR АТС направить на IVR других АТС, там они до наберут другие номера.. Ну а каким способом думаю разберетесь.

.

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

Out ( 2017-12-27 01:49:31 +0400 )редактировать

Так он так и делает. если срабатывае 115 вместо 1155, это говорит о том, что там есть транк с префиксом 115. но это бредово на самом деле, надо непересекающийся диаплан(удалить нафик 115 екст).

meral ( 2017-12-27 04:11:56 +0400 )редактировать

Нет, не сразу с этой IVR отправлять на абонентов другой АТС, а делать абонента на этой АТС, на нем пере адресацию на номер с префиксом c направлением на нужную АТС, а там этот номер на IVR.

Или к примеру сделать чтобы при нажатии на 7 (к примеру) улетал на IVR другой АТС.

Понятно, что кривой костыль... Пусть дважды набирают... или менять весь диалплан на всех АТС.

Out ( 2017-12-27 11:12:41 +0400 )редактировать

чтото у вас сильно сложно. можно просто в from-did-direct-ivr добавить одну простую строчку 105XX. но это фигня. надо фиксить диалплан, иначе будет bad experience.

meral ( 2017-12-27 11:41:56 +0400 )редактировать

meral, каким именно образом предлагаете "фиксить диалплан" ?

leitalex ( 2017-12-27 17:17:12 +0400 )редактировать

Никаких "транков с префиксом 115" нет. На центральной АТС есть около пятисот экстеншенов 101,102 и т.д. Они и срабатывают при донаборе 10XXX. Удалить|поменять их не представляется возможным.

Отправлять на IVR других АТС считаю неудобным для абонентов. Нужно, чтобы человек мог сразу донабрать пятизначный номер, который ему известен, не задумываясь о том, в каком филиале этот номер. И это прекрасно работает с префиксами 01-09.
А "делать абонента на этой АТС, на нем пере адресацию на номер с префиксом" - это очень неудобно в администрировании, да просто нереально для большого количества номеров.

leitalex ( 2017-12-27 17:20:46 +0400 )редактировать

"freepbx расчитана на фиксированную длину екстеншена" - а данное утверждение вообще меня изрядно певеселило )) Экстеншены в asterisk, и в частности во freepbx, вполне могут быть разной длины, в них могут использоваться буквы и.т.д., на то он и астериск. Кстати, для внутренних номеров, например 507 и 5071, донабор в IVR работает как надо: успешно переключает на 5071, а при вводе 507 ждет те самые 3 секунды и потом только переводит на 507.

leitalex ( 2017-12-27 17:57:05 +0400 )редактировать

Ну и? Расскажите нам... еще что нибудь...

Out ( 2017-12-28 00:55:09 +0400 )редактировать

Конкретные ответы по существу вопроса будут?

leitalex ( 2017-12-28 09:10:24 +0400 )редактировать

"freepbx расчитана на фиксированную длину екстеншена" - а данное утверждение вообще меня изрядно певеселило )) " Так и ответьте. IVR рассчитано срабатывать как только набранный номер совпал с "внутренним" номером системы.

.

Недаром в параметре "Direct Dial" вы выставляете "Extensions"... т.е. не транк.. не фантомная или не другая IP PBX...

.

И "TIMEOUT" служит не для набора 105 или 1051 а для того, чтобы абонент успел набрать номер "ЭТОЙ СИСТЕМЫ" или другой, если в этой системе нет такого номера...

Странно что у вас нет номера на этой системе 1, а на других 1Х, 1ХХ, 1ХХХ, 1ХХХХ и т.д.... Было бы еще веселей....

Вы не пробовали сделать в адресном пространстве 192.168.1.* сделать gateway c IP 192.168.1.* на котором указать что IP 192.168.1.* находится в другой подсети? Где то там за этим шлюзом...

У вас это должно работать...

Out ( 2017-12-28 11:02:13 +0400 )редактировать

а так и есть. если вас чтото веселит, то почитайте диалплан from-did-direct-ivr

meral ( 2017-12-28 11:39:31 +0400 )редактировать

самый простой вариант пофиксить - перенести номер 105. использовать то вы можете все что угодно, но по сути работать будет плохо с точки зрения пользователя. да работать можно заставить. но пользователи не понимают задержки больше 1 секунды. причем эта секунда включает еще и комутацию с другой атс.

meral ( 2017-12-28 11:41:13 +0400 )редактировать

Я уже написал выше, что изменение номеров не представляется возможным. При вводе в строй префикса 10 мне придется удалить экстеншены 101-109, при вводе 11 - со 110 по 119 и т.д., а все эти номера используются юзерами и у многих занесены в контакты

leitalex ( 2017-12-28 14:37:29 +0400 )редактировать

1 Ответ

0

Таймаут последней - никак.

Вы можете поменять такие таймауты.

TIMEOUT(timeouttype)

Gets or sets various channel timeouts. The timeouts that can be manipulated are:

absolute: The absolute maximum amount of time permitted for a call. A
setting of 0 disables the timeout.

digit: The maximum amount of time permitted between digits when the
user is typing in an extension. When this timeout expires,
after the user has started to type in an extension, the
extension will be considered complete, and will be
interpreted. Note that if an extension typed in is valid,
it will not have to timeout to be tested, so typically at
the expiry of this timeout, the extension will be considered
invalid (and thus control would be passed to the 'i'
extension, or if it doesn't exist the call would be
terminated). The default timeout is 5 seconds.

response: The maximum amount of time permitted after falling through a
series of priorities for a channel in which the user may
begin typing an extension. If the user does not begin typing an
extension in this amount of time, control will pass to the
't' extension if it exists, and if not the call would be
terminated. Once the user begins to type an extension Asterisk
will wait for digit timeout to be reached and response timeout has
no effect. The default timeout is 10 seconds.

Тоесть либо между всеми, либо никак.

ссылка удалить спам редактировать

ответил 2017-12-26 12:49:00 +0400

meral Gravatar meral flag of Ukraine
22677 24 20 173
http://pro-sip.net/

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2017-12-26 11:06:44 +0400

Просмотрен: 163 раз

Обновлен: Dec 26 '17

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.