LogoLogo
www.mikopbx.ruTelegram сообществоФорум
Russian
Russian
  • Руководство по MikoPBX
    • Быстрое начало работы
    • Знакомство с MikoPBX
    • Системные требования
  • Установка
    • Отдельный компьютер
    • Виртуальные машины
      • VMware ESXi
      • VMware Fusion
      • VirtualBOX
      • VMware Workstation Pro
      • Hyper-V
      • Proxmox
    • Облачные сервисы
      • Yandex Cloud
        • Магазин приложений
        • Произвольный образ
        • Коммандная строка YC
      • VK Cloud
      • 1С:Облачная инфраструктура
      • AWS
        • AWS подробная инструкция
        • AWS Маркетплейс
      • Microsoft Azure
      • Google Cloud
        • Google Cloud подробная инструкция
        • Google Cloud Маркетплейс
      • Hetzner cloud (Empty)
      • Vscale
      • Selectel
      • DigitalOcean
      • Alibaba cloud
      • Vultr
    • В Docker контейнере
      • Установка докера и cоздание пользователя и каталогов
      • Запуск MikoPBX в контейнере
      • Запуск MikoPBX с помощью docker compose
  • Руководство пользователя
    • Телефония
      • Сотрудники
      • Очереди вызовов
      • IVR меню
      • Конференции
      • Звуковые файлы
      • История вызовов
    • Маршрутизация
      • Провайдеры телефонии
      • Входящие маршруты
      • Исходящие маршруты
      • Нерабочее время
    • Модули
      • Регистрация в маркетплейсе модулей
      • Управление модулями
      • Приложения диалпланов
    • Обслуживание
      • Обновление системы
        • Обновление из web-интерфейса
        • Обновление из консоли MikoPBX
        • Обновление Docker
      • Диагностика системы
      • Перезагрузка и выключение системы
    • Сеть и Firewall
      • Сетевые интерфейсы
      • Сетевой экран
      • Защита от взлома
    • Система
      • Общие настройки
      • Дата и время
      • Почта и уведомления
        • Настройка E-mail уведомлений для почтового сервиса Gmail
        • Настройка E-mail уведомлений для почтового сервиса Yandex
        • Настройка E-mail уведомлений для почтового сервиса Mail.ru
      • Доступ к AMI
      • Кастомизация системных файлов
  • Часто задаваемые вопросы
    • Интеграция с 1С
      • Перехват на ответственного
        • Перехват на ответственного в панели телефонии 4.0 как в панели 1.0
        • Отменить перехват на ответственного для конкретного провайдера
    • Установка
      • Установка на MDADM RAID1
      • Тонкая настройка firewall
      • Перенос MikoPBX на другой сервер
        • Перенос с помощью резервного копирования
        • Перенос с помощью резервного копирования по расписанию
        • Перенос с помощью rsync
      • Сброс к заводским настройкам
      • Мониторинг провайдеров на MikoPBX
    • Обслуживание
      • Изменить имя для авторизации
      • Закончилось место на доп. диске, увеличение размера диска
      • Закончилось место на доп. диске, перенос данных на новый диск
      • Хранение записей в общей папке windows
      • Резервный интернет и перерегистрация провайдеров
      • Сброс пароля администратора из консоли MikoPBX
    • Диагностика проблем
      • Подключение к АТС с помощью SSH
        • Подключение к АТС с помощью SSH-клиента (Putty)
        • Подключение с помощью SSH (Windows)
        • Подключение с помощью SSH (Linux/MacOS)
      • Подключение к АТС с помощью WinSCP
      • Получение логов с помощью приложения tcpdump
      • Снятие лога в АТС с помощью Wireshark
      • Анализ трафика средствами Sngrep
      • Настройка громкости
      • Решение проблем со звуком
      • Настройка Jitter
    • Входящая маршрутизация
      • Выбор провайдера при переадресации на мобильный
      • Уведомление о занятости, Call Waiting
      • Маршрутизация по DID номеру
      • Черные и белые списки
      • Разрешить донабор внутреннего номера в очереди
      • Нормализация входящего номера телефона
      • Настройка индивидуального нерабочего времени для учетной записи провайдера
      • Вывод информации о did-номере
      • Пример реализации типового маршрута входящих вызовов
      • Базовый пример IVR
    • Исходящая маршрутизация
      • Добавить P-Preferred-Identity и Remote-Party-ID заголовок
      • Конференция с постоянным внешним абонентом
      • Исходящий с набором внутреннего номера
      • Убрать все спецсимволы из набираемого номера
      • Запрет звонка через резервный маршрут
      • Звонки на экстренные номера
      • Звонок через определенного провайдера
      • Шаблоны номеров
        • Равномерное распределение исходящих
        • Удаление кода города из номера
        • Добавление префикса "8" к номеру
        • Замена префикса номера с "8, 7" на "+7"
        • Замена префикса номера с "+7" на "8"
        • Пример шаблона: звонки в другую страну (Украина, Беларусь, Латвия)
        • Как запретить замену "+" на "00"
        • Нормализация набираемого номера телефона
    • Сценарии и кейсы
      • Программное создание сотрудников
      • Уведомление в телеграмм о пропущенных
      • Позвонить в компанию с мобильного и набрав добавочный позвонить сторонней компании
      • Отправка входящего факса на email
      • Оценка клиентом качества обслуживания
      • Имитация внешних звонков
      • Отключение "нерабочего времени" для VIP номеров
      • Регистрация нескольких учетных записей от одного провайдера
      • Настройка индивидуального нерабочего времени для нескольких провайдеров, на одном хосте
      • Отключить переадресацию на мобильный для внутренних звонков
      • Уникальная фоновая музыка для очереди
      • Пауза для агента очереди
      • Динамические агенты очередей
      • Настройка функции "Paging"
      • Ограничить количество авторизаций на одном SIP аккаунте
      • Как реализовать функцию супервизора
      • Голосовая почта
      • Конвертация истории звонков FreePBX -> MikoPBX
      • SSL сертификат для web-интерфейса MIKOPBX от OPNSense
      • Скрытие номера от сотрудника
    • Соединение нескольких АТС
      • Объединение двух MikoPBX
      • Объединение MIKOPBX и Grandstream UCM6202
      • Объединение MikoPBX и FreePBX (PJSIP)
      • Объединение MikoPBX и FreePBX (IAX)
    • Настройка провайдеров
      • Ростелеком
      • MTT
      • Zadarma (Novofon)
      • Мегафон
      • Билайн
      • МТС
      • UIS (uiscom.ru)
      • MANGO OFFICE
      • dom.ru
      • Яндекс телефония
      • NEW-TEL
      • sip.tg
      • Lifecell
      • SIP Коннектор Bitrix24
      • ID Phone(Казахтелеком)
      • Имитация внешних входящих и исходящих звонков
      • Телфин
    • Настройка софтфонов
      • Bria Solo
      • Sessiontalk
      • Groundwire
      • MicroSIP
      • Zoiper
      • Jitsi
      • PhonerLite
      • Linphone (MacOS)
      • Telephone(MacOS)
      • Настройка WebRTC клиента SIPML5
      • Softphone.pro
      • 3CX Softphone
      • PortSIP
      • SIP.tg (Telegram)
    • Voip шлюзы
      • GoIP4
        • SMS в Telegram
      • Yeastar NeoGate TG 400
      • Grandstream HT503
      • Звонки через 3G модем Huawei E173 (chan_dongle)
    • IP-Телефоны
      • Snom D120
      • Yealink T19
      • Yealink T21
      • Yealink T28
      • Fanvil X3SP
    • Перестает работать сеть в MikoPBX
  • Модули
    • Модули МИКО
      • Интеграция с 1С
        • Панель телефонии 1.0 для 1С
        • Панель телефонии 4.0 для 1С
        • Модуль умной маршрутизации
      • Интеграция с amoCRM
        • Описание функционала amoCRM
        • Настройка интеграции с amoCRM
      • Интеграция с CRM Bitrix24
        • Описание функционала CRM Bitrix24
        • Настройка интеграции с Bitrix24
      • Управление телефонными группами
      • Резервное копирование
      • Автоматическая настройка телефонов
      • Автообработка пропущенных
      • Let's Encrypt
      • Управление доступом в систему
      • Модуль Автоинформатор
      • Оценка качества разговора
      • Синхронизация с LDAP/AD
      • Провайдер для звонков Telegram
      • Zabbix агент
      • Телефонная книга
      • Расширенная история звонков
  • Прочее
    • История версий
      • MikoPBX 2024.1
      • MikoPBX 2023.2
      • MikoPBX 2023.1.223
Powered by GitBook
On this page
  • Продвинутый вариант
  • Упрощенная реализация

Was this helpful?

Edit on GitHub
Export as PDF
  1. Часто задаваемые вопросы
  2. Входящая маршрутизация

Черные и белые списки

Периодически каждая компания сталкивается с проблемой поступления «спам» звонков. В связи с этим возникает потребность блокировки определенных номеров, чтобы звонки с этих номеров не поступали.

Продвинутый вариант

  1. Создайте новое «Приложение диалплан»

  2. Укажите произвольное название, к примеру Blacklist

  3. Выберите «Тип кода» - «PHP AGI Скрипт»

  4. Укажите короткий номер для приложения, к примеру 99

  5. На вкладке «Программный код» вставьте:

    <?php
    require_once('Globals.php');
    use MikoPBX\Core\Asterisk\AGI;
    
    $agi        = new AGI();
    $isTransfer = !empty($agi->get_variable('ISTRANSFER', true));
    $number     = substr($agi->request['agi_callerid'], -10);
    $cliNumber  = isset($argv[2]) && !empty($argv[2]) ? substr($argv[2], -10) : $number;
    $actionFlag = $isTransfer ? 1 : (isset($argv[1]) ? intval($argv[1]) : null);
    
    $agi->verbose('Action flag: ' . $actionFlag . ', Phone number: ' . $cliNumber, 1);
    $filename = '/storage/usbdisk1/mikopbx/custom_modules/blacklist.txt';
    if(file_exists($filename)){
        $blacklist = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        $isInBlacklist = in_array($cliNumber, $blacklist);
    }else{
        $isInBlacklist = false;
    }
    
    if (is_null($actionFlag) || is_null($cliNumber)) {
        if($isInBlacklist){
            $agi->verbose('The number was found in the blacklist. The call will be completed');
            $agi->hangup();
        }
        exit(0);
    }
    
    if ($actionFlag === 1) {
        if (!$isInBlacklist) {
            $agi->verbose('Adding number to black list (fileWriteContent): ' . $cliNumber, 1);
            $blacklist[] = $cliNumber;
            \MikoPBX\Core\System\Util::fileWriteContent($filename, implode(PHP_EOL, $blacklist) . PHP_EOL);
        } else {
            $agi->verbose('Number already exists in the black list: ' . $cliNumber, 1);
        }
        $filename = '/storage/usbdisk1/mikopbx/custom_modules/blacklist_add.wav';
        if(file_exists("$filename")){
            $agi->exec('Playback', \MikoPBX\Core\System\Util::trimExtensionForFile($filename));
        }
    } elseif ($actionFlag === 0) {
        if ($isInBlacklist) {
            $agi->verbose('Removing number from black list (fileWriteContent): ' . $cliNumber, 1);
            $blacklist = array_filter($blacklist, function($blacklistedNumber) use ($cliNumber) {
                return $blacklistedNumber !== $cliNumber;
            });
            \MikoPBX\Core\System\Util::fileWriteContent($filename, implode(PHP_EOL, $blacklist) . PHP_EOL);
        } else {
            $agi->verbose('Number not found in black list: ' . $cliNumber, 1);
        }
        $filename = '/storage/usbdisk1/mikopbx/custom_modules/blacklist_remove.wav';
        if(file_exists("$filename")){
            $agi->exec('Playback', \MikoPBX\Core\System\Util::trimExtensionForFile($filename));
        }
    } else {
        $agi->verbose('Invalid action flag: ' . $actionFlag . '. Use 1 to add, 0 to remove.', 1);
        exit(1);
    }
    $agi->verbose('Operation completed successfully.', 1);
  6. Сохраните изменения и скопируйте идентификатор приложения из адресной строки браузера, в этом примере "DIALPLAN-APP-1C34052A".

  7. Перейдите в раздел Система → Кастомизация системных файлов, откройте для редактирования файл extensions.conf

  8. Выберите режим «Добавлять в конец файла», внизу в черное поле для редактирования вставьте следующие строки:

    [internal-transfer](+)
    exten => _99,1,Set(__ISTRANSFER=transfer_)
     	same => n,Goto(internal,${EXTEN},1)
     
    [applications](+)
    exten => _1*X.,1,AGI(DIALPLAN-APP-1C34052A.php,1,${EXTEN:3})
    exten => _0*X.,1,AGI(DIALPLAN-APP-1C34052A.php,0,${EXTEN:3})	
     	
    [add-trim-prefix-clid-custom]
    exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(start check blacklist)
    	same => n,AGI(DIALPLAN-APP-1C34052A.php)
    	same => n,Return()

    , где «DIALPLAN-APP-1C34052A» - это идентификатор приложения, найти можно в адресной строке браузера при редактирвоании приложения

  9. Сохраните изменения!

