Pull to refresh

Comments 9

Что-то слишком сложный у вас код.

Вообще говоря, решение — НЕВЕРНОЕ. Вы таким образом заставляете астериск заниматься перелопачиванием 100к+ кодов, что выполняется долго, он на это не рассчитан.

Верное решение — создать в любой базе(да хоть в mysql) таблицу с индексом и в астериске через func_odbc сделать lookup. Работать будет на порядок быстрее.
Никто не запрещает реализовывать диалплан любым удобным способом. Можно и REST API пильнуть для CURL(), было бы желание.
Эта статья — не мануал, а приведённый выше код не генерирует диалплан. Это всего лишь инструмент для генерации масок расширений с возможностью фильтрации по регионам и операторам связи. Используйте, как удобно или не используйте вовсе.
Просто интересно.
А в чем задача стоит, что нужно все это валить в план диалплан? Ничего из стандартного, на первый взгляд, такое не требует.
У компании два филиала в регионах А и Б. Для каждого региона свой транк. Разделите исходящий трафик телефонии так, чтобы вызовы на номера каждого из регионов шли через соответствующий транк.
Решений много:
— получайте нужный регион из бд с интервалами DEF кодов;
— напишите простой бэкенд, возвращающий регион для заданного номера;
— добавьте в диалплан пару сотен соответсвующих масок расширений;
— используйте Lua для создания гибкого и компактного диалплана;
Если будет интересно, про каждый из этих пунктов можно написать отдельную статью.
Ясно, соглашусь со сказанным выше.
Пихать такое в диалплан ради LCR как-то неуместно. Запрос из базы — пустяковый.
У вас в файле даны диапазоны, номера не начинаются с нуля, значит можно работать с целочисленными значениями.
select region from table_name where number between start and end;

Импорт файла тоже в одну строчку делается.
И можно сразу возвратить несколько направлений для фейловера, если тарифы прикручены.

Если абонент перешел с сохранением номера к другому оператору, то как это у вас учитывается?
Ну, режим ясновидения пока в разработке.
шаблоны в астериске кстати с _ начинаются

_99646[0-2]XXXX
Используйте флаг -p, чтобы задать префикс.
Sign up to leave a comment.

Articles