Звонки с нежелательных номеров можно блокировать, добавляя их в черный список в Asterisk.
Первым делом — добавим две операции в ту часть диалплана (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
Обратите внимание — в дополнительной паре кавычек указан комментарий, он обязателен. Пример:
$ 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.
Удобно сделать небольшие скрипты, чтобы через bash их выполнять с аргументами в виде номера.