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: , , ,