artem
10.07.2017
2038

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

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

Для начала необходимо определить при каких условиях номер считается уникальным (как давно звонил, на какой номер, какова длительность разговора). В моем случае номер уникален, если разговор произошел более 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

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

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices