Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

SPAM_CALL_BLOCKING IP-Телефония и СКУД

Черный список номеров в Asterisk: блокировка спама в extensions.conf и AstDB

Обновлено: 26.08.2026 · Официальная документация ↗

Причины необходимости блокировки номеров:

  • Офис атакуют телефонные спамеры, роботы с автообзвоном или навязчивая реклама с одних и тех же номеров.
  • Хулиганы или уволенные сотрудники непрерывно занимают телефонную линию компании.
  • Необходимо мгновенно сбрасывать звонки от нежелательных абонентов без отвлечения менеджеров.

Способ 1. Использование встроенной базы данных Asterisk Blacklist (AstDB)

В Asterisk встроен удобный механизм черного списка, который проверяет номер звонящего по внутренней базе blacklist перед направлением вызова в отдел продаж.

Шаг А: Добавление спам-номера в базу через консоль CLI

Подключитесь к серверу АТС по SSH и откройте консоль Asterisk:

asterisk -rvvv

Выполните команду добавления номера (в любом формате, как его передает оператор):

database put blacklist 84951234567 1
database put blacklist 79998887766 "Spam robot"

Шаг Б: Просмотр и удаление номеров из черного списка

# Просмотреть весь черный список:
database show blacklist

# Удалить номер из черного списка:
database del blacklist 84951234567

Способ 2. Проверка черного списка в диалплане (extensions.conf)

Откройте файл конфигурации диалплана /etc/asterisk/extensions.conf и добавьте проверку функции BLACKLIST() в самое начало входящего контекста для городских линий:

[from-trunk-incoming]
; Проверяем, есть ли входящий номер (CALLERID(num)) в черном списке AstDB
exten => _X.,1,NoOp(--- Входящий вызов от ${CALLERID(num)} ---)
 same => n,GotoIf($[${BLACKLIST()}]?blacklisted)
 ; Если номера нет в ЧС — отправляем звонок в очередь продаж
 same => n,Dial(PJSIP/101&PJSIP/102,30)
 same => n,Hangup()

 ; Ветка для спамеров: выдаем сигнал 'Занято' или сбрасываем
 same => n(blacklisted),NoOp(--- ВНИМАНИЕ: Номер ${CALLERID(num)} в ЧЕРНОМ СПИСКЕ! ---)
 same => n,Answer()
 same => n,Wait(1)
 same => n,Playback(tt-allbusy) ; Воспроизвести короткие гудки
 same => n,Hangup()

Примените изменения без перезагрузки сервера:

asterisk -rx "dialplan reload"

Способ 3. Блокировка в графическом интерфейсе FreePBX

  1. Зайдите в панель FreePBX → Admin → Blacklist.
  2. Нажмите кнопку Add Number.
  3. Введите номер телефона (например, 84951234567) и краткое описание («Коллекторы/Спам»).
  4. Поставьте галочку «Block Unknown/Anonymous», если хотите заблокировать все вызовы со скрытых номеров без CallerID.
  5. Нажмите Save → Apply Config.
💡 Практика специалистов: Для эффективной автоматической защиты от спама подключите API внешних баз репутации номеров (например, Kaspersky Who Calls или Яндекс ID) через AGI-скрипт на Python перед маршрутизацией звонка во внутренний диалплан.

Частые вопросы (FAQ)

Как заблокировать звонок со скрытого номера (Anonymous / Private)?

В extensions.conf добавьте условие: same => n,ExecIf($["${CALLERID(num)}" = "" | "${CALLERID(num)}" = "anonymous"]?Hangup()).

Можно ли добавить спам-номер в черный список прямо с телефонной трубки?

Да. Во FreePBX наберите сервисный код *30 с телефона, введите номер спамера и нажмите #. А набрав *32, вы добавите последний входящий номер в черный список автоматически.

Что лучше: сразу сбрасывать звонок спамера командой Hangup() или поднимать трубку Answer()?

Если сделать мгновенный Hangup(), спам-робот может сразу начать повторный автодозвон. Лучше сделать Answer(), выдержать паузу Wait(2) и положить трубку — тогда робот решит, что звонок состоялся, и перестанет звонить.

Можно ли заблокировать сразу диапазон номеров (например, весь префикс +7495111xxxx)?

Да, через маску в диалплане extensions.conf: exten => _X./_7495111XXXX,1,Hangup(). Знак слэша означает проверку конкретного шаблона CallerID.

Полезные материалы
Рекомендуем