Черный список номеров в Asterisk

Звонки с нежелательных номеров можно блокировать, добавляя их в черный список Астериска. Если у Вас один SIP-провайдер — нужно посмотреть, в каком формате он передает на Asterisk А-номер. Если провайдеров несколько или они периодически добавляются \ меняются — каждый номер придется добавлять в трёх вариантах:

  1. С восьмеркой, например — 84951234567
  2. С семеркой, например — 74951234567
  3. Номер без префикса, например — 4951234567

Первым делом — добавим две операции в ту часть диалплана (extensions.conf), которая обрабатывает входящие звонки. Сначала вставим строку с проверкой А-номера по черному списку (если номер присутствует — Астериск перекинет звонок на операцию, помеченную как blacklisted):

 
exten => s,n,GotoIf(${BLACKLIST()}?blacklisted)

Затем в конец вставим операцию HangUp с меткой blacklisted:

 
exten => s,n(blacklisted),Hangup()

Теперь при обработке звонка, если А-номер найдется в черном списке Asterisk`а, звонок пропустит все операции вплоть до метки. Пример:

 
exten => s,1,GotoIf(${BLACKLIST()}?blacklisted)
exten => s,n,Background(welcome)
exten => s,n,Queue(queue_cc,rt)
exten => s,n(blacklisted),Hangup()

После сохранения диалплана необходимо его перезагрузить:

$ asterisk -rx "dialplan reload"

Теперь можно добавить номер в черный список. Синтаксис команды:

database put <family> <key> <value>

Обратите внимание — в дополнительной паре кавычек указан комментарий, он обязателен. Пример:

$ asterisk -rx "database put blacklist 4951234567 "Test""
Updated database successfully
$ asterisk -rx "database show" | grep blacklist
/blacklist/4951234567 : Test

Чтобы удалить номер из черного списка:

$ asterisk -rx "database del blacklist 4951234567"
Database entry removed.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *