Если вы планируете использовать множество скриптов на вашем устройстве MikroTik и отправлять их результаты в Telegram. Писать процедуру отправки сообщения в каждом крипте не очень рационально, оптимальным способом будет размещение функции «отправить сообщение в Телеграм» в отдельный скрипт. И обращение к этому скрипту по мере необходимости.
Теперь изменять параметры Тelegram уведомления придется всего в одном скрипте.
🔔 Для работы скрипта вы должны иметь Токен Телеграм бота и ID чата или персональный ID. Создание Telegram бота и получение необходимых ID не является темой этой статьи.
Статья на других языках:
🇺🇸 — MikroTik Scripts: Sending a message to Telegram (function)
🇪🇸 — MikroTik Scripts: Enviar un mensaje a Telegram (función)
🇫🇷 — Scripts MikroTik: Envoi d’un message à Telegram (fonction)
🇩🇪 — MikroTik-Skripte: Senden einer Nachricht an Telegram (funktion)
🇳🇱 — MikroTik-scripts: een bericht naar Telegram sturen (functie)
Скрипт «Отправка сообщения в Telegram»
В скрипте используется html разметка, какие варианты разметки использует Telegram можно прочитать — здесь.
Скрипт принимает на вход переменную MessageText, содержащую текст сообщения. MessageText не может быть пустым.
Если скрипт выполнен без ошибок в лог MikroTik записывается информация о отправке сообщения и текст.
Так как скрипт будет выполняться из другого скрипта, установка разрешений на выполнение скрипта не требуется.
[System] -> [Scripts] -> [+] -> [Name: MyTGBotSendMessage] -> [Don't Require Permissions]
Код скрипта:
:local BotToken "987654321:AAFJIVTAWodBwzGX2CLne6-PK4RFNSy-8OY";
:local ChatID "987654321";
:local ParseMode "html";
:local DisableWebPagePreview True;
:local SendText $MessageText;
:local tgUrl "https://api.telegram.org/bot$BotToken/sendMessage?chat_id=$ChatID&text=$SendText&parse_mode=$ParseMode&disable_web_page_preview=$DisableWebPagePreview";
/tool fetch http-method=get url=$tgUrl output=none;
:log info "Send Telegram Message: $MessageText";
Вызов скрипта «Отправка сообщения в Telegram» из другого скрипта
[System] -> [Scripts] -> [+] -> [Name: SendMessageToTelegram]
Для отправки сообщения вы должны передать параметр MessageText в скрипт MyTGBotSendMessage.
Код скрипта:
:local DeviceName [/system identity get name];
:local MessageText "\F0\9F\9F\A2 <b>$DeviceName:</b> <i>italic</i> <code>inline fixed-width code</code> plain text <a href=\"https://mhelp.pro/\">More Scripts</a>";
:local SendTelegramMessage [:parse [/system script get MyTGBotSendMessage source]];
$SendTelegramMessage MessageText=$MessageText;
Если при вызове скрипта вы получаете syntax error или ошибку failure: closing connection: <400 Bad Request> проблема может быть в использовании в тексте сообщения служебных символов MikroTik, для проверки попробуйте отправить обычный текст без специальных символов или символов разметки, на английском языке.
🟢 В этой статье обсуждалось создание скрипта Отправка сообщения в Telegram из Mikrotik. Я надеюсь теперь использование отправки сообщений в Telegram из устройств MikroTik стало понятней. Однако, если вы столкнетесь с каким-то проблемами при настройке, не стесняйтесь написать в комментариях. Я постараюсь помочь.
Благодарю за статью!
Как можно сделать что бы микротик сканировал устройства по близости и если устройство с нужным Мак адресом оказалось по близости то слал уведомление?
Именно поблизости, без подключения к самому Микротик?
Дружище, спасибо тебе огромное, воспользовался твоим методом у себя на Микроте, всё работает как часы. Крутяк, когда народ делиться подобными вещами, на таких людях в принципе мир и держится :). С наступающим праздником.
Николай, большое спасибо за приятный отзыв, Вам тоже всего хорошего в новом году!
При отправке сообщения на диск пишется файл с ответом сервера telegram. Чтобы не забивать диск, лучше использовать output=none здесь:
/tool fetch http-method=get url=$tgUrl output=none;
Большое спасибо, упустил этот момент. 🙂
Про комбинацию с дудкой бы! Такую же доходчивую статью.
Здравствуйте, спасибо за отзыв. Что за «комбинацию» с Dude? (насколько я понял)