Предыстория.
После внедрения схемы принятия звонков 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.
Укажем какое сообщение проигрывается при попадании.
Установим действие при “неответе” и сохраняемся.
Все. Теперь забаненным номерам будет сообщено о причине блокировки и предложен способ разблокирования.