Si planeas usar muchos scripts en tu dispositivo MikroTik y enviar sus resultados a Telegram. No es racional escribir el procedimiento para enviar un mensaje en cada script, la mejor manera sería colocar la función «enviar mensaje a Telegram» en un script separado. Y refiriéndose a este script según sea necesario.
Ahora tendrás que cambiar los parámetros de notificación de Telegram en un solo script.
? Para que el script funcione, debe tener un token de bot de Telegram y una identificación de chat o una identificación personal. Crear un bot de Telegram y obtener las ID requeridas no es el tema de este artículo.
Artículo en otros idiomas:
?? – MikroTik Scripts: Sending a message to Telegram (function)
?? – MikroTik Скрипты: Отправка сообщения в Telegram (функция)
?? – Scripts MikroTik: Envoi d’un message à Telegram (fonction)
?? – MikroTik-Skripte: Senden einer Nachricht an Telegram (Funktion)
?? – MikroTik-scripts: een bericht naar Telegram sturen (functie)
Script «Enviar un mensaje a Telegram»
Dado que el script se ejecutará desde otro script, no es necesario establecer los permisos de ejecución del script.
В скрипте используется html разметка, какие варианты разметки использует Telegram можно прочитать – здесь.
El script usa marcado html, cuyas opciones de marcado que usa Telegram se pueden leer – aquí.
El script acepta la variable MessageText, que el texto del mensaje. MessageText no puede estar vacío.
Si el script se ejecuta sin errores, la información sobre el envío de un mensaje y texto se registra en el registro de MikroTik.
[System] -> [Scripts] -> [+] -> [Name: MyTGBotSendMessage] -> [Don't Require Permissions]
Código de secuencia de comandos:
: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 keep-result=no;
:log info "Send Telegram Message: $MessageText";
Llamar al script «Enviar un mensaje a Telegram» desde otro script
[System] -> [Scripts] -> [+] -> [Name: SendMessageToTelegram] -> [Policy: read, write, policy, test]
Para enviar un mensaje, debe pasar el parámetro MessageText al script MyTGBotSendMessage.
Código de secuencia de comandos:
: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;
If, when calling the script, you receive a syntax error or a failure: closing connection: <400 Bad Request> error, the problem may be in the use of MikroTik service characters in the message text, for verification try sending a plain text without special characters or markup characters, in English.
Si, al llamar al script, recibe un syntax error o una failure: closing connection: <400 Bad Request> error, el problema puede estar en el uso de los caracteres del servicio MikroTik en el texto del mensaje, para la verificación, intente enviar un texto sin formato sin caracteres especiales o caracteres de marcado, en inglés.
? Este artículo discutió la creación del script Enviar mensaje a Telegram de Mikrotik. Espero que ahora el uso de enviar mensajes a Telegram desde dispositivos MikroTik se haya vuelto más claro. Sin embargo, si tiene algún problema durante la configuración, no dude en escribir en los comentarios. Trataré de ayudar.
Se verifica el script: hAP ac lite [RouterBOARD 952Ui-5ac2nD], RouterOS 6.47.8 (estable).