Страница 1 из 2

Не обрабатывается нажатие "#" через голосовое меню

Добавлено: 02 дек 2019, 16:18
genady555
FreePBX 14.0.13.6
Asterisk 13.22.0
В голосовом меню при нажатии "#" автоинформатор говорит - "мы не получили действительный ответ..." хотя в настройках голосового меню есть обработка нажатия "#":
exten => #,1,Macro(blkvm-clr,)
exten => #,n,Set(__NODEST=)
exten => #,n,Set(__ivrreturn=0)
exten => #,n(ivrsel-#),Goto(ivr-1,s,1)

в логах при нажатии на # :
[2019-12-02 16:05:03] VERBOSE[14221][C-0000016b] app_read.c: User entered nothing.

Re: Не обрабатывается нажатие "#" через голосовое меню

Добавлено: 03 дек 2019, 11:56
Wapo
На телефонном аппарате решётка зачастую просто команда завершения ввода, а не посылка этого символа

Re: Не обрабатывается нажатие "#" через голосовое меню

Добавлено: 03 дек 2019, 13:05
genady555
Пробовал с IP-телефонов Cisco и с сотовых - такая же ситуация.
Возможно символ "#" является каким-то спецсимволом в астериске, поэтому не обрабатывается?

Re: Не обрабатывается нажатие "#" через голосовое меню

Добавлено: 03 дек 2019, 18:38
ded
logger.conf

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

console => ..........,dtmf
logger reload

Re: Не обрабатывается нажатие "#" через голосовое меню

Добавлено: 04 дек 2019, 09:30
genady555
настроил логирование dtmf:
[2019-12-04 09:27:31] DTMF[18676][C-000001e0]: channel.c:4142 __ast_read: DTMF begin '#' received on SIP/trunk_ccm1-00000337
[2019-12-04 09:27:31] DTMF[18676][C-000001e0]: channel.c:4146 __ast_read: DTMF begin ignored '#' on SIP/trunk_ccm1-00000337
[2019-12-04 09:27:31] DTMF[18676][C-000001e0]: channel.c:4056 __ast_read: DTMF end '#' received on SIP/trunk_ccm1-00000337, duration 100 ms
[2019-12-04 09:27:31] DTMF[18676][C-000001e0]: channel.c:4126 __ast_read: DTMF end passthrough '#' on SIP/trunk_ccm1-00000337
Получается что # все-таки передается, тогда тем более не понятно почему не обрабатывается.

Re: Не обрабатывается нажатие "#" через голосовое меню

Добавлено: 04 дек 2019, 11:41
ded
1) У вас вот этот диал-план

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

exten => #,1,Macro(blkvm-clr,)
exten => #,n,Set(__NODEST=)
exten => #,n,Set(__ivrreturn=0)
exten => #,n(ivrsel-#),Goto(ivr-1,s,1)
в каком контексте обрабатывается?

2) Что за метка - ivrsel-# ? Переход на неё где у вас указан?

Re: Не обрабатывается нажатие "#" через голосовое меню

Добавлено: 04 дек 2019, 13:16
genady555
Выложу весь контекст:

[ivr-2] ; menu-22
include => ivr-2-custom
include => from-ivr-directory-Disabled
exten => fax,1,Goto(${CUT(FAX_DEST,^,1)},${CUT(FAX_DEST,^,2)},${CUT(FAX_DEST,^,3)})

exten => s,1,Set(INVALID_LOOPCOUNT=0)
exten => s,n,Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT})
exten => s,n,Set(_IVR_CONTEXT=${CONTEXT})
exten => s,n,Set(__IVR_RETVM=)
exten => s,n,GotoIf($["${CHANNEL(state)}" = "Up"]?skip)
exten => s,n,Answer
exten => s,n(skip),Set(IVR_MSG=custom/menu_2)
exten => s,n(start),Set(DIGITS=)
exten => s,n,Set(IVREXT=)
exten => s,n,Set(NODEFOUND=0)
exten => s,n,Set(LOCALEXT=0)
exten => s,n,Set(DIREXT=0)
exten => s,n(beforewhile),ExecIf($["${IVREXT}" != ""]?Set(DIGITS=${DIGITS}${IVREXT}))
exten => s,n,While($["${NODEFOUND}" = "0"] )
exten => s,n,Read(IVREXT,${IVR_MSG},1,,0,5)
exten => s,n,Set(IVR_MSG=)
exten => s,n,GotoIf($["${READSTATUS}" = "TIMEOUT" & "${DIGITS}" != ""]?i,1)
exten => s,n,GotoIf($["${READSTATUS}" = "TIMEOUT" & "${IVREXT}" = ""]?t,1)
exten => s,n,Noop(${DB(DEVICE/${DIGITS}${IVREXT}/user)})
exten => s,n,GotoIf($["${DIALPLAN_EXISTS(${CONTEXT},${DIGITS}${IVREXT},1)}" = "0"]?beforewhile:nodedial)
exten => s,n,EndWhile
exten => s,n,GotoIf($["${DIALPLAN_EXISTS(${CONTEXT},${DIGITS},1)}" = "0"]?i,1)
exten => s,n(nodedial),Goto(${DIGITS}${IVREXT},1)

