В инструкции будет рассмотрен пример по созданию 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 перестал работать(