Пример использования Custom Destination в FreePBX

в 6:43, , рубрики: asterisk, freepbx, ip-телефония, voip, метки: , ,

Привет!

Цель данного поста на примере показать как в FreePBX с помощью Custom Destination регистрировать кастомные контексты, созданные пользователем (обычно в файле /etc/asterisk/extensions_custom.conf).

Зачастую стандартных функций FreePBX вполне хватает что бы удовлетворить нужды заказчиков. Но иногда бывают очень специфичные запросы, для реализации которых приходится писать разные custom context-ы. И вроде бы все хорошо, пока не встает задача направлять звонки в эти контексты посредством админ-панели FreePBX. Тут нам на помощь приходит функция Custom Destination!

К примеру:

Дано:
Допустим наш заказчик имеет 2 магазина в городе. В одном из них стоит сервер с AsteriskNow на борту, который обрабатывает звонки для обоих магазинов. Заказчик купил у sip провайдера красивый номер на 8 каналов вида 560560.

В городе 4 района:
Плюшкино — телефонные номера начинаются на 33
Черемушка — телефонные номера начинаются на 45
Мотыльки — телефонные номера начинаются на 77
Бобры — телефонные номера начинаются на 31

Географически они расположены как на рисунке.
Пример использования Custom Destination в FreePBX

Один магазин находится в районе Плюшкино, где номер ринг-группы продавцов будет 600.
Другой магазин в районе Черемушка, где номер ринг-группы продавцов будет 601.

Задача
Нам нужно, что бы все входящие звонки от потенциальных покупателей обрабатывались тем магазином, который ближе к ним географически. К примеру если звонок поступил с номера 312323, это значит что звонящий находится в районе Бобры, соответственно ближайший к нему магазин находится в районе Черемушка, т.е. звонок должен быть направлен на номер ринг-группы продавцов 601.

Т.е. в зависимости от первых 2-х цифр Caller-ID покупателя мы должны направлять звонок на нужную нам ринг-группу.

Решение
Для этого добавляем в файл /etc/asterisk/extensions_custom.conf новый контекст с именем check-tel-location-mag, следующего вида:
[check-tel-location-mag]
exten => s,1,Set(telnum=${CALLERID(num)})
exten => s,n,GotoIf($[ $["${telnum:0:2}" = "33"] | $["${telnum:0:2}" = "77"] ]?pluwki)
exten => s,n,GotoIf($[ $["${telnum:0:2}" = "31"] | $["${telnum:0:2}" = "45"] ]?ceremuska)
exten => s,n(pluwki),Goto(ext-group,600,1)
exten => s,n(ceremuska),Goto(ext-group,601,1)

Теперь мы можем зарегистрировать созданный нами контекст в FreePBX.
Для этого нужно:
1. Зайти в админ-панель FreePBX -> Tools -> Custom Destination
в поле Custom Destination вписать контекст — check-tel-location-mag,s,1
остальные поля заполняйте как удобно:
Пример использования Custom Destination в FreePBX

2. Нажать Submit Changes

Теперь можно создать входящий маршрут на номер 560560, в котором можно выбрать созданный ранее Custom Destination:
Пример использования Custom Destination в FreePBX

В результате — заказчик доволен, он получил требуемый функционал, а мы научились создавать Custom Destination.

Ссылки:
FreePBX Extension Registry HOW-TO

Автор: ironsf


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js