Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

Для понимания работы с Asterisk необходимо уметь настраивать его вручную с конфигурационными файлами и командной строкой CLI Asterisk.

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Определение уникального номера звонящего

База знаний Настройка Asterisk

В данной статье рассмотрим вариант определения уникального номера, с последующей его маршрутизацией по иной логике, нежели обычные номера.

Для начала необходимо определить при каких условиях номер считается уникальным (как давно звонил, на какой номер, какова длительность разговора). В моем случае номер уникален, если разговор произошел более 10 месяцев назад, был отвечен и длительность разговора была более 30 секунд.
Начнем:
Для начала необходимо создать функции в ODBC, поскольку выборку из базы данных будем делать с помощью этого модуля:

[getUnicNum]
dsn=asteriskcdrdb
readsql=select src from cdr where (calldate > NOW() - INTERVAL 10 MONTH) and (src like '%${ARG1}') and (disposition = 'ANSWERED') and (duration > '30') order by calldate desc limit 1


Запрос желательно проверять в базе данных под тем же пользователем, под которым подключен модуль ODBC. Посмотреть его можно в файле:

/etc/asterisk/res_odbc.conf.

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

Контекст

Маршрутизация

exten => _X.,1,Set(DIALED_NUM=${EXTEN})   ;Назначаем переменной набранный номер
same => n,Set(UnicNum=${ODBC_getUnicNum(${CALLERID(num):1})})   ;Проверка номера звонящего на уникальность
same => n,GotoIf($["${UnicNum}" = ""]?unic:from-trunk,${EXTEN},1)   ;Если в результате запроса вернулся ответ продолжаем по стандартной логике
same => n(unic),Set(DIALED_NUM=65788756)   ;Если номер уникален то переназначаем DID, на любой
same => n,Goto(from-trunk,${DIALED_NUM},1)

Edit: from-trunk-unic

Номер при отправке в кастомный контекст обрезаем, чтобы не произошло зацикливание при не уникальном номере, соответственно во входящих маршрутах нужно указать и обрезанный номер по стандартной логике.
Далее этот номер в диалплане маршрутизируем так как вам необходимо, например на очередь, либо на голосовое приветствие.
Во входящих маршрутах желательно указать данному номеру префикс, для простоты определения уникальных звонков.

asterisk, limit, callerid, ODBC, определение номера