MikoPBX является очень хорошей и легкой IP-PBX для быстрого внедрения в компании. Она построена на движке Asterisk, имеет базовые возможности из коробки и подходит большинству малых и средних компаний.
Но зачастую требуется некоторые расширения функционала, делающие жизнь проще и легче. Одни из отсутствующих функций является blacklist или спам-лист телефонов. Просмотрев документацию и прочитав форумы, мы поняли что нужно сделать настройку динамического спам-листа.
Так поиграв и проверив встроенную функцию BLACKLIST(), мы поняли, что она работает не очень корректно и не понятно.
В итоге сделали свой скрипт(диаплан), без встроенной функции. Суть его в следующем. Проходит звонок. Если номер есть в «черном» списке, то звонок сразу сбрасывается. Если номера нет, то после разговора, положим трубку мы можем набрать внутренний номер 20 и последний определившийся номер попадет в блеклист.
Итак, начнем.
Переходим в кастомизацию файлов, extensions.conf. Добавляем в конец.
[SIP-ID входящего провайдера-incoming-custom]
exten = _X!,1,Set(_From=${CALLERID(num)})
same => n,Set(tel_banned=${DB(blacklist/${From})})
same => n,GotoIf($["${tel_banned}" = "${From}"]?banned:call)
same => n(call),Set(DB(ToMe/LastCaller)=${From})
same => n,return
same => n(banned),Hangup()
Далее вставляем еще один контекст:
[all_peers-custom]
exten => 20,1,Set(tmp=${DB(ToMe/LastCaller)})
same => n,Set(DB(blacklist/${tmp})=${tmp})
same => n,return
Фактически, мы используем базу данных напрямую, минуя встроенную функцию.
И дополнительные команды для корректировки базы(вводится в консоли сервера):
asterisk -rx ‘database show’ | grep blacklist — просмотр всех заблокированных телефонов
asterisk -rx «database del blacklist <номер телефона>» — удаление 1 номера телефона
asterisk -rx «database put blacklist <номер телефона> <номер телефона>» вставка номера телефона. Второй параметр <номер телефона> — обязателен. Это ключ, по которому ищется номер.
asterisk -rx «database deltree blacklist» — полная очистка базы заблокированных номеров.
Tags: Asterisk, Blacklist, Ip-pbx, MikoPBX