Отправка сообщения - Mikrotik Telegram Send Message
Для мониторинга и оперативных уведомлений для меня удобнее использовать telegram, чем почту. Для этого я создал в Telegram бота и настроил очень удобную и простую функцию на устройствах mikrotik.
Создание бота
Через официальный бот @BotFather легко создается в 2-3 нажатия. /new bot — придумываем название — придумываем логин



После создания смотрим информацию API Token и копируем себе
Token выглядит примерно так: 1064657353:AAFH1MioTXgrmHGZмAr-XcGE18BShD5ud0Y
Находим по логину своего свежесозданного бота и отправляем ему пару сообщений.
Далее создаем ссылку следующего вида со своим API token:
https://api.telegram.org/botAPI_token/getUpdates
Запускаю в браузере, где необходимо найти строку chat id:
Выглядит примерно так: chat»:{«id»:268900781
API Token: 1064657353:AAFH1MioTXgrmHGZмAr-XcGE18BShD5ud0Y
chat id: :268900781
Отправка сообщения через микротик тест бота
Для проверки работоспособности в командой строке вводим:
/tool fetch url="https://api.telegram.org/botAPI_TOKEN/sendMessage\?chat_id=CHAT_ID&text=test"
(Подставляем свои API_TOKEN и CHAT_ID) Получаем сообщение в боте — отлично
failure: closing connection: <400 Bad Request>
При такой ошибке надо проверять синтаксис команды
В целом все уже работает и можно использовать. Вводить можно только транслит.
Mikrotik отправить сообщение на русском
Для использования кириллицы (использовать русские буквы) в Router OS можно использовать UTF кодирование.
Упал канал — %D0%A3%D0%BF%D0%B0%D0%BB+%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB
Онлайн кодирование ссылка



Создание функции
Функция в Router OS для удобной отправки сообщений в телеграм. Mikrotik telegram function send message
Вставляю в скрипт System-> Script (подставить свои значения токена и чат ид) Run script
:global token 1321433216:fxztrqErpVmdeYCCWYlydtWfqyKsbKlSwJN;
:global chatid 362906004;
:global sendT do={:global token; :global chatid; /tool fetch url=("https://api.telegram.org/bot".$token."/sendMessage\?chat_id=".$chatid."&text=".$text."") keep-result=no;};
Теперь не надо вводить длинный код при отправке сообщений в телеграм, а можно использовать простую короткую функцию. Например так:
$sendT text="test mikrotik"
Можно легко использовать внутри других скриптов или функций.
Для того чтобы значения не терялись, можно данный скрипт добавить в scheduler при запуске устройства.
$sendT text=»test mikrotik»
status: failed
failure: closing connection: <404 Not Found> 149.154.167.220:443 (4)
Попробуйте проверить сначало в браузере
https://api.telegram.org/botTELEGRAM_API/sendMessage?chat_id=CHAT_ID&text=test
Если отработает значит проблема в синтаксисе
с микротика через терминал коммандой
/tool fetch url=»https://api.telegram.org/botAPI_TOKEN/sendMessage\?chat_id=-1001594485642&text=Test Message» keep-result=no сообщение приходит в телеграмм а вот через создание функций, ошибку выводит
$sendT text=»testmikrotik»
status: failed
failure: closing connection: <404 Not Found> 149.154.167.220:443 (4)
Понял, там в функции немного синтаксис отличается где то знак / или \\, как время будет посмотрю скину
ок, хорошо буду ждать
Исправил в статье. След.изменения
Внутри функции после do необходимо подтянуть глобальные переменные
В тексте url добавил слово bot перед токеном
По поводу применения:
В консоли будет работать, а для использования в скриптах надо:
:global sendT;
$sendT text=»test mikrotik»
Спасибо за полезное дополнение