Created
January 19, 2025 21:39
-
-
Save chertov/b8e82c0379bd70a37092f894e349b5ac to your computer and use it in GitHub Desktop.
Mikrotik send sms to telegram
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ```Mikrotik | |
# /system scheduler add name="checkSMS" on-event=smsToTelegram interval=10s | |
# ``` | |
# smsToTelegram script | |
:local botToken "1111111111:AAA-A-AAAAAAAAAAAA-AAAAAAAAAAAAAAAA"; | |
:local chatId "11111111"; | |
:local totalSMS [/tool sms inbox print count-only]; | |
:global urlEncode do={ | |
:local string $1; | |
:local stringEncoded ""; | |
:for i from=0 to=([:len $string] - 1) do={ | |
:local char [:pick $string $i] | |
:if ($char = " ") do={ :set $char "%20" } | |
:if ($char = "\"") do={ :set $char "%22" } | |
:if ($char = "#") do={ :set $char "%23" } | |
:if ($char = "\$") do={ :set $char "%24" } | |
:if ($char = "%") do={ :set $char "%25" } | |
:if ($char = "&") do={ :set $char "%26" } | |
:if ($char = "+") do={ :set $char "%2B" } | |
:if ($char = ",") do={ :set $char "%2C" } | |
:if ($char = "-") do={ :set $char "%2D" } | |
:if ($char = ":") do={ :set $char "%3A" } | |
:if ($char = "[") do={ :set $char "%5B" } | |
:if ($char = "]") do={ :set $char "%5D" } | |
:if ($char = "{") do={ :set $char "%7B" } | |
:if ($char = "}") do={ :set $char "%7D" } | |
:set stringEncoded ($stringEncoded . $char) | |
} | |
:return $stringEncoded; | |
} | |
:foreach smsId in=[/tool sms inbox find] do={ | |
:local smsSender [/tool sms inbox get $smsId phone]; | |
:local smsText [/tool sms inbox get $smsId message]; | |
:local smsTimestamp [/tool sms inbox get $smsId timestamp]; | |
# :put "smsSender: $smsSender"; | |
:local message ("SMS from: $smsSender\n\n" . \ | |
"[https://t.me/$smsSender](https://t.me/$smsSender)\n\n" . \ | |
"[https://wa.me/$smsSender](https://wa.me/$smsSender)\n\n" . \ | |
"Time: $smsTimestamp\n\n" . \ | |
"Text: $smsText\n\n" \ | |
); | |
# :put "message: $message"; | |
:local encodedMessage [$urlEncode $message]; | |
# :put "encodedMessage: $encodedMessage"; | |
:local postData ("chat_id=" . $chatId . "&parse_mode=" . "Markdown" . "&text=" . $encodedMessage); | |
:do { | |
:local result [/tool fetch url=("https://api.telegram.org/bot" . $botToken . "/sendMessage") \ | |
http-method=post \ | |
http-data=$postData \ | |
mode=https \ | |
output=user \ | |
as-value ]; | |
# keep-result=no \ | |
# Проверка статуса выполнения | |
:put ("result " . $result->"status"); | |
:if ($result->"status" = "finished") do={ | |
# :put "send ok" | |
/tool sms inbox remove $smsId; | |
} else={ | |
:put ("send failed: status = " . $result->"status"); | |
} | |
} on-error={ | |
:put "Fetch ERROR" | |
}; | |
:delay 5s; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment