В инструкции будет рассмотрен пример по созданию Telegram бота, для отправки push сообщений при падении какого-то узла из окружения роутера MikroTik. В качестве узла как правило выступает или основной провайдер или какой-то узел из локальной сети, такой как сервер.
Telegram bot это программа, которая выполняет различные, заведомо установленные функции. В паре с роутером MikroTik под задачу Telegram бота отводится функция осведомителя состояния сети.
Как настроить Telegram бот для MikroTik
Первым шагом с создании Telegram бота для MikroTik является его регистрация. Это действие можно совершать как на мобильном телефоне, так и на ПК. Для этого нужно: открыть Telegram и найти контакт BotFather.
Это специальный Telegram бот, который и будет создателем нового бота для MikroTik. В чате с BotFather нужно ввести команду для создания нового Telegram бота:
/newbot
ввести имя Telegram бота(уникальность необязательна)
MT-Sender
определить уникальное имя, с обязательным указанием окончания типа _bot
MikrotikConfigUkr_bot
На выходе необходимо зафиксировать API токен 1434763164:AAF4rlEsDiAu0l7mJKXIMfNzT-zV2Qc3CbQ, который будет использоваться в качестве регистрации отправителя.
Следующий шаг состоит из создания Telegram канала, в котором созданный Telegram бот будет передавать сообщения о статусе работы роутера MikroTik.
А далее можно добавить Telegram бота в канал с правами по умолчанию.
Чтобы Telegram бот мог передавать сообщения, его нужно запустить командой start или соответствующей кнопкой в персональном контакте с ботом.
/start
И написать тестовое сообщение в канал MT-Status. Это действие позволит просмотреть chat id в следующем шаге.
Последним параметром Telegram бота будет chat id, который можно найти после перехода по ссылке:
https://api.telegram.org/bot1434763164:AAF4rlEsDiAu0l7mJKXIMfNzT-zV2Qc3CbQ/getUpdates
где 1434763164:AAF4rlEsDiAu0l7mJKXIMfNzT-zV2Qc3CbQ API токен, выданный BotFather. В окне браузера выведется аналогичная информация:
{"ok":true,"result":[{"update_id":34080233,
"channel_post":{"message_id":2,"sender_chat":{"id":-1001186561350,"title":"MT-Status","type":"channel"},"chat":{"id":-1001186561350,"title":"MT-Status","type":"channel"},"date":1607945201,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}}]}
где «chat»:{«id»:-1001186561350, а именно -1001186561350 и есть требуемый параметр.
Для передачи сообщения в Telegram канал, достаточно выполнить команду:
/tool fetch url="https://api.telegram.org/bot1434763164:AAF4rlEsDiAu0l7mJKXIMfNzT-zV2Qc3CbQ/sendMessage\?chat_id=-1001186561350&text=Mikrotik-Config.ukr testing telegram bot" dst-path=Log.txt
Настройка Telegram бота в Netwatch
Полученный код легко применяется в утилите Netwatch. Будет рассмотрен пример, когда есть правила по переключению провайдеров, которые будут дополнены сообщением в Telegram при событии типа UP и DOWN.
Настройка находится Tools→Netwatch
/tool netwatch
add disabled=yes down-script="/ip route disable [find comment=\"ISP-1\"]\r\
\n/ip route enable [find comment=\"ISP-2\"]\r\
\n:foreach i in=[/ip firewall connection find protocol~\"tcp\"] do={ /ip f\
irewall connection remove \$i }\r\
\n:foreach i in=[/ip firewall connection find protocol~\"udp\"] do={ /ip f\
irewall connection remove \$i }\r\
\n/tool fetch url=\"https://api.telegram.org/bot1434763164:AAF4rlEsDiAu0l7\
mJKXIMfNzT-zV2Qc3CbQ/sendMessage\\\?chat_id=-1001186561350&text=ISP-1 IS D\
OWN\" dst-path=Log.txt\r\
\nlog warning (\"ISP-1 IS DOWN\")" host=8.8.8.8 interval=30s up-script="/i\
p route disable [find comment=\"ISP-2\"]\r\
\n/ip route enable [find comment=\"ISP-1\"]\r\
\n:foreach i in=[/ip firewall connection find protocol~\"tcp\"] do={ /ip f\
irewall connection remove \$i }\r\
\n:foreach i in=[/ip firewall connection find protocol~\"udp\"] do={ /ip f\
irewall connection remove \$i }\r\
\n/tool fetch url=\"https://api.telegram.org/bot1434763164:AAF4rlEsDiAu0l7\
mJKXIMfNzT-zV2Qc3CbQ/sendMessage\\\?chat_id=-1001186561350&text=ISP-1 IS U\
P\" dst-path=Log.txt\r\
\nlog warning (\"ISP-1 IS UP\")"










» “chat”:{“id”:-1001186561350, а именно -1001186561350 и есть требуемый параметр. »
Я получил свой chat id…..
Что это такое и куда вводить?
» /tool fetch url=»https://api.telegram.org/bot1434763164:AAF4rlEsDiAu0l7mJKXIMfNzT-zV2Qc3CbQ/sendMessage\?chat_id=-1001186561350&text=Mikrotik-Config.ukr testing telegram bot» dst-path=Log.txt «
«/tool fetch url…» эту команду нужно ввести в netwatch, ниже сразу приведен пример по отправке сообщений в Telegram
после перехода на os7скрипт в телеграмм-бот перестал показывать температуру и вольтаж
# set temp
:global tempC [/system health get temperature];
# set voltage
:global volt [/system health get voltage];
Как подправить скрипт??
[/system health get 0 value]
Как добавить к боту ещё одного админа? Или нужно создавать второго бота?
А что если выводит только эту строку и все ? Как получить айди ?
{«ok»:true,»result»:[]}
Значит бот не запущен, а также можно написать ему сообщение в чат(через Телеграм)
Надо написать в вашем канале с ботом любое сообщение, по ссылке отобразиться id этого чата.
Как получать сообщения на кириллице?
можно тут https://www.urlencoder.org через encode перевести фразу к примеру настройка-микротик.укр в %D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D1%82%D0%B8%D0%BA.%D1%83%D0%BA%D1%80 и использовать последнее значение в сообщении
К чему можно подключить бота,чтобы было понятно когда есть свет в доме,а когда нет?🙈
К сожалению на сайте нет прямой инструкции по вашему запросу. Тут только описание, как с помощью роутера MikroTik можно отправлять сообщения в Telegram бот. Применять эти данные можете по разному
в любому устройству которое имеет внутренний ip адрес, на микротике делаем статику и в нетвотч пишем ip
А есть возможность указать какие-то дополнительные параметры в команде для бота на Mikrotik, чтобы сообщение автоматически удалялось в чате Телеграм через день?
Спасибо! Теперь мой роутер MikroTik отправляет сообщения прямо в мой Telegram канал
А как таким образом отправлять эмодзи?
В каком формате их писать?
Спробуйте теж за допомогою цього сайту: https://www.urlencoder.org
Скопіюйте туди емодзі і encode його.
А можете будь ласка привести приклад скрипта с для моніторинга ip адреси
для up і down окремо
Після оновлення ROS 7.11 і вище, необхідно виправити скрипт
/tool fetch mode=https url=»https://api.telegram.org/botXXX/sendMessage?chat_id=-XXX&parse_mode=html&text=gw: srv-01 — UP» http-method=post keep-result=no
Дякую за підказку, а то ледь не закинув цю справу.
на 7.15 перестал работать(
Строка передачи команды отправки сообщения содержит ошибку: в тексте статьи написано «….sendMessage\?chat_id…» , а нужно «…sendMessage?chat_id…»
Ресурс очень полезный, спасибо!
RouterOS 7.18.2 Скрипт працює!
P.S Але якщо увімкнути DoH то перестає працювати, помилка dns
Прикольна інструкція, зробив сповіщення про відсутність світла через Netwatch. Пінгуючи адресу розумної розетки.
Додайте, що треба додавати в кінці скрипта output=none (на нових версіях прошивки 7.21). У мене через його відсутність Netwatch не спрацьовував, писало помилку доступа в логах.
І з DoH від cloudflare все працює