Звонки с нежелательных номеров можно блокировать, добавляя их в черный список Астериска. Если у Вас один SIP-провайдер — нужно посмотреть, в каком формате он передает на Asterisk А-номер. Если провайдеров несколько или они периодически добавляются \ меняются — каждый номер придется добавлять в трёх вариантах:
- С восьмеркой, например — 84951234567
- С семеркой, например — 74951234567
- Номер без префикса, например — 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.