Gnìomhachadh iomallach de sgriobtaichean Mikrotik bho Telegram

Bhrùth Alexander Koryukin mi chun a’ bhuileachadh seo GeXoGeN leis an fhoillseachadh aigeIomallach tionndadh air a 'choimpiutair an-asgaidh, gun SMS agus gun sgòthan, a' cleachdadh Mikrotik".

Agus beachd ann am fear de na buidhnean VK le Kirill Kazakov:

Yeah, chan eil e sàbhailte idir. B’ fheàrr leam bot teileagram a sgrìobhadh nach gabh ach ri òrdughan gnìomhachaidh bhon chunntas agam.

Cho-dhùin mi a leithid de bot a sgrìobhadh.

Mar sin, is e a’ chiad rud a nì thu bot a chruthachadh ann an teileagram.

  • Lorg sinn san rannsachadh cunntas leis an ainm @botfather
  • Cliog air a 'phutan Tòisich aig bonn na sgrìn
  • An uairsin bidh sinn a’ sgrìobhadh an àithne / newbot dha

An uairsin freagraidh sinn 2 cheist shìmplidh:

  • Is e a’ chiad cheist ainm a’ bhot a thèid a chruthachadh. MyMicrotikRouter
  • Is e an dàrna ceist am far-ainm a tha air a’ bot a thathar a’ cruthachadh (bu chòir dha crìochnachadh le bot) MikrotikROuter_bot

Mar fhreagairt, gheibh sinn comharra ar bot, na mo chùis tha e:

Cleachd an tòcan seo gus faighinn gu HTTP API: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Gnìomhachadh iomallach de sgriobtaichean Mikrotik bho Telegram
An uairsin, feumaidh tu ar bot a lorg san rannsachadh le ainm @MikrotikROuter_bot agus brùth air a’ phutan Tòisich.

Às deidh sin, feumaidh tu am brabhsair fhosgladh agus cuir a-steach an loidhne a leanas:

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

Far a bheil XXXXXXXXXXXXXXXXXX comharradh do bot.

Fosglaidh duilleag coltach ris na leanas:

Gnìomhachadh iomallach de sgriobtaichean Mikrotik bho Telegram

Lorgaidh sinn an teacsa a leanas air:

"chat":{ "id":631290,

Mar sin, tha a h-uile fiosrachadh riatanach againn airson sgrìobhadh sgriobtaichean airson Mikrotik, is iad sin:

Comharra bot: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

ID còmhraidh far am bu chòir dha sgrìobhadh: 631290

Gus sgrùdadh a dhèanamh, is urrainn dhuinn a dhol tron ​​​​bhrobhsair:

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

Bu chòir an toradh fhaighinn:

Gnìomhachadh iomallach de sgriobtaichean Mikrotik bho Telegram

Airson ar goireasachd, cuiridh sinn òrdughan airson a’ bot sa bhad:

Lorg cunntas le ainm @botathair
An uairsin bidh sinn a’ sgrìobhadh àithne dha / setcommands

  • Bidh e a’ faighneachd dè am bot

Bidh sinn a’ sgrìobhadh:
@MikrotikROuter_bot

Cuir òrdughan ris:

  • helloworld < - Teachdaireachd deuchainn air cabadaich 1
  • an obair aige-Teachdaireachd deuchainn air cabadaich 2
  • wolmypc-dùisg mo PC

A-nis ma tha thu a’ sgrìobhadh “/” sa chat, bu chòir dhut:

Gnìomhachadh iomallach de sgriobtaichean Mikrotik bho Telegram

A-nis gluaisidh sinn air adhart gu MikroTik.

Tha goireas tòcan aig RouterOS airson faidhlichean a chopaigeadh tro ftp no http / https, canar fetch ris a’ ghoireas, agus is e sin a chleachdas sinn.

Fosgailte crìochnachadh agus cuir a-steach:

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

Thoir an aire gu bheil feum aig MikroTik air "» teicheadh ​​bhon t-soidhne «?' anns an URL.

Bu chòir an toradh fhaighinn:

Gnìomhachadh iomallach de sgriobtaichean Mikrotik bho Telegram

A-nis gluaisidh sinn air adhart gu sgriobtaichean:

Hàlo a Shaoghail

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}

a h-obair

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"

Na dìochuimhnich an t-ainm ceart mac agus eadar-aghaidh a shònrachadh, a bharrachd air bot-token agus chat_id.

A-nis mìnichidh mi beagan dè a nì iad:

Bidh an sgriobt "helloworld" a 'cur teachdaireachd: "Hello, world!" don chat againn leis a’ bhot.
Bidh an sgriobt “itsworking” a’ cur teachdaireachd: “Deuch ceart gu leòr, tha e ag obair!” don chat againn leis a’ bhot.
Tha na sgriobtaichean seo airson adhbharan taisbeanaidh.
Chuir mi an sgriobt “wolmypc” ris mar aon de na gnìomhan a dh’ fhaodadh a bhith ann.
Nuair a thèid an sgriobt a chuir gu bàs, sgrìobhaidh am bot “wol OK” chun chat.
Gu dearbh, faodaidh tu sgriobt sam bith a ruith.

Cruthaich obair:

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

Sealladh a ghabhas leughadhchan eil e soilleir carson, ach bhon sgriobt obrach chan eil e a’ foillseachadh dàta cruinneil, chuir e ris an sgriobt nuair a thòisicheas an siostam.
Tòiseachadh 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") ;

teileagram

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

Ciamar a tha an obair seo

Luchdaich sìos na teachdaireachdan “getUpdates” againn a h-uile 30 diog, an uairsin parse gus faighinn a-mach ùrachadh_id (àireamh teachdaireachd) agus teacsa (na sgiobaidhean againn) agus chat_id . Gu gnàthach, bidh getUpdates a’ taisbeanadh bho 1 gu 100 teachdaireachdan, airson goireasachd, às deidh dhuinn an àithne a leughadh, sguabaidh sinn às an teachdaireachd. Tha Telegram api ag ràdh airson teachdaireachd a leughadh feumaidh tu an àireamh teachdaireachd + 1

/getUpdates?offset=update_id + 1

Uile air a dhearbhadh air Mikrotik rb915 RouterOS 6.37.1
Ma chuireas tu mòran òrdughan aig an aon àm, thèid iad uile a chur an gnìomh mu seach le eadar-ama de 30 diog.

PS Mòran taing do Kirill Kazakov airson a’ bheachd agus mo charaid Alexander airson cuideachadh leis na sgriobtaichean.

iomraidhean

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

suas:

03:11:16

Sgriobtaichean leasaichte:

Chaidh seic a chur ris airson chat_id
A’ coimhead airson amadan, ma sgrìobhas cuideigin chun bot againn, freagraidh e e: “Chan urrainn dhomh bruidhinn riut. “, freagraidh e sinn mar an ceudna mura aithnich e an àithne.
Às deidh an àithne a chuir an gnìomh, bidh am bot a’ dì-chlàradh don chat (faic sgriobt wolmypc)

ÙRACHADH

Fhuaras le 7 fear 7 nach eil faidhle le teachdaireachdan os cionn ~ 14 air a phròiseasadh tuilleadh leis an àithne lorg (cuingealachaidhean Mikrotik). Mar sin, san àm ri teachd, atharraichidh mi an sgriobt gu lua, taing 7 fear 7 air a shon so, cha robh fios agam air lua.

ÙRACHADH 08.12.2016

ann an Telegram, a rèir choltais, dh’ atharraich iad beagan an “teàrnadh” de getUpdate. a-nis sa phrìomh sgriobt feumaidh tu an teachdaireachd a cheartachadh bho 2 gu 1

atharrachadh

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

заменить на :

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

Source: www.habr.com