У меня есть сервер Asterisk 13.23.1 с freePBX 10.13.66-1.
Моя проблема заключается в следующем: в одном IVR, когда звонящий указывает недопустимый пункт назначения (вводит номер, не настроенный в плане IVR), он должен перейти на пункт назначения «недопустимый вариант» (добавочный номер 2300), но вместо этого план IVR переключается на групповой номер 2400. Я ищу журнал вызова и все еще не понимаю, ПОЧЕМУ он переключается на этот пункт назначения.
Вот проблема в логах:
[2019-08-19 11:43:45] VERBOSE[26052][C-00000091] pbx.c: Executing [s@ivr-21:9] Set("DAHDI/i2/961599280-2f", "IVR_MSG=custom/IVR_gesthispania") in new stack
[2019-08-19 11:43:45] VERBOSE[26052][C-00000091] pbx.c: Executing [s@ivr-21:10] Set("DAHDI/i2/961599280-2f", "TIMEOUT(digit)=3") in new stack
[2019-08-19 11:43:45] VERBOSE[26052][C-00000091] func_timeout.c: Digit timeout set to 3.000
[2019-08-19 11:43:45] VERBOSE[26052][C-00000091] pbx.c: Executing [s@ivr-21:11] ExecIf("DAHDI/i2/961599280-2f", "1?Background(custom/IVR_gesthispania)") in new stack
[2019-08-19 11:43:45] VERBOSE[26052][C-00000091] file.c: <DAHDI/i2/961599280-2f> Playing 'custom/IVR_gesthispania.slin' (language 'es')
[2019-08-19 11:44:00] VERBOSE[26052][C-00000091] pbx.c: Invalid extension '225' in context 'ivr-21' on DAHDI/i2/961599280-2f
[2019-08-19 11:44:00] VERBOSE[26052][C-00000091] pbx.c: Executing [i@ivr-21:1] Set("DAHDI/i2/961599280-2f", "INVALID_LOOPCOUNT=1") in new stack
[2019-08-19 11:44:00] VERBOSE[26052][C-00000091] pbx.c: Executing [i@ivr-21:2] GotoIf("DAHDI/i2/961599280-2f", "0?final") in new stack
[2019-08-19 11:44:00] VERBOSE[26052][C-00000091] pbx.c: Executing [i@ivr-21:3] Set("DAHDI/i2/961599280-2f", "IVR_MSG=no-valid-responce-pls-try-again") in new stack
[2019-08-19 11:44:00] VERBOSE[26052][C-00000091] pbx.c: Executing [i@ivr-21:4] Goto("DAHDI/i2/961599280-2f", "s,start") in new stack
[2019-08-19 11:44:00] VERBOSE[26052][C-00000091] pbx_builtins.c: Goto (ivr-21,s,10)
[2019-08-19 11:44:00] VERBOSE[26052][C-00000091] pbx.c: Executing [s@ivr-21:10] Set("DAHDI/i2/961599280-2f", "TIMEOUT(digit)=3") in new stack
[2019-08-19 11:44:00] VERBOSE[26052][C-00000091] func_timeout.c: Digit timeout set to 3.000
[2019-08-19 11:44:00] VERBOSE[26052][C-00000091] pbx.c: Executing [s@ivr-21:11] ExecIf("DAHDI/i2/961599280-2f", "1?Background(no-valid-responce-pls-try-again)") in new stack
[2019-08-19 11:44:00] WARNING[26052][C-00000091] file.c: File no-valid-responce-pls-try-again does not exist in any format
[2019-08-19 11:44:00] WARNING[26052][C-00000091] file.c: Unable to open no-valid-responce-pls-try-again (format (alaw)): No such file or directory
[2019-08-19 11:44:00] WARNING[26052][C-00000091] pbx_builtins.c: ast_streamfile failed on DAHDI/i2/961599280-2f for no-valid-responce-pls-try-again
[2019-08-19 11:44:00] VERBOSE[26052][C-00000091] pbx.c: Executing [s@ivr-21:12] WaitExten("DAHDI/i2/961599280-2f", "10,") in new stack
[2019-08-19 11:44:04] VERBOSE[26052][C-00000091] pbx.c: Executing [2@ivr-21:1] Set("DAHDI/i2/961599280-2f", "__ivrreturn=0") in new stack
[2019-08-19 11:44:04] VERBOSE[26052][C-00000091] pbx.c: Executing [2@ivr-21:2] Goto("DAHDI/i2/961599280-2f", "ext-group,2400,1") in new stack
[2019-08-19 11:44:04] VERBOSE[26052][C-00000091] pbx_builtins.c: Goto (ext-group,2400,1)
[2019-08-19 11:44:04] VERBOSE[26052][C-00000091] pbx.c: Executing [2400@ext-group:1] GotoIf("DAHDI/i2/961599280-2f", "0?cid") in new stack
[2019-08-19 11:44:04] VERBOSE[26052][C-00000091] pbx.c: Executing [2400@ext-group:2] Progress("DAHDI/i2/961599280-2f", "") in new stack
[2019-08-19 11:44:04] VERBOSE[26052][C-00000091] pbx.c: Executing [2400@ext-group:3] Macro("DAHDI/i2/961599280-2f", "user-callerid,") in new stack
[2019-08-19 11:44:04] VERBOSE[26052][C-00000091] pbx.c: Executing [s@macro-user-callerid:1] Set("DAHDI/i2/961599280-2f", "TOUCH_MONITOR=1566207824.2133") in new stack
[2019-08-19 11:44:04] VERBOSE[26052][C-00000091] pbx.c: Executing [s@macro-user-callerid:2] Set("DAHDI/i2/961599280-2f", "AMPUSER=961599280") in new stack
[2019-08-19 11:44:04] VERBOSE[26052][C-00000091] pbx.c: Executing [s@macro-user-callerid:3] GotoIf("DAHDI/i2/961599280-2f", "0?report") in new stack
[2019-08-19 11:44:04] VERBOSE[26052][C-00000091] pbx.c: Executing [s@macro-user-callerid:4] ExecIf("DAHDI/i2/961599280-2f", "1?Set(REALCALLERIDNUM=961599280)") in new stack
надеюсь, кто-нибудь поможет мне понять, почему это происходит и как это исправить.
решение1
Извините за мой поздний ответ. В этом конкретном звонке пользователь в 11:44:04 ввел только "2" на своей клавиатуре во время приложения WaitExten, которое было вызвано в 11:44:00. Это отправило выполнение диалплана на расширение 2 в контексте ivr-21, которое на втором приоритете отправляет выполнение диалплана на расширение 2400 в контексте ext-group. Расширение 2 является допустимым совпадением для 2, которое пользователь ввел на своей клавиатуре до истечения 3-секундного тайм-аута.
В контексте ivr-21 у вас могут быть многозначные имена расширений, начинающиеся с «2x» в дополнение к однозначному имени расширения 2. Было бы лучше, чтобы все имена расширений, начинающиеся с 2, были одинаковой длины, чтобы вы не столкнулись с ошибками из-за тайм-аутов, которые могут возникнуть, пока пользователь вводит цифры.