img

Мониторинг устройств через ARI в Asterisk

Друг, не так давно мы рассказывали про Asterisk REST Interface. Это новый API для Asterisk. Сегодня хотим рассказать о том, как реализовать просто мониторинг SIP – устройств с помощью ARI и отправкой событий в Telegram.


Включаем ARI

Откроем FreePBX и перейдем в раздел SettingsAdvanced Settings и находим раздел Asterisk REST Interface:

Убедитесь, что парамеры Display Readonly Settings и Override Readonly Settings установлены в положение Yes. Asterisk REST Interface

Указываем следующие параметры:

  • Enable the Asterisk REST Interface - Yes;
  • ARI Username - заполняем имя нашего пользователя;
  • Allowed Origins - *;
  • ARI Password - пароль для пользователя;
  • Pretty Print JSON Responses - Yes;
  • Web Socket Write Timeout - 100;

Запоминаем логин и пароль и идем вперед.


Сделать Telegram бота

Далее, вам нужно создать Telegram – бота. Для этого, перейдите по ссылке ниже. Вернитесь сюда с токеном и идентификатором чата :)


PHP - скрипт

Делаем скрипт, который будет реализовывать мониторинг пиров. Вот его листинг:

<?php
#ваш токен и идентификатор чата в Telegram
$token = "токен";
$chat_id = "id_чата";
#параметры подключения к REST API Asterisk
$json_url = 'http://localhost:8088/ari/endpoints/SIP';
$username = 'ARI_Username';  // логин
$password = 'ARI_Password';  // пароль
#обращаемся за данными в REST
$ch = curl_init($json_url);
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD	=> $username . ":" . $password,  
CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
);
curl_setopt_array( $ch, $options );
$result = curl_exec($ch); //получаем JSON результат
$result = json_decode($result, true);
#формируем массив, который будем отправлять в Telegram
$telegram = array(
0 => array (
'Проблемы с SIP устройствами.' => 'Список:',
));
$num = 1;
//print_r($result);
foreach($result as $number => $massiv)
{
foreach($massiv  as  $key => $value)
{
#определяем элементы, которые не находятся в статусе online
if (($key == 'state') && ($value != 'online')) {
$telegram[$num] = array(
'Устройство '.$massiv['resource'].'' => 'в статусе '.$massiv['state'].'',
);
$num = $num + 1;
} else
{
}}};
#отправляем данные в Telegram в случае, если найдены устройства в статусе, отличном от online
if ($num > 1) {
foreach($telegram as $key => $value) {
foreach($value  as  $dev => $status) {
$txt .= "<b>".$dev."</b> ".$status."%0A";
}};
fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");};

Скачать скрипт

В случае скачивания, поменяйте расширение файла с .txt на .php

Закидываем скрипт в любую удобную директорию (файл сохраните как ari_monitoring.php), например /home/scripts и планируем его выполнение в cron:

crontab –e

И добавляем мониторинг раз в 2 минуты:

*/2 * * * * /usr/bin/php /home/scripts/ari_monitoring.php

Проверка

В результате, если устройство станет доступно, мы получим следующее уведомление:

Мониторинг устройств в Asterisk через ARI
Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Еще по теме:
img
Мы создали калькулятор инсталляции IP - АТС Asterisk. При планировании сервера и необходимого оборудования заполните соответствующие поля для расчета производительности, шлюзов и плат
img
Скачать руководство администратора Cisco UCM/CME на русском языке
img
Скачать руководство администратора FreePBX на русском языке
img
Рассказываем как рассчитать пропускную способность для IP-вызовов Cisco
img
Рассказываем как настроить отправку СМС сообщений из контакт-центра Октелл через Ростелеком СМС Реклама