7
Май

Отправка уведомлений из Mikrotik RouterOS прямо на мобильный при помощи Telegram

Хотелось поговорить об альтернативе классическим SMS-уведомлениям. В частности, о варианте с отправкой Push-уведомлений прямо на смартфон, планшет или даже ПК (PC, Mac, macOS, Linux). Все это без использования платных сервисов-посредников с минимальными затратами времени. В данном варианте реализации речь пойдет о сервисе Telegram у которого есть удобный API для управления ботами.

Начинаем работу с Telegram Первым делом качаем официальное мобильное приложение Telegram, создаем аккаунт. Все ссылки вы можете найти на официальном сайте.


После того, как аккаунт создан, при помощи поиска необходимо найти контакт «BotFather» – это главный бот, при помощи которого можно создавать новых ботов и управлять уже существующими. При желании, боту можно будет поменять имя, а также загрузить для него аватар. Дальнейшее «общение» с ботом будет происходить в виде текстовых команд. Для создания нового бота, выполните команду:

/newbot

После ввода и отправки данной команды, главный бот запросит отображаемое имя, в нем допускаются пробелы и произвольный формат самого названия.

После указания имени, бот запросит желаемый %username%. При выборе %username% обязательным условием является суффикс «bot» в конце имени, например MikrotikBot или Mikrotik_bot.

Если всё прошло успешно, бот-отец ответит сообщением, содержащим специальный token для доступа к API. Сам токен состоит из двух частей, разделенных двоеточием, например:

12558568:Hgsgf74tv7efcdfvhdvhfvcbn65imghmj

Следующим шагом рекомендуется проверить доступность API для вашего бота, делается это в браузере, путем открытия специального URL:

https://api.telegram.org/bot<ваш_токен>/getMe


Система возвращает ответы в формате JSON, в коде ответа должен присутствовать параметр «ok: true», если он есть – API доступен.
Собственно бот почти готов, осталось только научить Mikrotik отправлять сообщения, используя API Telegram.
Перед тем, как приступить к настройке RouterOS, необходимо узнать ID чата. При помощи мобильного приложения отправляем нашему боту команду:

/start

После чего, в браузере открываем специальный URL:

https://api.telegram.org/bot<ваш_токен>/getUpdates


В ответе нас интересует параметр message=>chat=>id, в нем хранится уникальный идентификатор чата между вами и созданным ботом. По сути, это ваш идентификатор как пользователя, он будет идентичен для всех ботов в рамках одного аккаунта.
Отправка тестового Telegram-сообщения
Теперь у нас есть все необходимое для того, чтобы отправлять сообщения при помощи API.
Отправка сообщений осуществляется при помощи браузера, по специально сформированной ссылке, которая имеет следующий вид:

https://api.telegram.org/bot<ваш_токен>/sendMessage?chat_id=&text=<сообщение>

Параметры:

<ваш_токен> – ваш уникальный токен для доступа к API,полученный ранее; 
<id_чата> – уникальный идентификатор чата, в который будет отправлено сообщение; 
<сообщение> – текст сообщения;

Текст сообщения может быть как на английском, так и на русском. Для сообщения на латинице, пробелы следует заменять на «%20», точно так же, как это делается в обычных URL. Для того, чтобы отправить сообщение кириллицей, предварительно текст необходимо конвертировать при помощи urlencode, это встроенная функция PHP. Наиболее простой вариант – воспользоваться любым онлайн сервисом, конвертацию выполняем в кодировку UTF-8.
Отправляем сообщения из Mikrotik RouterOS
Отправить сообщение из RouterOS не составит особых трудностей. Для этого можно воспользоваться следующим кодом:

tool fetch url="https://api.telegram.org/bot<ваш_токен>/sendMessage?chat_id=&text=<сообщение>" dst-path=telegram.txt

Для отладки, вы можете воспользоваться стандартными возможностями System – Scripts. Вот собственно и все, остальное за вами.
Как вариант, данную систему уведомлений можно комбинировать с USB-модемом. Например, при отключении основного интернет-канала, Mikrotik может отправить уведомление, используя резервный канал.
При этом данный метод совершенно бесплатен, в отличие от обычных SMS, за которые оператор взымает плату. Единственное ограничение – доступ к Интернет на самом Mikrotik и конечном устройстве с приложением Telegram (для отправки и получения).

Лично я использую Telegram API в связке со встроенным инструментом Netwatch, он предельно прост в использовании и настройке.

Параметры

Netwatch: Host – пингуемый узел; 
Interval – интервал в секундах между попытками проверки, по-умолчанию 1 минута; 
Timeout – таймаут ожидания, по-умолчанию 1000 мс;

Во вкладках UP и DOWN пишется код, который необходимо выполнить, когда хост доступен или не доступен. Команды (скрипт) выполняются только при смене статуса с up на down или наоборот.

Вариантов применения данного метода существует большое количество, если у вас есть интересная идея или реализация – можете поделиться ею в комментариях.

Обратная связь

    The average number of adverse effects was 3. T max is 23 minutes in females and 32 minutes in males. What other drugs will affect doxercalciferol Viagra natural sin receta. Archived from the original on 2009-08-14.

    Talk to your doctor before using this form of cefadroxil if you have diabetes. What should I tell my healthcare team before starting CABLIVI? There is no FDA guidance on the use of Tetracycline (oral) with respect to specific gender populations https://www.apotheke-rezeptfreie.com/. Opper K, Uder S, Song K Development of Heterogeneous and Homogeneous Platforms for Rapid Analysis of DNA-Protein Interactions.