Передісторія.
Після впровадження схеми прийому дзвінків 112 за багатоканальною схемою та аналізу вхідних дзвінків з’ясувалося, що певні номери здійснюють від 20 до 700 дзвінків на місяць. Прослухавши записи, з’ясувалося, що розмов з боку абонентів не ведеться. Для зменшення навантаження на диспетчерів вирішено «найактивніших» заносити в стоп-лист і при наступних дзвінках інформувати про це абонента.
Завдання.
Зробити максимально простим управління через FreePBX.
Отже, схема роботи буде наступною.
1. Використовуючи штатний модуль BLACKLIST – заносимо в базу необхідні номери.

2. Штатна функція модуля – перевірка номера на наявність у стоп-листі та відтворення повідомлення про недоступність номера. Необхідно змінити поведінку під наші потреби, а значить перенаправити дзвінок у спеціальну групу «000». Оскільки редагувати безпосередньо контекст у файлі extensions_additional.conf не можна (при перезавантаженні він буде перезаписаний), для цього існує файл extensions_override_freepbx.conf, в який переносимо контекст і замінюємо рядок на відправку дзвінка в чергу.
[app-blacklist-check]
exten => s,1(check),GotoIf($["${BLACKLIST()}"="1"]?blacklisted)
exten => s,n,Set(CALLED_ =1)
exten => s,n,Return()
exten => s,n(blacklisted),Answer
exten => s,n,Wait(1)
exten => s,n,Zapateller()
exten => s,n(dest-ext),Goto(ext-queues,000,1)
exten => s,n,Hangup
;--== end of [app-blacklist-check] ==--;
3. Далі створюємо чергу 000.
Вкажемо, яке повідомлення відтворюється при попаданні.
Встановимо дію при «відсутності відповіді» і збережемо.
Все. Тепер забаненим номерам буде повідомлено про причину блокування та запропоновано спосіб розблокування.