Черный список телефонов будет храниться в файле: «/storage/usbdisk1/mikopbx/custom_modules/balcklist.txt»

Также можно на АТС загрузить файлы оповещения о добавлении в черный список:

/storage/usbdisk1/mikopbx/custom_modules/blacklist_add.wav

/storage/usbdisk1/mikopbx/custom_modules/blacklist_remove.wav Для добавления номера в черный список просто выполните переадресацию на номер 99 (слепую, без консультации) Наберите 1*74950000300 для добавления номера в черный список Наберите 0*74950000300 для удаления номера из черного списка

Упрощенная реализация

Подойдет для старых версий MikoPBX

  1. Перейдите в раздел Система → Кастомизация системных файлов.

  1. Откройте для редактирования конфигурационный файл extensions.conf.

  1. Установите режим "Добавлять в конец файла" и вставьте следующий код:

[add-trim-prefix-clid-custom]
exten => _X!,1,NoOp(...)
    ; Черный список номеров. Вызов будет завершен. 
    same => n,ExecIf($["${CALLERID(num)}" == "72942293042"]?Hangup())
    same => n,ExecIf($["${CALLERID(num)}" == "72942293043"]?Hangup())
    same => n,ExecIf($["${CALLERID(num)}" == "72942293044"]?Hangup())
    same => n,return

Белый список номеров иногда требуется описать для конкретных провайдеров:

[ID-ПРОВАЙДЕРА-incoming-custom]
exten => _X!,1,NoOp(...)
    ; Белый список номеров. 
    same => n,ExecIf($["${CALLERID(num)}" == "72942291111"]?return)
    same => n,ExecIf($["${CALLERID(num)}" == "72942291112"]?return)
    same => n,ExecIf($["${CALLERID(num)}" == "72942291113"]?return)
    same => n,Hangup()
  • ID-ПРОВАЙДЕРА - значение, которое вы можете найти в адресной строке в момент конфигурации провайдера

Last updated 5 months ago

Was this helpful?

Раздел "Кастомизация системных файлов"
Редактирование конфигурационного файла "Extensions.conf"
Код для файла "extnsions.conf"
Как найти ID провайдера: