Ukusebenza okude kwemibhalo yeMikrotik evela kwiTelegram

U-Alexander Koryukin wandityhalela kulo msebenzi GeXoGeN ngopapasho lwakheUkude uvule ikhompyuter simahla, ngaphandle kweSMS kwaye ngaphandle kwamafu, usebenzisa iMikrotikΒ«.

Kwaye inkcazo kwelinye lamaqela e-VK nguKirill Kazakov:

Ewe, ayikhuselekanga kwaphela. Ndingathanda ukubhala ibhot yetelegram eyamkela kuphela imiyalelo yokuvula kwiakhawunti yam.

Ndagqiba ekubeni ndibhale i-bot enjalo.

Ke, into yokuqala ekufuneka uyenzile kukwenza i-bot kwitelegram.

  • Sifumana kukhangelo iakhawunti enegama @botfather
  • Cofa kwi Qala iqhosha ezantsi kwesikrini
  • Emva koko simbhalela umyalelo / newbot

Emva koko siphendula imibuzo emi-2 elula:

  • Umbuzo wokuqala ligama le-bot ekufuneka yenziwe. MyMikrotikROuter
  • Umbuzo wesibini ligama lesiqhulo le-bot eyenziwayo (kufuneka iphele nge-bot) MikrotikROuter_bot

Ukuphendula, siya kufumana uphawu lwe-bot yethu, kwimeko yam:

Sebenzisa lo mqondiso ukufikelela kwi-HTTP API: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Ukusebenza okude kwemibhalo yeMikrotik evela kwiTelegram
Emva koko, kufuneka ufumane i-bot yethu kukhangelo ngegama @MikrotikROuter_bot kwaye cinezela i Qala iqhosha.

Emva koko, kufuneka uvule isikhangeli kwaye ufake umgca olandelayo:

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

Apho XXXXXXXXXXXXXXXXXX luphawu lwebhodlela yakho.

Iphepha elifana noku kulandelayo liza kuvula:

Ukusebenza okude kwemibhalo yeMikrotik evela kwiTelegram

Sifumana isicatshulwa esilandelayo kuyo:

"incoko":"i-id":631290,

Ke, sinalo lonke ulwazi oluyimfuneko lokubhala izikripthi zeMikrotik, ezizezi:

uphawu lweBot: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Ncokola ID apho kufuneka abhale khona: 631290

Ukujonga, sinokungena kwibhrawuza:

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

Kufuneka ufumane isiphumo:

Ukusebenza okude kwemibhalo yeMikrotik evela kwiTelegram

Ukusenzela lula, siya kongeza kwangoko imiyalelo ye-bot:

Ukufumana iakhawunti enegama @botfather
Emva koko simbhalela umyalelo / setcommands

  • Uya kubuza ukuba yeyiphi ibhoti

Sibhala:
@MikrotikROuter_bot

Yongeza imiyalelo:

  • helloworld - Umyalezo wovavanyo kwincoko 1
  • ukusebenza kwayo-Uvavanyo loMyalezo kwincoko 2
  • wolmypc-vusa iPC yam

Ngoku ukuba uchwetheza "/" kwincoko, kufuneka ufumane:

Ukusebenza okude kwemibhalo yeMikrotik evela kwiTelegram

Ngoku masiqhubele phambili kwiMikroTik.

I-RouterOS ine-console eluncedo yokukopa iifayile nge-ftp okanye i-http / https, into eluncedo ibizwa ngokuba yi-fetch, into esiya kuyisebenzisa.

Vula kwisigxina kwaye ungene:

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

Nceda uqaphele ukuba iMikroTik idinga "Β» ukubaleka uphawu Β«?' kwi-URL.

Kufuneka ufumane isiphumo:

Ukusebenza okude kwemibhalo yeMikrotik evela kwiTelegram

Ngoku masiqhubele phambili kwizikripthi:

Molo Lizwe

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}

ukusebenza kwayo

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"

Ungalibali ukucacisa i-mac echanekileyo kunye negama lojongano, kunye ne-bot-token kunye ne-chat_id.

Ngoku ndiza kuchaza kancinci into abayenzayo:

Umbhalo othi "helloworld" uthumela umyalezo: "Molo, hlabathi!" kwincoko yethu ne-bot.
Umbhalo othi "itsworking" uthumela umyalezo: "Vavanya KULUNGILE, iyasebenza!" kwincoko yethu ne-bot.
La maphepha eempendulo enzelwe iinjongo zokubonisa.
Ndongeze iskripthi se-"wolmypc" njengenye yokuphunyezwa okunokwenzeka.
Emva kokuphunyezwa kweskripthi, i-bot iya kubhala "wol OK" kwingxoxo.
Ngapha koko, ungaqhuba ngokupheleleyo nasiphi na iskripthi.

Yenza umsebenzi:

ITelegram.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

Imbonakalo efundekayoayicacanga ukuba kutheni, kodwa kwiscript esisebenzayo ayivezi idatha yehlabathi, yongeza iscript xa inkqubo iqala.
Ukuqala kweTelegram

: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") ;

yocingo

: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; 
} 

ntoni lo msebenzi

Khuphela imiyalezo yethu ethi "getUpdates" rhoqo ngemizuzwana engama-30, emva koko ucazulule ukufumanisa update_id (inombolo yomyalezo) kunye umbhalo (amaqela ethu) kunye chat_id . Ngokuzenzekelayo, i-getUpdates ibonisa ukusuka kwi-1 ukuya kwi-100 imiyalezo, ukwenzela ukuba kube lula, emva kokufunda umyalelo, sisusa umyalezo. ITelegram api ithi ukufunda umyalezo udinga inombolo yomyalezo + 1

/getUpdates?offset=update_id + 1

Zonke zivavanywe kwi-Mikrotik rb915 RouterOS 6.37.1
Ukuba uthumela imiyalelo emininzi ngexesha elinye, iya kuphunyezwa yonke ngokulandelelanayo ngesithuba semizuzwana engama-30.

PS Ndiyabulela kakhulu kuKirill Kazakov ngengcamango kunye nomhlobo wam uAlexander ngoncedo lwemibhalo.

iimbekiselo

habrahabr.ru/post/313794
1spla.ru/index.php/blog/telegram_bot_for_mikrotik
core.telegram.org/bots/api
wiki.mikrotik.com/wiki/Manual:Ukubhala

hlaziya:

03:11:16

Izikripthi eziphuculweyo:

Kufakwe itshekhi ye-chat_id
Ukukhangela isidenge, ukuba umntu ubhalela kwi-bot yethu, uya kumphendula: "Andikwazi ukuthetha nawe. ", iya kusiphendula ngokufanayo ukuba ayiwazi umyalelo.
Emva kokuphumeza umyalelo, i-bot ayibhalisi kwincoko (bona i-wolmypc script)

I-DUP

Ifunyenwe nge 7Umntu osisityebi7 ukuba ifayile engaphezulu ~14 imiyalezo ayisaqhubekeki ngokufumana umyalelo (iMikrotik imida). Ngoko ke, kwixesha elizayo, ndiya kutshintsha iskripthi sibe lua, enkosi 7Umntu osisityebi7 kuba oku, Ndandingazi malunga lua.

UPD 08.12.2016/XNUMX/XNUMX

kwiTelegram, ngokucacileyo, batshintshe kancinci "i-exhaust" ye-getUpdate. ngoku kwiskripthi esiphambili kufuneka ulungise umyalezo osuka ku-2 ukuya ku-1

utshintsho

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

Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° :

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

umthombo: www.habr.com