Gníomhachtú iargúlta scripteanna Mikrotik ó Telegram

Bhrúigh Alexander Koryukin mé chuig an gcur i bhfeidhm seo GeXoGeN lena fhoilsiúAg casadh iargúlta ar an ríomhaire saor in aisce, gan SMS agus gan scamaill, ag baint úsáide as Mikrotik".

Agus trácht i gceann de na grúpaí VK le Kirill Kazakov:

Sea, níl sé slán ar chor ar bith. B'fhearr liom bot teileagraim a scríobh nach nglacann ach le horduithe gníomhachtaithe ó mo chuntas.

Chinn mé bot den sórt sin a scríobh.

Mar sin, is é an chéad rud atá le déanamh ná bot a chruthú i teileagram.

  • Faighimid sa chuardach cuntas darb ainm @botfather
  • Cliceáil ar an gcnaipe Tosaigh ag bun an scáileáin
  • Ansin scríobhaimid an t-ordú / newbot dó

Ansin freagraimid 2 cheist shimplí:

  • Is í an chéad cheist ná ainm an bot a bheidh le cruthú. MyMicrotikRouter
  • Is é an dara ceist leasainm an róba atá á chruthú (ba chóir go gcríochnódh sé le bot) MikrotikROuter_bot

Mar fhreagra air sin, gheobhaidh muid comhartha ár bot, i mo chás féin é:

Úsáid an comhartha seo chun rochtain a fháil ar an API HTTP: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Gníomhachtú iargúlta scripteanna Mikrotik ó Telegram
Ansin, ní mór duit ár bot a aimsiú sa chuardach de réir ainm @MikrotikROuter_bot agus brúigh an cnaipe Tosaigh.

Ina dhiaidh sin, ní mór duit an brabhsálaí a oscailt agus an líne seo a leanas a chur isteach:

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

Cá bhfuil XXXXXXXXXXXXXXX mar chomhartha do bot.

Osclófar leathanach cosúil leis an méid seo a leanas:

Gníomhachtú iargúlta scripteanna Mikrotik ó Telegram

Faighimid an téacs seo a leanas air:

"comhrá":{ "id":631290,

Mar sin, tá an fhaisnéis go léir is gá againn chun scripteanna a scríobh do Mikrotik, eadhon:

Comhartha bot: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

ID comhrá áit ar cheart dó scríobh: 631290

Chun seiceáil, is féidir linn dul tríd an mbrabhsálaí:

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

Ba cheart an toradh a fháil:

Gníomhachtú iargúlta scripteanna Mikrotik ó Telegram

Ar mhaithe lenár n-áisiúlacht, cuirfimid orduithe don bot láithreach:

Cuntais a aimsiú le hainm @botathair
Ansin scríobhaimid ordú dó / setcommands

  • Fiafróidh sé cén bot

Scríobhaimid:
@MikrotikROuter_bot

Cuir orduithe leis:

  • dia duit< — Tástáil teachtaireacht ar chomhrá 1
  • itswork-Teachtaireacht Tástála ar chomhrá 2
  • wolmypc dúisigh mo ríomhaire

Anois má chlóscríobhann tú "/" sa chomhrá, ba cheart duit:

Gníomhachtú iargúlta scripteanna Mikrotik ó Telegram

Anois, a ligean ar bogadh ar aghaidh go dtí MikroTik.

Tá fóntais consól ag RouterOS chun comhaid a chóipeáil trí ftp nó http / https, tugtar fetch ar an bhfóntas, agus is é sin a úsáidfimid.

Oscailte teirminéal agus cuir isteach:

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

Tabhair faoi deara le do thoil go bhfuil gá ag MikroTik "» chun éalú ón gcomhartha «?' san URL.

Ba cheart an toradh a fháil:

Gníomhachtú iargúlta scripteanna Mikrotik ó Telegram

Anois bogadh ar aghaidh chuig scripteanna:

helloworld

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 chuid oibre

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"

Ná déan dearmad an t-ainm ceart mac agus comhéadan a shonrú, chomh maith le bot-token agus chat_id.

Anois míneoidh mé beagán cad a dhéanann siad:

Seolann an script "helloworld" teachtaireacht: "Dia duit, domhan!" chuig ár gcomhrá leis an bot.
Seolann an script "itsworking" teachtaireacht: "Tást ceart go leor, tá sé ag obair!" chuig ár gcomhrá leis an bot.
Tá na scripteanna seo chun críocha taispeántais.
Chuir mé an script "wolmypc" leis mar cheann de na feidhmiúcháin a d'fhéadfadh a bheith ann.
Nuair a bheidh an script curtha i gcrích, scríobhfaidh an bot “wol OK” chuig an gcomhrá.
Go deimhin, is féidir leat a reáchtáil go hiomlán aon script.

Cruthaigh tasc:

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

Amharc Inléiteníl sé soiléir cén fáth, ach ón script oibre ní nochtann sé sonraí domhanda, chuir sé an script leis nuair a thosaíonn an córas.
Telegram tosaithe

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

Telegram

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

Conas a oibríonn seo

Íoslódáil ár dteachtaireachtaí "getUpdates" gach 30 soicind, ansin parsáil chun a fháil amach nuashonrú_aitheantas (uimhir na teachtaireachta) agus téacs (ár bhfoirne) agus comhrá_id . De réir réamhshocraithe, taispeánann getUpdates ó 1 go 100 teachtaireacht, mar áis, tar éis an t-ordú a léamh, scriosaimid an teachtaireacht. Deir Telegram api chun teachtaireacht a léamh is gá duit an uimhir teachtaireachta + 1

/getUpdates?offset=update_id + 1

Gach tástáil ar Mikrotik rb915 RouterOS 6.37.1
Má sheolann tú go leor orduithe ag an am céanna, déanfar iad go léir a fhorghníomhú ar a seal le eatramh de 30 soicind.

PS Míle buíochas le Kirill Kazakov as an smaoineamh agus le mo chara Alexander as cabhair leis na scripteanna.

tagairtí

habrahabr.ru/post/313794
1spla.ru/index.php/blog/telegram_bot_for_mikrotik
croí.telegram.org/bots/api
wiki.mikrotik.com/wiki/Lámhleabhar:Scriptiú

suas:

03:11:16

Scripteanna feabhsaithe:

Cuireadh seic le haghaidh chat_id leis
Ag seiceáil le haghaidh amadán, má scríobhann duine éigin chuig ár bot, beidh sé freagra air: "Ní féidir liom labhairt leat. “, freagróidh sé sinn mar an gcéanna mura n-aithníonn sé an t-ordú.
Tar éis an t-ordú a chur i gcrích, díliosálann an bot don chomhrá (féach script wolmypc)

Suas chun dáta

Aimsíodh le 7 Fear Gleas 7 nach bhfuil comhad a bhfuil os cionn ~14 teachtaireacht aige á phróiseáil a thuilleadh ag an ordú aimsithe (teorainneacha Mikrotik). Dá bhrí sin, sa todhchaí, athróidh mé an script go lua, a bhuíochas sin 7 Fear Gleas 7 le haghaidh seo, ní raibh a fhios agam faoi lua.

Suas chun dáta 08.12.2016

i Telegram, is cosúil, d'athraigh siad beagán an "sceite" de getUpdate. anois sa phríomhscript ní mór duit an teachtaireacht a fhritháireamh ó 2 go 1 a cheartú

athruithe

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

заменить на :

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

Foinse: will.com