По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Друг, не так давно мы рассказывали про Asterisk REST Interface. Это новый API для Asterisk. Сегодня хотим рассказать о том, как реализовать просто мониторинг SIP – устройств с помощью ARI и отправкой событий в Telegram.
Включаем ARI
Откроем FreePBX и перейдем в раздел Settings → → Advanced Settings и находим раздел Asterisk REST Interface:
Убедитесь, что парамеры Display Readonly Settings и Override Readonly Settings установлены в положение Yes.
Указываем следующие параметры:
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
Проверка
В результате, если устройство станет доступно, мы получим следующее уведомление:
IP-АТС Yeastar поддерживают автоматическую настройку различных моделей конечного IP-оборудования от различных производителей. После недавнего обновления в приложение auto-provisioning была добавлена поддержка Gigaset DECT IP PRO.
Поддерживаемое оборудование Gigaset:
DECT базы Gigaset:
Gigaset N870 IP PRO
Gigaset N670 IP PRO
Телефоны Gigaset:
Gigaset Maxwell C
Gigaset S650H Pro
Gigaset SL750H Pro
Gigaset R650H Pro
$dbName_ecom = "to-www_ecom";
$GoodID = "5019000350";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName_ecom) or die(mysql_error());
$query_ecom = "SELECT `model`, `itemimage1`, `price`, `discount`, `url`, `preview115`, `vendor`, `vendorCode` FROM `items` WHERE itemid = '$GoodID';";
$res_ecom=mysql_query($query_ecom) or die(mysql_error());
$row_ecom = mysql_fetch_array($res_ecom);
echo 'Кстати, купить '.$row_ecom['vendor'].' '.$row_ecom['vendorCode'].' можно в нашем магазине Merion Shop по ссылке ниже. С настройкой поможем 🔧
Купить '.$row_ecom['model'].''.number_format(intval($row_ecom['price']) * (1 - (intval($row_ecom['discount'])) / 100), 0, ',', ' ').' ₽';
$dbName = "to-www_02";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
Для автоматической настройки Gigaset DECT IP PRO необходимо убедиться, что оборудование соответствует минимальным требованиям:
прошивка не ниже 30.12.0.9 для IP АТС Yeastar серии S
версия приложения auto-provisioning не ниже 1.8.22
версия DECT баз Nx70 серии не ниже 2.29.0
Шаг 1. Сбросить DECT базу Gigaset до заводских настроек
Шаг 2. Дождаться появления базы Gigaset в панели приложения auto-provisioning
Во время загрузки DECT база Gigaset рассылает мультикаст SIP сообщение. Это сообщение подхватывает IP АТС Yeastar серии S и база появляется в окне приложения.
Шаг 3. Откройте параметры базы и настройте так, как это Вам необходимо
Шаг 4. Перезагрузите DECT базу Gigaset
После настройки нажмите Сохранить. Появится запрос на перезагрузку DECT базы Gigaset.
Необходимо вручную или через web-интерфейс DECT базы Gigaset перезагрузить её. Сделать это необходимо только в первый раз. В дальнейшем, не смотря на запросы на перезагрузку со стороны IP АТС Yeastar, DECT базу Gigaset IP PRO перезагружать нет необходимости. Все настройки будут успешно применяться без перезагрузки.
Поддерживаемый функционал, который можно настроить с помощью автоматической настройки:
N670 до 20 телефонов
N870 до 50 телефонов
Телефонная книга LDAP
Ожидание вызова
Голосовая почта
Язык
Пароль администратора
Тональная схема
Часовой пояс
Сервер NTP
Кодеки
Настройка трубок/аккаунтов:
Вы можете настроить свои телефоны, выбрав трубку, номер и указав LDAP.
Чтобы зарегистрировать трубку, Вам необходимо открыть веб-интерфейс DECT базы Gigaset и начать регистрацию.
Характеристики
На данной вкладке можно включить/выключить ожидание вызова, голосовую почту и настроить удаленную телефонную книгу.
Настройки
На вкладке Предпочтения Вы можете настроить язык, указать пароль администратора, выбрать схему тонов, указать временную зону и сервер NTP.
Пароль администратора: в этом поле настройте свой пароль администратора. Если поле пустое, то Ваш пароль, введенный во время установки Nx70, не будет перезаписан.
Настройка кодеков
На вкладке Кодек Вы можете настроить используемые кодеки.
Примечание: Если отключить кодек G.729, то DECT база Gigaset сможет работать с 10 одновременными вызовами, вместо 8.
Настройка профилей LDAP
На вкладке LDAP Вы можете настроить до 10 профилей LDAP сервера.
Доступные для настройки параметры:
Directory name: название телефонной книги, которое будет отображаться на телефонных трубках
Server Address: IP адрес сервера LDAP (например, IP АТС Yeastar серии S)
Server Port: порт сервера LDAP (например, 389)
LDAP Search base (Base DN): dc=pbx, dc=com
Username: cn=admin, dc=pbx, dc=com
Password: пароль
Для включения указанной настройки LDAP, необходимо установить галочку Enable directory.
При написании некоторых скриптов бывает нужно обратиться какому-либо ресурсу. Это может быть HTTP/HTTPS запрос какой-нибудь HTML странички сайта, FTP запрос на скачивание файла или же, это может быть GET/POST запрос к удалённому ресурсу, для передачи на него какой-либо информации.
Для этих целей в роутерах MikroTik предусмотрен инструмент Fetch, о нём и поговорим.
Инструмент Fetch позволяет настроить отправку HTTP и FTP запросов к сетевому ресурсу, чтобы скопировать с, или же загрузить на него определённые данеые (web-страничка, файл). Поддержка HTTPS включена по умолчанию, проверка сертификатов, предъявляемых сетевыми ресурсами при запросе, не осуществляется. Включить проверку цепочки сертификации можно с помощью опции check-certificate.
Чтобы начать работу с инструментом Fetch, введите команду:
/tool fetch
Далее нужно задавать параметры ресурса, к которому Вы хотите обратиться, метод обращения и данные, которые нужно получить или загрузить на этот ресурс.
Доступны следующие параметры:
address - задаёт IP адрес ресурса, к которому необходимо обратиться;
ascii - включает поддержку ASCII (по умолчанию - no);
check-certificate - включает проверку цепочки сертификации удаленного ресурса;
dst-path - название файла, который нужно скачать и полный путь к нему на удаленном ресурсе;
host - доменное имя ресурса, к которому нужно обратиться. Например - shareit.merionet.ru;
http-method - метод HTTP обращения. Доступны следующие методы: get, post, put, delete. По умолчанию используется get;
http-data - данные, которые нужно отправить на удаленный ресурс, при использовании методов put и post;
http-content-type - идентификатор данных, которые нужно отправить на удаленный ресурс в формате MIME. По умолчанию - application/x-www-form-urlencoded;
keep-result - если данный параметр активирован, то будет создан входной файл;
mode - задаёт протокол, по которому будет осуществляться соединение с удаленным ресурсом. Можно задать http, https, ftp или tftp;
password - задаёт пароль который нужен для аутентификации на удаленном ресурсе. (Используйте только если удаленный ресурс требует аутентификации подключения);
port - порт, по которому будет осуществляться соединение;
src-path - название файла, который нужно загрузить на удаленный ресурс;
upload - если данный параметр активирован, то инструмент fetch будет использоваться именно для загрузки локального файла на удаленный ресурс. При этом требуется, чтобы были указаны src-path и dst-path файла;
url - URL путь к файлу. Может быть использовано вместо address или src-path;
user - имя пользователя, которое нужно ввести для аутентификации на удаленном ресурсе (используйте только если удаленный ресурс требует аутентификации подключения);
Давайте рассмотрим несколько use кейсов, когда Вам может пригодиться инструмент fetch.
Скачивание файла с удаленного ресурса
В статье про защиту роутера MikroTik методом превентивного блокирования адресов из "черных" списков мы уже прибегали к этому методу.
Для этого мы писали такую команду:
/tool fetch address=www.squidblacklist.org host=www.squidblacklist.org mode=http src-path=/downloads/drop.malicious.rsc
В данном случае, мы обращаемся к ресурсу www.squidblacklist.org по протоколу http и скачиваем файл /downloads/drop.malicious.rsc
Допустим, мы имеем дело с FTP сервером, требующим аутентификации, тогда запрос может быть таким:
/tool fetch address=192.168.11.48 src-path=conf.rsc user=admin mode=ftp password=samplepass dst-path=sample.rsc port=21 host="" keep-result=yes
Можно также указать URL, по которому доступен нужный файл для скачивания:
/tool fetch url="https://wiki.merionet.ru/rukovodstvo-administratora-freepbx-na-russkom-yazyke/Rukovodstvo_Administratora_FreePBX_na_russkom_yazyke.pdf" mode=http
Загрузка файлов на удаленный сервер может быть нужна для автоматизации процесса резервного копирования конфигурации роутера
Ниже приведен пример команды для отправки файла с бэкапом по протоколу FTP, на удаленный сервер по адресу 192.168.11.56, который требует аутентификации:
/tool> fetch address=192.168.11.56 src-path=cnfig.rsc user=admin mode=ftp password=samplepass dst-path=backup.rsc upload=yes
Отправление информации на удаленный сервер
С помощью инструмента fetch можно также отправлять информацию на удаленный сервер, используя HTTP запросы. Например, ниже показан пример того, как можно через POST запрос отправить json массив данных на удаленный сервер:
/tool fetch http-method=post http-content-type="application/json" http-data="{ "as": "AS16509 Amazon.com, Inc.", "city": "Boardman", "country": "United States", "countryCode": "US", "isp": "Amazon", "lat": 45.8696, "lon": -119.688, "org": "Amazon", "query": "54.148.84.95", "region": "OR", "regionName": "Oregon", "status": "success", "timezone": "America/Los_Angeles", "zip": "97818" }" url="http://locator.loc/index.php"
Сохранять результат как переменную
В версии RouterOS v6.43, появилась возможность сохранить результат команды fetch в переменную. Это может быть полезно, например, для написания скриптов, которые производят какие-либо действия в зависимости от того, какой был ответ на HTTP запрос.
Например, ниже приведен пример скрипта, который отсылает письмо SERVICE FAILED, если при запросе страницы PHP (check.php) возвратился “0” и SERVICE RUNNING, если запрос был успешно обработан.
{ :local result [/tool fetch url=http://192.168.11.56/check.php as-value output=user]; :if ($result->"status" = "finished") do={ :if ($result->"data" = "0") do={ /tool e-mail send to="mnadmin@mndomain.ru" subject="$[/system identity get name] export" body="$[/system clock get date] SERVICE FAILED; } else={ /tool e-mail send to="mnadmin@mndomain.ru" subject="$[/system identity get name] export" body="$[/system clock get date] SERVICE RUNNING; } } }
Предварительно, нужно чтобы был настроен почтовый сервер - tool e-mail> set server=192.168.1.34 set port=25 from=”mnmikrotik@mndomain.ru”
Кстати, в WinBox нет отдельной реализации инструмента fetch. Однако, мы можем использовать его, когда пишем скрипты через инструмент Scripts. Например, можно туда добавить скрипт, который мы привели выше: