ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Ограничение донабора из IVR

Обо всем касательно TrixBox, Elastix, AstPBX и всех других дистрибутивов

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

Ограничение донабора из IVR

Сообщение niknav » 21 авг 2020, 10:04

Добрый день.
У меня телефония организована на базе дистрибутива FreePBX Distro.
Есть IVR меню через которое можно с помощью донабора набрать внутренний номер.
Необходимо запретить донабор на определенные номера.
Подскажите как лучше это сделать?
niknav
 
Сообщений: 3
Зарегистрирован: 21 сен 2018, 10:03

Re: Ограничение донабора из IVR

Сообщение ded » 21 авг 2020, 11:37

Если посмотрите как устроен контекст ivr-1, который система создаёт при организации ИВР через вэб-интерфейс, то увидите такой инклюд:
Include => 'ivr-1-custom'
но такого контекста 'ivr-1-custom' нет в диал-плане. Это зародыш для кастомизации.
Можно создать такой контекст в файле extensions_custom.conf где указать номера, на которые нельзя будет попасть из ИВР.
Код: выделить все
[ivr-1-custom]
exten => 111,1,Hangup(16)
ded
 
Сообщений: 15805
Зарегистрирован: 26 авг 2010, 19:00

Re: Ограничение донабора из IVR

Сообщение niknav » 21 авг 2020, 14:57

У меня в файле extensions_custom.conf контекст ivr-1 выглядит следующим образом:
Код: выделить все
[ivr-1] ; Test
include => ivr-1-custom
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/Test)
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,20)
exten => s,n,Set(IVR_MSG=)
exten => s,n,GotoIf($["${READSTATUS}" = "OK" & "${IVREXT}" = ""]?#,1)
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,ExecIf($["${DB(DEVICE/${DIGITS}${IVREXT}/user)}" != ""]?Set(LOCALEXT=1))
exten => s,n,GotoIf($["${LOCALEXT}" = "1"]?from-did-direct-ivr,${DIGITS}${IVREXT},1)
exten => s,n,Noop(${CONTEXT}${DIGITS},${IVREXT},1)
exten => s,n,ExecIf($["${DIALPLAN_EXISTS(${CONTEXT},${DIGITS}${IVREXT},1)}" != "0"]?Set(NODEFOUND=1))
exten => s,n,GotoIf($["${NODEFOUND}" = "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 => 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)
exten => i,n,Goto(s,start)
exten => i,n(final),Playback(no-valid-responce-transfering)
exten => i,n,Goto()

exten => t,1(final),Goto()

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

exten => h,1,Hangup

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

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

И при добавлении строки написанной вами ничего не меняется.
niknav
 
Сообщений: 3
Зарегистрирован: 21 сен 2018, 10:03

Re: Ограничение донабора из IVR

Сообщение ded » 21 авг 2020, 16:08

Скорее всего этот контекст у вас в extensions_additional.conf (если его руками кто-то не перенес в extensions_custom.conf)

Смотрите на вот эти шаги:
exten => s,n,Noop(${CONTEXT}${DIGITS},${IVREXT},1)
exten => s,n,ExecIf($["${DIALPLAN_EXISTS(${CONTEXT},${DIGITS}${IVREXT},1)}" != "0"]?Set(NODEFOUND=1))
exten => s,n,GotoIf($["${NODEFOUND}" = "0"]?beforewhile:nodedial)

Если вы посмотрите состояния переменных в первом шаге во время выполнения вызова в CLI то увидите в каком контексте ищутся внутренние номера.
Я думаю можно добавить строку после этого
exten => s,n,GotoIf(${${DIGITS} = 111 | 222 | 333}?hang,1) ; синтаксис проверьте, пишу наобум
где 111 222 и 333 - номера для примера, на которые не получится делать донабор.
ded
 
Сообщений: 15805
Зарегистрирован: 26 авг 2010, 19:00


Вернуться в Готовые VoIP дистрибутивы

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH