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

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

Добавлено: 13 янв 2021, 23:40
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 по умолчанию. И как можно малой кровью реализовать отдельный блеклист для каждой входящей линии?

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

Добавлено: 14 янв 2021, 13:21
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)

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

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

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

exten => s,1(check),GotoIf($["${BLACKLIST()}"="1"]?blacklisted)

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

Добавлено: 17 янв 2021, 21:35
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()