exten => *,1,Macro(blkvm-clr,)
exten => *,n,Set(__NODEST=)
exten => *,n,Set(__ivrreturn=0)
exten => *,n(ivrsel-*),Goto(ivr-2,s,1)

exten => 0,1,Macro(blkvm-clr,)
exten => 0,n,Set(__NODEST=)
exten => 0,n,Set(__ivrreturn=0)
exten => 0,n(ivrsel-0),Goto(ext-queues,1555,1)

exten => #,1,Macro(blkvm-clr,)
exten => #,n,Set(__NODEST=)
exten => #,n,Set(__ivrreturn=0)
exten => #,n(ivrsel-#),Goto(ivr-1,s,1)

exten => 1,1,Macro(blkvm-clr,)
exten => 1,n,Set(__NODEST=)
exten => 1,n,Set(__ivrreturn=0)
exten => 1,n(ivrsel-1),Goto(ext-queues,1225,1)

exten => 2,1,Macro(blkvm-clr,)
exten => 2,n,Set(__NODEST=)
exten => 2,n,Set(__ivrreturn=0)
exten => 2,n(ivrsel-2),Goto(ext-queues,1518,1)

exten => 3,1,Macro(blkvm-clr,)
exten => 3,n,Set(__NODEST=)
exten => 3,n,Set(__ivrreturn=0)
exten => 3,n(ivrsel-3),Goto(ext-queues,1555,1)

exten => i,1,Set(INVALID_LOOPCOUNT=$[${INVALID_LOOPCOUNT}+1])
exten => i,n,GotoIf($[${INVALID_LOOPCOUNT} > 3]?final)
exten => i,n,Set(IVR_MSG=no-valid-responce-pls-try-again&custom/menu_2)
exten => i,n,Goto(s,start)
exten => i,n(final),Playback(no-valid-responce-transfering)
exten => i,n,Goto()

exten => t,1(final),Playback(no-valid-responce-transfering)
exten => t,n,Goto(ext-queues,1555,1)

exten => return,1,Set(_IVR_CONTEXT=${CONTEXT})
exten => return,n,Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT_${CONTEXT}})
exten => return,n,Set(IVR_MSG=custom/menu_2)
exten => return,n,Goto(s,start)

exten => h,1,Hangup

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

;--== end of [ivr-2] ==--;

Re: Не обрабатывается нажатие "#" через голосовое меню

Добавлено: 04 дек 2019, 13:51
ded
Может он конечно весь, да не весь. По нажатию решётки вы отправляете его в ivr-1
exten => #,n(ivrsel-#),Goto(ivr-1,s,1)
а в приведённом диалплане нет никакого ivr-1.

Ну и наблюдать прохождение диалплана в CLI при отладке ИВР - ваша прямая обязанность.
Там всё будет ясно, и публиковать его тут даже нет необходимости.

Re: Не обрабатывается нажатие "#" через голосовое меню

Добавлено: 04 дек 2019, 16:56
genady555
Как раз по логам то ничего и не ясно, до обработки "#" в контексте дело не доходит:

[2019-12-04 16:40:14] DTMF[4126][C-000001f5] channel.c: DTMF begin '#' received on SIP/trunk_ccm1-00000360
[2019-12-04 16:40:14] DTMF[4126][C-000001f5] channel.c: DTMF begin ignored '#' on SIP/trunk_ccm1-00000360
[2019-12-04 16:40:15] DTMF[4126][C-000001f5] channel.c: DTMF end '#' received on SIP/trunk_ccm1-00000360, duration 100 ms
[2019-12-04 16:40:15] DTMF[4126][C-000001f5] channel.c: DTMF end passthrough '#' on SIP/trunk_ccm1-00000360
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] app_read.c: User entered nothing.
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] pbx.c: Executing [s@ivr-2:16] Set("SIP/trunk_ccm1-00000360", "IVR_MSG=") in new stack
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] pbx.c: Executing [s@ivr-2:17] GotoIf("SIP/trunk_ccm1-00000360", "0?i,1") in new stack
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] pbx.c: Executing [s@ivr-2:18] GotoIf("SIP/trunk_ccm1-00000360", "0?t,1") in new stack
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] pbx.c: Executing [s@ivr-2:19] NoOp("SIP/trunk_ccm1-00000360", "") in new stack
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] pbx.c: Executing [s@ivr-2:20] GotoIf("SIP/trunk_ccm1-00000360", "1?beforewhile:nodedial") in new stack
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] pbx_builtins.c: Goto (ivr-2,s,13)
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] pbx.c: Executing [s@ivr-2:13] ExecIf("SIP/trunk_ccm1-00000360", "0?Set(DIGITS=)") in new stack
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] pbx.c: Executing [s@ivr-2:14] While("SIP/trunk_ccm1-00000360", "1 ") in new stack
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] pbx.c: Executing [s@ivr-2:15] Read("SIP/trunk_ccm1-00000360", "IVREXT,,1,,0,5") in new stack
[2019-12-04 16:40:15] VERBOSE[4126][C-000001f5] app_read.c: Accepting a maximum of 1 digits.
[2019-12-04 16:40:20] VERBOSE[4126][C-000001f5] app_read.c: User entered nothing.

Re: Не обрабатывается нажатие "#" через голосовое меню

Добавлено: 04 дек 2019, 17:06
ded
app_read.c: Accepting a maximum of 1 digits.
Решётка - это не цифра.