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

Отдельный Blacklist для каждой входящей линии

Проблемы Asterisk без вэб-оболочек и их решения

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

Ответить
Аватара пользователя
venom1_
Сообщения: 19
Зарегистрирован: 21 окт 2014, 20:01
Откуда: Киев

Отдельный Blacklist для каждой входящей линии

Сообщение venom1_ »

Как лучше реализовать? И как эта приблуда вообще работает? Помогите разобраться, плиз. Имеется FreePBX 2.11, Asterisk 11.
В Фрипбх вводятся номера для блеклиста, при входящем звонке в контексте [ext-did-0002] для каждой входящей линии вызывается один и тот же подконтекст

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

exten => +380ххххх70,n,Gosub(app-blacklist-check,s,1())
Вот этот подконтекст:

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

[app-blacklist-check]
exten => s,1(check),GotoIf($["${BLACKLIST()}"="1"]?blacklisted)
exten => s,n,Set(CALLED_BLACKLIST=1)
exten => s,n,Return()
exten => s,n(blacklisted),Answer
exten => s,n,Wait(1)
exten => s,n,Zapateller()
exten => s,n,Playback(ss-noservice)
exten => s,n,Hangup
Собсно, непонятно откуда берется переменная ${BLACKLIST()}, она нигде больше в файле конфига не фигурирует. И почему ее сравнивают с 1? Может, это как то связано с тем что в поле Deskription в Фрипбх напротив "черного" номера ставится 1 по умолчанию. И как можно малой кровью реализовать отдельный блеклист для каждой входящей линии?
ded
Сообщения: 15618
Зарегистрирован: 26 авг 2010, 19:00

Re: Отдельный Blacklist для каждой входящей линии

Сообщение ded »

Посмотрите список сервисных кодов - Feature codes в разделе Администрирование - увидите сервисный код для добавления последнего полученного номера в базу Blacklist. Вот так появляется потом значение в переменной ${BLACKLIST()
Надо будет по этой же логике из одной базы BLACKLIST сделать несколько, разноимённых.

И вам придётся кастомизировать этот сценарий.Принимать каждую входящую линию в отдельный контекст, обработчик, где будет указано, например

exten => +380ххххх70,n,Gosub(app-blacklist-check-Kievstar,s,1())
в другом
exten => +380ххххх70,n,Gosub(app-blacklist-check-Vodafon,s,1()) ; или что там нужно

Далее, в extensions_custom.conf скопируете и размножите сам app-blacklist-check

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

[app-blacklist-check-Kievstar]
exten => s,1(check),GotoIf($["${BLACKLIST-KIEVSTAR()}"="1"]?blacklisted)
exten => s,n,Set(CALLED_BLACKLIST=1)
Аватара пользователя
venom1_
Сообщения: 19
Зарегистрирован: 21 окт 2014, 20:01
Откуда: Киев

Re: Отдельный Blacklist для каждой входящей линии

Сообщение venom1_ »

а можно сделать чтобы не прописывать для каждой входящей линии отдельный контекст с блеклистом, а проверять DID прямо в контексте app-blacklist?
Вот этот момент все равно не ясен:

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

exten => s,1(check),GotoIf($["${BLACKLIST()}"="1"]?blacklisted)
murr
Сообщения: 127
Зарегистрирован: 04 июл 2013, 16:55

Re: Отдельный Blacklist для каждой входящей линии

Сообщение murr »

venom1_ писал(а):Вот этот момент все равно не ясен:
https://asterisk-pbx.ru/wiki/asterisk/func/blacklist

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

Функция Asterisk: сверяет callerid с черным списком в базе данных Astersik.

Check if the callerid is on the blacklist.

Описание
Использует astdb для проверки не содержит ли family 'blacklist' CallerID вызывающего абонента.
Возвращает '1' или '0', соответственно.
Uses astdb to check if the Caller*ID is in family 'blacklist'. Returns '1' or '0'.

Синтаксис

BLACKLIST()
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH