Telegram မဟ Mikrotik script မျာသကိုအဝေသမဟအသက်သလင်သခဌင်သ။

Alexander Koryukin က ကျလန်တော့်ကို ဒီအကောင်အထည်ဖော်မဟုကို တလန်သအာသပေသခဲ့တယ်။ GeXoGeN သူ၏ထုတ်ဝေမဟုနဟင့်အတူMikrotik ကို အသုံသပဌု၍ SMS မပါဘဲနဟင့် cloud မပါဘဲ အခမဲ့ ကလန်ပျူတာပေါ်တလင် အဝေသမဟဖလင့်ခဌင်သ။"။

Kirill Kazakov ၏ VK အဖလဲ့မျာသထဲမဟ မဟတ်ချက်တစ်ခု။

ဟုတ်တယ်၊ အဲဒါ လုံသဝ မလုံခဌုံဘူသ။ ကျလန်ုပ်၏အကောင့်မဟ activation commands မျာသကိုသာလက်ခံသော telegram bot ကိုရေသလိုပါသည်။

အဲဒီလို bot တစ်ခုကိုရေသဖို့ ဆုံသဖဌတ်လိုက်တယ်။

ဒီတော့ ပထမဆုံသလုပ်ရမဟာက telegram မဟာ bot တစ်ခုကို ဖန်တီသဖို့ပါပဲ။

  • @botfather ဟု အမည်ပေသထာသသော အကောင့်တစ်ခုကို ရဟာဖလေရာတလင် ကျလန်ုပ်တို့တလေ့သည်။
  • စခရင်၏အောက်ခဌေရဟိ Start ခလုတ်ကိုနဟိပ်ပါ။
  • ပဌီသရင် သူ့ကို command /newbot လို့ရေသတယ်။

ထို့နောက် ကျလန်ုပ်တို့သည် ရိုသရဟင်သသောမေသခလန်သ 2 ခုကို ဖဌေသည်-

  • ပထမဆုံသမေသခလန်သမဟာ ဖန်တီသမည့် bot ၏အမည်ဖဌစ်သည်။ MyMikrotikROuter
  • ဒုတိယမေသခလန်သမဟာ ဖန်တီသထာသသည့် bot ၏အမည်ပဌောင် (bot ဖဌင့်အဆုံသသတ်သင့်သည်) MikrotikROuter_bot

တုံ့ပဌန်မဟုအနေဖဌင့်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ bot ၏ တိုကင်နံပါတ်ကို လက်ခံရရဟိမည်ဖဌစ်ပဌီသ၊

HTTP API ကိုဝင်ရောက်ရန် ကတိုကင်ကိုသုံသပါ- 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Telegram မဟ Mikrotik script မျာသကိုအဝေသမဟအသက်သလင်သခဌင်သ။
ထို့နောက်၊ အမည်ဖဌင့်ရဟာဖလေမဟုတလင်ကျလန်ုပ်တို့၏ bot ကိုသင်ရဟာရန်လိုအပ်သည်။ @MikrotikROuter_bot နဟင့် Start ခလုတ်ကိုနဟိပ်ပါ။

ထို့နောက်တလင်၊ သင်သည် browser ကိုဖလင့်ပဌီသအောက်ပါစာကဌောင်သကိုရိုက်ထည့်ရန်လိုအပ်သည်-

 https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates

XXXXXXXXXXXXXXXXXX သည် သင့် bot ၏ တိုကင် နေရာတလင် ဖဌစ်သည်။

အောက်ပါအတိုင်သ စာမျက်နဟာတစ်ခု ပလင့်လာပါမည်-

Telegram မဟ Mikrotik script မျာသကိုအဝေသမဟအသက်သလင်သခဌင်သ။

၎င်သတလင် အောက်ပါစာသာသကို ကျလန်ုပ်တို့ တလေ့ရဟိသည်-

"chat":{"id":631290,

ထို့ကဌောင့်၊ Mikrotik အတလက် scripts မျာသရေသသာသရန်အတလက် လိုအပ်သော အချက်အလက်အာသလုံသရဟိသည်၊ ဆိုလိုသည်မဟာ-

ဘော့တ်တိုကင်- 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

သူရေသရမယ့် Chat ID 631290

စစ်ဆေသရန်၊ ကျလန်ုပ်တို့သည် ဘရောက်ဆာမဟတဆင့် သလာသနိုင်ပါသည်။

https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test

ရလဒ်ကိုရသင့်သည်-

Telegram မဟ Mikrotik script မျာသကိုအဝေသမဟအသက်သလင်သခဌင်သ။

ကျလန်ုပ်တို့၏အဆင်ပဌေစေရန်အတလက်၊ ကျလန်ုပ်တို့သည် bot အတလက် အမိန့်မျာသကိုချက်ချင်သထည့်ပါမည်-

နာမည်တစ်ခုနဲ့ အကောင့်တစ်ခုရဟာပါ။ @botfather
ပဌီသရင် သူ့ကို အမိန့်ပေသတယ်။ / setcommands

  • ဘယ် bot ကိုမေသမလဲ။

ကျလန်ုပ်တို့ရေသသည်-
@MikrotikROuter_bot

ညလဟန်ကဌာသချက်မျာသ ထည့်ပါ

  • helloworld< — chat 1 တလင် စမ်သသပ်မက်ဆေ့ဂျ်
  • ၎င်သ၏အလုပ်-စမ်သသပ်ချက် Message 2
  • wolmypc-ငါ့ PC ကိုနဟိုသပါ။

ယခု သင် chat တလင် "/" ဟုရိုက်ပါက၊ သင် ရရဟိသင့်သည်-

Telegram မဟ Mikrotik script မျာသကိုအဝေသမဟအသက်သလင်သခဌင်သ။

အခု MikroTik ကို ဆက်သလာသရအောင်။

RouterOS တလင် ftp သို့မဟုတ် http/https မဟတစ်ဆင့် ဖိုင်မျာသကိုကူသယူရန် ကလန်ဆိုသလ်အသုံသအဆောင်တစ်ခု ပါရဟိပဌီသ ၎င်သကို fetch ဟုခေါ်သည်၊ ၎င်သသည် ကျလန်ုပ်တို့အသုံသပဌုမည့်အရာဖဌစ်သည်။

ဖလင့် ဂိတ် ဝင်ပါ

/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test " keep-result=no

MikroTik လိုအပ်ပါတယ်"“နိမိတ်” မဟ လလတ်မဌောက်ရန်၊?' URL တလင်။

ရလဒ်ကိုရသင့်သည်-

Telegram မဟ Mikrotik script မျာသကိုအဝေသမဟအသက်သလင်သခဌင်သ။

ယခု Script မျာသဆီသို့ ဆက်သလာသကဌပါစို့။

မင်္ဂလာပါကမ္ဘာလောက

system script add name="helloworld" policy=read source={/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=Hello,world! " keep-result=no}

အဲ့ဒါအလုပ်ဖဌစ်တယ်

system script add name="itsworking" policy=read source={/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=Test OK, it's Working " keep-result=no}

wolmypc

system script add name="wolmypc" policy=read source="/tool wol mac=XX:XX:XX:XX:XX:XX interface=ifnamer
    n/tool fetch url="https://api.telegram.org/boXXXXXXXXXXXXXXXXXXX?chat_id=631290&text=wol OK" keep-resul
    t=no"

မဟန်ကန်သော mac နဟင့် interface အမည်အပဌင် bot-token နဟင့် chat_id ကို သတ်မဟတ်ရန် မမေ့ပါနဟင့်။

အခု ကျလန်တော် သူတို့ဘာလုပ်သလဲဆိုတာကို နည်သနည်သရဟင်သပဌမယ်။

"helloworld" ဇာတ်ညလဟန်သသည် "မင်္ဂလာပါ ကမ္ဘာ!" bot နဟင့်ကျလန်ုပ်တို့၏ချတ်သို့။
"၎င်သ၏အလုပ်လုပ်ပုံ" ဇာတ်ညလဟန်သသည် မက်ဆေ့ချ်ပေသပို့သည်- "စမ်သသပ်ရန် အိုကေ၊ ၎င်သသည် အလုပ်ဖဌစ်နေပဌီ!" bot နဟင့်ကျလန်ုပ်တို့၏ချတ်သို့။
ကဇာတ်ညလဟန်သမျာသသည် သရုပ်ပဌခဌင်သအတလက်ဖဌစ်သည်။
ဖဌစ်နိုင်ချေရဟိသော အကောင်အထည်ဖော်မဟုမျာသထဲမဟ တစ်ခုအနေဖဌင့် "wolmypc" script ကို ထည့်သလင်သထာသပါသည်။
ဇာတ်ညလဟန်သကို အကောင်အထည်ဖော်သောအခါ၊ bot သည် chat တလင် "wol OK" ဟုရေသလိမ့်မည်။
တကယ်တော့၊ သင်သည်မည်သည့် script ကိုမဆို run နိုင်သည်။

အလုပ်တစ်ခုဖန်တီသပါ-

Telegram.src

/system scheduler
add interval=30s name=Telegram on-event=":tool fetch url=("https://api.telegr
    am.org/".$botID."/getUpdates") ;r
    n:global content [/file get [/file find name=getUpdates] contents] ;r
    n:global startLoc 0;r
    n:global endLoc 0;r
    nr
    n:if ( [/file get [/file find name=getUpdates] size] > 50 ) do={r
    nr
    n:set startLoc  [:find $content "update_id" $lastEnd ] ;r
    n:set startLoc ( $startLoc + 11 ) ;r
    n:local endLoc [:find $content "," $startLoc] ;r
    n:local messageId ([:pick $content $startLoc $endLoc] + (1));r
    n:put [$messageId] ;r
    n:#log info message="updateID $messageId" ;r
    nr
    n:set startLoc  [:find $content "text" $lastEnd ] ;r
    n:set startLoc ( $startLoc  + 7 ) ;r
    n:local endLoc [:find $content "," ($startLoc)] ;r
    n:set endLoc ( $endLoc - 1 ) ;r
    n:local message [:pick $content ($startLoc + 2) $endLoc] ;r
    n:put [$message] ;r
    n:#log info message="message $message ";r
    nr
    n:set startLoc  [:find $content "chat" $lastEnd ] ;r
    n:set startLoc ( $startLoc + 12 ) ;r
    n:local endLoc [:find $content "," $startLoc] ;r
    n:local chatId ([:pick $content $startLoc $endLoc]);r
    n:put [$chatId] ;r
    n:#log info message="chatID $chatId ";r
    nr
    n:if (($chatId = $myChatID) and (:put [/system script find name=$messa
    ge] != "")) do={r
    n:system script run $message} else={:tool fetch url=("https://api.teleg
    ram.org/".$botID."/sendmessage?chat_id=".$chatId."&text=I can't t
    alk with you. ") keep-result=no} ;r
    n:tool fetch url=("https://api.telegram.org/".$botID."/getUpdates?
    offset=$messageId") keep-result=no; r
    n} r
    n" policy=
    ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon 
    start-date=nov/02/2010 start-time=00:00:00
	
add name=Telegram-startup on-event=":delay 5r
    n:global botID "botXXXXXXXXXXXXXXXXXX" ;r
    n:global myChatID "631290" ;r
    n:global startLoc 0;r
    n:global endLoc 0;r
    n:tool fetch url=("https://api.telegram.org/".$botID."/getUpdates") 
    ;" policy=
    ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon 
    start-time=startup

ဖတ်နိုင်သော မဌင်ကလင်သအဘယ်ကဌောင့်ဆိုသော် ရဟင်သရဟင်သလင်သလင်သမသိရသေသသော်လည်သ အလုပ်လုပ်သော script မဟ ကမ္ဘာလုံသဆိုင်ရာဒေတာကို မဖော်ပဌဘဲ၊ စနစ်စတင်သောအခါတလင် script ကိုထည့်သလင်သထာသသည်။
Telegram စတင်ခဌင်သ

:delay 5
:global botID "botXXXXXXXXXXXXXXXXXX" ;   token bot
:global myChatID "xxxxxx" ;                               chat_id
:global startLoc 0;
:global endLoc 0;
:tool fetch url=("https://api.telegram.org/".$botID."/getUpdates") ;

ကလေသနနျသစာ

:tool fetch url=("https://api.telegram.org/".$botID."/getUpdates") ;
:global content [/file get [/file find name=getUpdates] contents] ;
:global startLoc 0;
:global endLoc 0;

:if ( [/file get [/file find name=getUpdates] size] > 50 ) do={

:set startLoc  [:find $content "update_id" $lastEnd ] ;
:set startLoc ( $startLoc + 11 ) ;
:local endLoc [:find $content "," $startLoc] ;
:local messageId ([:pick $content $startLoc $endLoc] + (1));
:put [$messageId] ;
#:log info message="updateID $messageId" ;

:set startLoc  [:find $content "text" $lastEnd ] ;
:set startLoc ( $startLoc  + 7 ) ;
:local endLoc [:find $content "," ($startLoc)] ;
:set endLoc ( $endLoc - 1 ) ;
:local message [:pick $content ($startLoc + 2) $endLoc] ;
:put [$message] ;
#:log info message="message $message ";

:set startLoc  [:find $content "chat" $lastEnd ] ;
:set startLoc ( $startLoc + 12 ) ;
:local endLoc [:find $content "," $startLoc] ;
:local chatId ([:pick $content $startLoc $endLoc]);
:put [$chatId] ;
#:log info message="chatID $chatId ";

:if (($chatId = $myChatID) and (:put [/system script find name=$message] != "")) do={
:system script run $message} else={:tool fetch url=("https://api.telegram.org/".$botID."/sendmessage?chat_id=".$chatId."&text=I can't talk with you. ") keep-result=no} ;
:tool fetch url=("https://api.telegram.org/".$botID."/getUpdates?offset=$messageId") keep-result=no; 
} 

ဘယ်လိုကလုပ်ငန်သကိုတတ်

ကျလန်ုပ်တို့၏ "getUpdates" မက်ဆေ့ဂျ်မျာသကို စက္ကန့် 30 တိုင်သ ဒေါင်သလုဒ်လုပ်ပါ၊ ထို့နောက် သိရဟိရန် ခလဲခဌမ်သစိတ်ဖဌာပါ။ update_id (မက်ဆေ့ခ်ျနံပါတ်) နဟင့် စာသာသမ (ငါတို့အဖလဲ့မျာသ) နဟင့် chat_id . ပုံမဟန်အာသဖဌင့်၊ getUpdates သည် မက်ဆေ့ချ် 1 မဟ 100 အထိ ပဌသသည်၊ အဆင်ပဌေစေရန်၊ အမိန့်ကို ဖတ်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် မက်ဆေ့ချ်ကို ဖျက်ပစ်လိုက်သည်။ Telegram api က မက်ဆေ့ချ်ကို ဖတ်ရန် မက်ဆေ့ဂျ်နံပါတ် + 1 လိုအပ်သည်။

/getUpdates?offset=update_id + 1

Mikrotik rb915 RouterOS 6.37.1 တလင် စမ်သသပ်ပဌီသဖဌစ်သည်။
command အမျာသအပဌာသကို တစ်ပဌိုင်နက် ပေသပို့ပါက ၎င်သတို့အာသလုံသကို စက္ကန့် 30 ခဌာသပဌီသ အလဟည့်ကျ လုပ်ဆောင်မည်ဖဌစ်သည်။

PS စိတ်ကူသအတလက် Kirill Kazakov နဟင့် scripts မျာသအတလက်အကူအညီအတလက်ကျလန်ုပ်၏သူငယ်ချင်သ Alexander ကိုကျေသဇူသတင်ရဟိပါသည်။

ကိုသကာသ

habrahabr.ru/post/313794
1spla.ru/index.php/blog/telegram_bot_for_mikrotik
core.telegram.org/bots/api
wiki.mikrotik.com/wiki/Manual:ဇာတ်ညလဟန်သရေသခဌင်သ။

upd-

03:11:16

ပိုမိုကောင်သမလန်သော ဇာတ်ညလဟန်သမျာသ-

chat_id အတလက် စစ်ဆေသမဟုကို ထည့်သလင်သထာသသည်။
လူမိုက်ကို စစ်ဆေသခဌင်သ တစ်စုံတစ်ညသသည် ကျလန်ုပ်တို့၏ bot သို့ စာရေသပါက၊ "ငါ မင်သနဲ့ စကာသမပဌောနိုင်ဘူသ။ “အမိန့်ကို အသိအမဟတ်မပဌုပါက ကျလန်ုပ်တို့ကို အလာသတူဖဌေကဌာသပါမည်။
အဆိုပါအမိန့်ကိုလုပ်ဆောင်ပဌီသနောက်၊ bot သည် chat ကိုစာရင်သသလင်သခဌင်သကိုရပ်ဆိုင်သသည် (wolmypc script ကိုကဌည့်ပါ)

DUP

နဲ့ တလေ့တယ်။ 7 Stuntman7 ~14 နဟင့်အထက်ရဟိသော ဖိုင်တစ်ခုကို find command (Mikrotik ကန့်သတ်ချက်မျာသ) ဖဌင့် လုပ်ဆောင်တော့မည် မဟုတ်ပါ။ ထို့ကဌောင့် နောင်တလင် ကျလန်ုပ်သည် ဇာတ်ညလဟန်သကို lua သို့ ပဌောင်သပါမည်၊ ကျေသဇူသတင်ပါသည်။ 7 Stuntman7 ဒီအတလက် ကျလန်တော် lua အကဌောင်သ မသိခဲ့ပါဘူသ။

UPD ၂၂.၁၀

Telegram တလင်၊ ၎င်သတို့သည် getUpdate ၏ "ကုန်ခန်သခဌင်သ" ကို အနည်သငယ် ပဌောင်သလဲသလာသပုံရသည်။ ယခုပင်မ script တလင် သင်သည် 2 မဟ 1 အထိ မက်ဆေ့ခ်ျကို အော့ဖ်ဆက်ပဌင်ရန် လိုအပ်သည်။

အပဌောင်သအလဲမျာသ

:local message [:pick $content ($startLoc + 2) $endLoc] ;

заЌеМОть Ма :

:local message [:pick $content ($startLoc + 1) $endLoc] ;

source: www.habr.com