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

IVR не правильно воспринимает входные данные

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

awsswa
Сообщения: 2390
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: IVR не правильно воспринимает входные данные

Сообщение awsswa »

идей море - но проще посмотреть одним глазком чем гадать неделю
платный суппорт по мере возможностей
baf
Сообщения: 43
Зарегистрирован: 07 авг 2013, 11:20

Re: IVR не правильно воспринимает входные данные

Сообщение baf »

Код: Выделить всё

[ Context 'ivr-1' created by 'pbx_config' ]
  '0' =>            1. Goto(ivr-1,s,1)                            [pbx_config]
  '1' =>            1. Goto(ext-queues,301,1)                     [pbx_config]
  '2' =>            1. Goto(ext-queues,302,1)                     [pbx_config]
  '4' =>            1. Goto(ext-queues,303,1)                     [pbx_config]
  '5' =>            1. Goto(ext-queues,304,1)                     [pbx_config]
  'h' =>            1. Hangup()                                   [pbx_config]
  'hang' =>         1. Playback(vm-goodbye)                       [pbx_config]
                    2. Hangup()                                   [pbx_config]
  'i' =>            1. Set(INVALID_LOOPCOUNT=$[${INVALID_LOOPCOUNT}+1]) [pbx_config]
                    2. GotoIf($[${INVALID_LOOPCOUNT} > 3]?final)  [pbx_config]
                    3. Set(IVR_MSG=custom/invalidnumber_002)      [pbx_config]
                    4. Goto(s,start)                              [pbx_config]
     [final]        5. Playback(custom/invalidnumber_002)         [pbx_config]
                    6. Goto(app-blackhole,hangup,1)               [pbx_config]
  'return' =>       1. Set(_IVR_CONTEXT=${CONTEXT})               [pbx_config]
                    2. Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT_${CONTEXT}}) [pbx_config]
                    3. Set(IVR_MSG=custom/Privetstvie_002)        [pbx_config]
                    4. Goto(s,start)                              [pbx_config]
  's' =>            1. Set(TIMEOUT_LOOPCOUNT=0)                   [pbx_config]
                    2. Set(INVALID_LOOPCOUNT=0)                   [pbx_config]
                    3. Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT}) [pbx_config]
                    4. Set(_IVR_CONTEXT=${CONTEXT})               [pbx_config]
                    5. Set(__IVR_RETVM=)                          [pbx_config]
                    6. GotoIf($["${CDR(disposition)}" = "ANSWERED"]?skip) [pbx_config]
                    7. Answer()                                   [pbx_config]
                    8. Wait(1)                                    [pbx_config]
     [skip]         9. Set(IVR_MSG=custom/Privetstvie_002)        [pbx_config]
     [start]        10. Set(TIMEOUT(digit)=3)                     [pbx_config]
                    11. ExecIf($["${IVR_MSG}" != ""]?Background(${IVR_MSG})) [pbx_config]
                    12. WaitExten(10,)                            [pbx_config]
  't' =>            1. Set(TIMEOUT_LOOPCOUNT=$[${TIMEOUT_LOOPCOUNT}+1]) [pbx_config]
                    2. GotoIf($[${TIMEOUT_LOOPCOUNT} > 2]?final)  [pbx_config]
                    3. Set(IVR_MSG=custom/invalidnumber_002&custom/Privetstvie_002) [pbx_config]
                    4. Goto(s,start)                              [pbx_config]
     [final]        5. Playback(custom/timeout_002)               [pbx_config]
                    6. Goto(app-blackhole,hangup,1)               [pbx_config]
  Include =>        'ivr-1-custom'                                [pbx_config]
  Include =>        'from-did-direct-ivr'                         [pbx_config]
Вот диалплан голосового меню, туда попадает входящий звонок. При наборе 611 переходит на ext i, где задаются переменные на количество не верных вводов и что говорить при этом, затем переходит на ext start. Вот от сюда и начинается косяк: наконецто только сейчас устанавливается задержка в 3 секунды ....
http://asterisk.ru/knowledgebase/Asterisk+cmd+DigitTimeout
Команда DigitTimeout() - вместо нее, используйте: 'Set(TIMEOUT(digit)=timeout)' -
Обратите внимание, что если пользователь ввел последовательность цифр, которые представляют собой правильный номер екстеншена, то ввод будет сразу же завершен, без ожидания, заданного этой командой, времени. Следовательно, факт возникновения этого таймаута означает, что, возможно, набран неполный или неправильный номер и этот факт следует учесть при дальнейшей обработки ввода пользователя.
Затем, почемуто в фоновом режиме играется сообщение, о том что пользователь ввел неверную комбинацию, но т.к. сообщение в фоне то пока оно играется поступает 11(оставшееся от 611) и звонок без проблем улетает на внутренний номер 11. Вот в этом и косяк. Если бы в самом начале была команда Set(TIMEOUT(digit)=3) или сообщение воспроизодилось не в фоне а Playback то косяка бы не было.
Поэтому я прошу помощи сообщества как можно по вашему мнению это исправить? Ведь у меня freepbx

Вообще я думаю это баг freepbx и если вы мне поможете я бы хотел им сообщить об этом, но с начала нужно обсудить этот вопрос.
Opensource навсегда
baf
Сообщения: 43
Зарегистрирован: 07 авг 2013, 11:20

Re: IVR не правильно воспринимает входные данные

Сообщение baf »

Нет идей? или совета
Opensource навсегда
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH