По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Желание использовать данные с внешних сервисов это вполне обычная практика. Так как многие из этих сервисов доступны по HTTP(S) (REST API, например), то в этой статье мы хотим показать простой способ обращения к этим сервисам по cURL и обработку данных в случае, если сервер вернет JSON. Все взаимодействия будут выполняться из диалплана.
Простой cURL запрос
В диалплане Asterisk существует функция CURL, которая позволяет получить содержимое WEB или FTP страницы. Синтаксис запроса следующий:
CURL(url,post-data)
url - URL, к которому мы будем выполнять обращение;
post-data - по умолчанию будет выполнен GET – запрос. Если в данном параметре будут указаны различные значения, то будет выполнен POST запрос с указанными в переменной данными;
Например:
exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest?num=84991234567)})
Здесь мы выполним GET запрос по указанному URL, а результат сохраним в переменной C_RESULT.
Использование HTTPS в запросах
Иногда, HTTPS запросы могут не срабатывать, так как удаленная сторона будет проверять наш SSL – сертификат. Если поставить параметр ssl_verifypeer=0, то такой проверки не будет:
same => n,Set(CURLOPT(ssl_verifypeer)=0)
Как воспользоваться этим в диалплане?
Легко. С помощью функции GotoIf мы можем определить действие, которое отработает на базе результата cURL:
exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest?num=84991234567)})
same => n,GotoIf($["${C_RESULT}" = "1"]?res1:res2)
same => n(res1),Verbose(CURL Result = 1)
same => n,Hangup
same => n(res2),Verbose(CURL Result != 1)
same => n,Hangup
Указанный код отправит GET - запрос на rest, в котором в параметре num передаст номер звонящего (можно указать соответствующую переменную диалплана Asterisk). В случае, если результатом выполнения запроса будет 1, то мы перейдем к выполнению шага res1, а противоположном случае, res2.
res_json для обработки JSON ответов
На самом деле, для API, является обычной практикой возврат ответа в виде JSON. Поэтому, нам следует преобразовать эти данные перед обработкой их. Для этого мы воспользуемся модулем res_json из JSON библиотеки, который создан для расширения базовых возможностей диалплана с точки зрения обработки JSON.
Почитайте материал об установке данного модуля по этой ссылке.
exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest.json)})
same => n,Set(result=${JSONELEMENT(C_RESULT, result/somefield)})
same => n,GotoIf($["${result}" = "1"]?res1:res2)
same => n(res1),Verbose(CURL Result = 1)
same => n,Hangup
same => n(res2),Verbose(CURL Result != 1)
same => n,Hangup
Для теста, создайте у себя на web – сервере файл rest.json со следующим содержанием:
{
"result": {
"somefield": 1
}
}
Подключив SIP – транк к нашему Asterisk, следующим шагом необходимо настроить маршрутизацию вызова. Как это сделать исходящие и входящие маршруты во FreePBX 13 расскажем в сегодняшней статье:
Маршрутизация вызова является важнейшей задачей в настройке офисной АТС. В настройках входящей маршрутизации, как правило, компании реализуют свои бизнес процессы – направляют вызовы с определенных номеров на IVR, c других номеров на Ring Group (группы вызова), а третьи напрямую на ответственного менеджера. При исходящей маршрутизации, можно учитывать направление вызова, например, если у вас 2 провайдера IP – телефонии, и один из них дает наилучшую цену для звонков в Сибирь, а другой для звонков на Урал.
Пошаговое видео
Исходящие маршруты
Начнем с настройки исходящей маршрутизации во FreePBX 13. Для этого перейдем во вкладку Connectivity → Outbound Routes
Открываем интерфейс настройки на первичной вкладке Route Settings.
Давайте разберемся, что можно здесь настроить:
Route Name - Имя маршрута. Рекомендуем записывать названия по номеру телефона – это позволяет быстрее ориентироваться в настроенных маршрутах.
Route CID - В данном поле можно ввести CallerID для этого маршрута, т.е номер звонящего, который мы будем отправлять в сторону провайдера. Важно отметить, что данный CID является менее приоритетным, чем CID настроенный на SIP – транке и правилах Ring Group, Follow Me.
Override Extension - Yes/No: Если выбрано значение Yes, то настроенный в параметрах экстеншена Outbound CID будет игнорироваться
Route Password - Данная настройка позволяет запрашивать у пользователя пароль, чтобы позвонить через данный маршрут. Это достаточно полезная опция, при звонках зарубеж.
Route Type - Выбрать тип маршрута:
Аварийный (Emergency) или Корпоративный (Intra-Company)
Аварийный (Emergency): Набор экстренных служб и прочих
Корпоративный (Intra-Company): В данном случае будет сохранена информация Caller ID в настройках Extension
Music On Hold - Музыка ожидания на маршруте. Для различных направлений звонка, например, можно делать какое-либо звуковое сообщение на нативном для направления языке.
Time Group - Временная группа. Если отмечено, то этот маршрут будет использоваться только в указанное в настройках Time Group времени.
Route Position - Во FreePBX 13, как и в других версиях используется приоритетность маршрутов в зависимости от его позиции. В данном пункте можно выбрать позицию маршрута относительно других.
Trunk Sequence for Matched Routes - Последовательность SIP – транков для отправления вызова в сторону провайдера. Если первый транк не работает, вызов будет отправлен во второй и так далее.
Optional Destination on Congestion - Если вызов не может состоять по причине неработоспособности SIP – транков, то можно отправить вызов, например, на звуковое сообщение «В настоящее время все линии недоступны. Обратитесь в техническую поддержку»
Отлично, мы разобрались со вкладкой Route Settings, теперь перейдем ко вкладке Dial Patterns, в которой мы будем определять формат набора номера. Вот как выглядит типичная настройка на маршруте:
Давайте разбираться более подробно:
Шаблон набора номера (Dial Pattern) – это уникальный набор цифр, который позволяет отправить вызов в нужный SIP – транк. Если шаблон совпадает, то вызов отправляется через SIP – транк в сторону провайдера.
Шаблон набора номера имеет 4 поля настройки:
Prepend, Prefix, Match Pattern и CallerID.
Формат такой:
(prepend) prefix | [ match pattern / caller ID ]
Шаблон
Описание
X
Любое целое число от 0 до 9
Z
Любое целое число от 1 до 9
N
Любое целое число от 2 до 9
[#####]
Любое целое число в скобка. Например, перечисление – [1.2.7], или диапазон чисел –[1.2.6-9], в который попадают числа 1,2,6,7,8,9
.(точка)
Любой набор символов
Теперь давайте разберемся с полями, которые доступны для заполнения:
Prepend - Данная часть будет добавлена к номеру, перед отправкой в SIP – транк в случае совпадения шаблона.
Prefix - Префикс – это часть шаблона, которая будет удалена
Match Pattern - Набранный номер.
ВАЖНО: Asterisk ищет совпадения сопоставляя поле Prefix и Match Pattern.
CallerID - Данный звонок будет выполнен только в случае, если звонок инициирован с указанного CallerID. В данном поле можно использовать шаблоны. Полезно, если компания имеет несколько офисов с нумерацией виду 1XXX, 2XXX и так далее.
Теперь наш маршрут готов. Мы можем совершать исходящие вызовы. Но как настроить входящую маршрутизацию во FreePBX 13? Перейдем во вкладку Connectivity → Inbound Routes
Входящие маршруты
Самым главным пунктом в настройке входящего маршрута является DID Number. Данный параметр вы получаете от вашего провайдера, и, как правило, он совпадает с самим подключаемым номером. Даем имя нашему входящему маршруту – чтобы не путаться, мы советуем так же дать имя в соответствие с номером. Далее, самое главное – поле Set Destination. Выбираем назначение для нашего звонка. Это может быть как IVR, проверка времени, Ring Group или что - угодно
На этом настройка маршрутизации во FreePBX13 завершена
Возможно немногие знают, но у роутеров MikroTik есть графическая составляющая, которая позволяет визуализировать много полезной информации. Инструмент Graphing позволяет отслеживать показатели производительности роутера MikroTik и выводить их в наглядные графики.
Можно строить графики для:
Текущих показаний напряжения и температуры роутера;
Показателей производительности (загрузка памяти, CPU, использование дискового пространства);
Трафика, проходящего через интерфейсы.
Трафика, ограниченной скорости (Simple Queues).
Инструмент Graphings состоит из двух частей - первая его часть отвечает за сбор необходимой информации, а вторая - за её отображение в графическом виде через web-интерфейс или WinBox.
Графики будут доступны, если набрать в браузере http://*IP_адрес_роутера/graphs/ или же выбрать Graphs на станице авторизации.
Для того, чтобы была возможность просматривать графики в web-интерфейсе, необходимо, чтобы в IP → Services был включен сервис www (порт 80), только не надо убедитесь, что доступ к этому порту был только у тех, кому это необходимо. Правильно настройке Firewall!
Также, после настройки графики можно будет посмотреть в WinBox в разделе Tools → Graphing
С помощью инструмента можно настроить какая именно информация должна отображаться на графиках.
Через терминал конфигурация осуществляется с помощью команды:
/tools graphings
Здесь можно настроить параметры:
store-every - как часто записывать собранную информацию;
page-refresh - как часто обновлять web-страничку с графиками.
Чтобы настроить на каком интерфейсе нужно собирать информацию о пропускной способности для построения графиков, нужно ввести команду:
/tool graphing interface
Можно задать следующие параметры:
allow-address - диапазон IP адресов, с которых разрешено просматривать данные графики (по умолчанию – 0.0.0.0/24, то есть ограничений нет);
comment - описание;
disabled - активация отображения графиков с информацией о пропускной способности интерфейсов (no – включена, yes - выключена);
interface - указывает с каких интерфейсов собирать информацию для построения графиков (по умолчанию – all, то есть со всех интерфейсов);
store-on-disk - указывает хранить ли собранную информацию на системном диске.
Для того, чтобы настроить отображение об работающих ограничениях скорости (Simple Queues) введите команду:
/tool graphing queue
Здесь для настройки доступны следующие параметры:
allow-address - диапазон IP адресов, с которых разрешено просматривать данные графики (по умолчанию – 0.0.0.0/24, то есть ограничений нет);
allow-target - указывает открывать ли доступ к просмотру графика адресов указанных в Simple Queue;
comment - описание;
disabled - активация отображения графиков с информацией о пропускной способности интерфейсов (no – включена, yes - выключена);
simple-queue - указывает какие настройки ограничения скорости (Simple Queues) мониторить (по умолчанию – all, то есть все);
store-on-disk - указывает хранить ли собранную информацию на системном диске.
Наконец, для настройки отображения желаемой информации о показателях производительности роутера, используем команду:
/tool graphing resource
Здесь для настройки доступны следующие параметры:
allow-address - диапазон IP адресов, с которых разрешено просматривать данные графики (по умолчанию – 0.0.0.0/24, то есть ограничений нет);
comment - описание;
disabled - активация отображения графиков с информацией о пропускной способности интерфейсов (no – включена, yes - выключена);
store-on-disk - указывает хранить ли собранную информацию на системном диске.
Теперь давайте рассмотрим пример настройки в WinBox. Для этого откроем Tools → Graphing и настроим отображение графиков использования интерфейсов и графиков показателей производительности роутера:
Теперь графики будут доступны во вкладке Interface Graphs и Resource Graphs
Ну и конечно же теперь эти же графики доступны в более развернутом виде через web-интерфейс: