При переходе по ссылке http://IP_OPENVOX/service?action=get_gsminfo, или http://IP_OPENVOX/X/service?action=get_gsminfo (где X — номер модуля, больше 1), можно увидеть в json-формате статус портов (span-нов). Если Web-сервер на Openvox, для авторизации использует метод Authorization: Basic, то мониторить статус портов (span-нов), можно средствами zabbix. Но на некоторых (более новых) Openvox-шлюзах используется Authorization: Digest метод авторизации, который не поддерживается системой zabbix, но поддерживается CURL на php. Для реализации поставленной задачи, нужно написать внешний php-скрипт.

Пишем php-скрипт sim_control_signal.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
//задаем логин и пароль для входа в Openvox
$login='login:password';
 
//дальше не редактируем
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
if(isset($_GET["ip"])&&isset($_GET["board"])&&isset($_GET["port"])&&isset($_GET["obj"])) {
    //подключаю библиотеки для удобной работы с json форматом
    require_once('json/json.php');
    require_once('json/jsonpath-0.8.1.php');
    $ip=$_GET["ip"];
    $board=$_GET["board"];
    $port=$_GET["port"];
    $obj=$_GET["obj"];
    if($board=='1') $url='http://'.$ip.'/service?action=get_gsminfo';
    else $url='http://'.$ip.'/'.$board.'/service?action=get_gsminfo';
    $headers_auth=array(CURLAUTH_BASIC,CURLAUTH_DIGEST);
    $h=0;
    $parser = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
    while($httpCode!=200){
        $options = array(
            CURLOPT_URL            => $url,
            CURLOPT_USERPWD        => $login,
            CURLOPT_HTTPAUTH       => $headers_auth[$h],
            CURLINFO_HEADER_OUT => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HEADER => false
        );
        $ch = curl_init();
        curl_setopt_array($ch, $options);
        $resp = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $h++;
        if($h>100){
            echo "Error to edit parameters";
            break;
        }
    }
    $json_object = $parser->decode($resp);
    $result = $parser->encode(jsonPath($json_object, "$.".$port."[0].".$obj));
    preg_match('/\[\"(.*)\"\]/', $result, $match);
    echo $match[1];
}
else echo "error parameters";
?>



Примеры использования.
Строка запроса:
1. http://AddressToWebServer/sim_control_signal.php?ip=192.168.0.9&board=2&port=4&obj=operator
2. http://AddressToWebServer/sim_control_signal.php?ip=192.168.0.9&board=1&port=2&obj=signal
3. http://AddressToWebServer/sim_control_signal.php?ip=192.168.0.9&board=3&port=1&obj=status
Вывод:
1. MTS UKR
2. 27
3. Power on, Provisioned, Up, Active, Standard
где:
AddressToWebServer — адрес web-сервера, где хранится скрипт sim_control_signal.php;
192.168.0.9 — IP адрес Openvox;
board — номер модуля;
port — номер порта (span-а), куда вставлена SIM-карта;
obj — название объекта, значение которого нужно вывести.
Далее нужно создать шаблон в zabbix, и наслаждаться 🙂 .

Готовый шаблон для zabbix, качаем тут.




Для работы шаблона, каждую SIM-карту нужно создавать как новый узел сети. В «Интерфейсы агента» → «IP адрес», указываем IP адрес Openvox. Во вкладке «Макросы», создаем 2 переменные: {$BOARD}, где указываем значение номер модуля, и переменная {$PORT}, где указываем номер порта (span-а), куда вставлена SIM-карта.

Библиотеку JSON качаем тут.

Похожие статьи:

Web CallBack FreePBX
Задача Создать кнопку "Перезвоните мне" на сайте, с максимальной интеграцией во FreePBX. Решение Для примера возьмем статью https://asterisk-pbx.ru/wiki/artikle/asterisk_web_callback. Принцип работы этой реализации заключается в том, что php скрипт генерирует (Originate) вызов. Первым делом отправляет вызов по каналу Channel. После того, как соединение установлено (вызов принят оператором), осуществляется ...
Мониторинг температуры и 220V через Zabbix
Для мониторинга температуры и 220 в серверных используем устройство PING3 (http://www.equicom.ua/ping/ping3/ping3.htm) с датчиком температуры (http://www.equicom.ua/ping/acc_sensors/TS-AN1/TS-AN1.htm) и датчиком напряжения сети (http://www.equicom.ua/ping/acc_sensors/PS1/PS1.htm). Настройка PING3 Администрировать устройство можно следующими способами: WEB интерфейс, Telnet, SNMP. Подробное описание можно почитать тут http://www.equicom.ua/ping/ping3/Ping3(-knock).pdf При первом включении, по умолчанию на устройстве установлен статический IP адрес ...
Bitrix24 cоздание лида через API
Задача - создание лида через API запрос к облачному Bitrix24. Для решения этой задачи, будем использовать webhook. Для создания webhook переходи на портале Bitrix24 по пункту "Дополнения"→"Вебхуки" Нажимаем на кнопку "создать вебхук", из выпадающего списка выбираем "Входящий вебхук". На следующем окне нужно ввести имя вебхука ...
Оценка работы оператора FreePBX+Asterisk
Задача: 1) Есть группа операторов Call-центра, нужно сделать возможность после разговора, оценивать звонок. 2) Максимальная интеграция с FreePBX. Решение: В Интернете много вариантов, все они ориентированы на чистый Asterisk. Примеры: https://wiki.merionet.ru/ip-telephoniya/55/ocenka-raboty-operatora-posle-zvonka-na-asterisk/ https://habr.com/ru/post/147122/ http://asterisk-service.com/blog/asterisk-1/post/2-0-53 Моя же реализация заключается в том, что все настройки можно делать в Web-интерфейсе FreePBX. Реализация тестировалась и работает на: - версии Asterisk 1.8.10.1 - ...
Отправка сообщений в Telegram
Здесь описаны возможные способы отправки сообщений в Telegram Windows CMD Для удобства отправки с командной строки, написал консольную программу на языке Pascal. Среда разработки PascalABC.NET uses System.IO, System.Net; var i:integer; html : string; chat_id: string; {:='111111111';} token: string; {:= '0000000:AAAAAAAAAAAAAAAAAAAAAA';} parse_mode: string; {:= 'html';} message: string:=''; {:='Сообщение';} url : string; begin token := ParamStr(1); chat_id := ParamStr(2); parse_mode := ...
«Умная» пересылка входящих СМС сообщений в OpenVox
Берем за пример статью Пересылка СМС с OpenVox в Telegram, здесь мы получаем сообщения с Opnevox, отсекаем только те сообщения, которые приходят на определённый порт, и отправляем сообщение в Telegram. В этой статье опишу как "умно" сортировать входящие СМС сообщения, и направлять их на определённые сервисы ...
Доступ к Slave boards Openvox
Для того, чтобы выполнить запрос из консоли Asterisk (asterisk -rx ""), который установлен на шлюз, или через Web-интерфейс (Дополнительно→Asterisk CLI) то будет доступен только Master модуль. Чтобы работать со Slave модулями, нужно поднимать дополнительное соединение. Как же работает Web-интерфейс с Slave модулями? Так и работает! ...
Восстановление OpenVox после неудачной прошивки
Проблема После прошивки через Web-интерфейс, шлюз OpenVox перестал отвечать на запросы как ping, так и WEB. При визуальном осмотре, все модули, кроме 1-го (master) работают (на остальных модулях - светодиод SYS моргает примерно раз в 1 секунду, также моргают светодиоды сим карт). Решение За основу решения взял Flash ...