MikroTik Скрипты: Отправка сообщения в Telegram (функция)

Если вы планируете использовать множество скриптов на вашем устройстве 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"

Вызов скрипта «Отправка сообщения в 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;
Вызов скрипта «Отправить сообщение в Telegram»

Если при вызове скрипта вы получаете syntax error или ошибку failure: closing connection: <400 Bad Request> проблема может быть в использовании в тексте сообщения служебных символов MikroTik, для проверки попробуйте отправить обычный текст без специальных символов или символов разметки, на английском языке.


? В этой статье обсуждалось создание скрипта Отправка сообщения в Telegram из Mikrotik. Я надеюсь теперь использование отправки сообщений в Telegram из устройств MikroTik стало понятней. Однако, если вы столкнетесь с каким-то проблемами при настройке, не стесняйтесь написать в комментариях. Я постараюсь помочь.

15 комментариев к “MikroTik Скрипты: Отправка сообщения в Telegram (функция)”

  1. К примеру у вас несколько MikroTik, создать супергруппу, добавить боты и добавить ветви (ветки), чтобы каждый MikroTik писал в свою ветку.

    Добавить номер ветки (message_thread_id):
    :local ThreadID «Х»;

    Заменить на:
    :local tgUrl «https://api.telegram.org/bot$BotToken/sendMessage?chat_id=$ChatID&message_thread_id=$ThreadID&text=$SendText&parse_mode=$ParseMode&disable_web_page_preview=$DisableWebPagePreview»;

    Ответить
  2. Добрый день! А у кого-нибудь есть скрипт о потери связи с устройством и вычислением времени которое он был подключен к сети?

    Ответить
  3. строке /tool fetch http-method=get url=»https://api.telegram.org/bot$BotToken/sendMessage\?chat_id=$ChatID&text=$SendText&parse_mode=$ParseMode&disable_web_page_preview=$DisableWebPagePreview» output=none;

    нужно поставить знак «\»перед «?»

    вот так /tool fetch http-method=get url=»https://api.telegram.org/bot$BotToken/sendMessage\?chat_id=$ChatID&text=$SendText&parse_mode=$ParseMode&disable_web_page_preview=$DisableWebPagePreview» output=none;

    Ответить
  4. Здравствуйте. Подскажите а отправку txt файлов из микротика возможно сюда прикрутить? Спасибо

    Ответить
  5. Благодарю за статью!
    Как можно сделать что бы микротик сканировал устройства по близости и если устройство с нужным Мак адресом оказалось по близости то слал уведомление?

    Ответить
  6. Дружище, спасибо тебе огромное, воспользовался твоим методом у себя на Микроте, всё работает как часы. Крутяк, когда народ делиться подобными вещами, на таких людях в принципе мир и держится :). С наступающим праздником.

    Ответить
  7. При отправке сообщения на диск пишется файл с ответом сервера telegram. Чтобы не забивать диск, лучше использовать output=none здесь:
    /tool fetch http-method=get url=$tgUrl output=none;

    Ответить

Оставьте комментарий