Fa'agaoioia mamao o tusitusiga Mikrotik mai Telegram

Alexander Koryukin na tuleia aʻu i lenei faʻatinoga GeXoGeN ma lana lomigaFaʻasaʻo mamao le komepiuta e aunoa ma se SMS ma leai ni ao, faʻaaoga Mikrotik".

Ma se faʻamatalaga i se tasi o vaega VK na saunia e Kirill Kazakov:

Ioe, e matua le saogalemu lava. Ou te manaʻo e tusi se telegram bot e naʻo le taliaina o faʻatonuga mai laʻu teugatupe.

Na ou filifili e tusi sea bot.

O lea la, o le mea muamua e fai o le fatuina lea o se bot i le telegram.

  • Matou te maua i le sailiga se tala e igoa @botfather
  • Kiliki i le Amata faamau i le pito i lalo o le lau
  • Ona matou tusia lea ia te ia le poloaiga / newbot

Ona matou taliina lea o fesili faigofie e 2:

  • Ole fesili muamua ole igoa ole bot e faia. La'uMikrotikROuter
  • O le fesili lona lua o le igoa tauvalaau o le bot ua faia (e tatau ona faaiu i le bot) MikrotikROuter_bot

I le tali atu, matou te mauaina le faʻailoga o la matou bot, i loʻu tulaga o le:

Fa'aaoga lenei fa'ailoga e maua ai le HTTP API: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Fa'agaoioia mamao o tusitusiga Mikrotik mai Telegram
Ma, e tatau ona e suʻeina le matou bot i le sailiga ile igoa @MikrotikROuter_bot ma fetaomi le faamau Amata.

A maeʻa lena, e tatau ona e tatalaina le browser ma ulufale i le laina lea:

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

O fea XXXXXXXXXXXXXXXXXX o loʻo iai lau faʻailoga o le bot.

O le a tatalaina se itulau e pei o lea:

Fa'agaoioia mamao o tusitusiga Mikrotik mai Telegram

Matou te maua le tusitusiga o loʻo i lalo:

"chat":{"id":631290,

O lea, o loʻo ia i matou faʻamatalaga talafeagai uma mo le tusiaina o tusitusiga mo Mikrotik, e pei o:

Fa'ailoga bot: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Chat ID i le mea e tatau ona ia tusia ai: 631290

Ina ia siaki, e mafai ona tatou alu ile browser:

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

E tatau ona maua le taunuuga:

Fa'agaoioia mamao o tusitusiga Mikrotik mai Telegram

Mo lo matou faʻaogagofie, matou te vave faʻaopoopoina poloaiga mo le bot:

Su'eina o se tala ma se igoa @tamatama
Ona matou tusi atu lea ia te ia o se poloaiga / setcommands

  • O le a ia fesili po o le fea bot

Matou te tusia:
@MikrotikROuter_bot

Fa'aopoopo poloaiga:

  • helloworld< — Su'ega fe'au ile talatalanoaga 1
  • itsworking-Su'ega Savali i luga o talatalanoaga 2
  • wolmypc-fafagu la'u PC

Ia afai e te taina le "/" i le talatalanoaga, e tatau ona e mauaina:

Fa'agaoioia mamao o tusitusiga Mikrotik mai Telegram

Sei o tatou agai atu i le MikroTik.

O loʻo i ai i le RouterOS se faʻaoga faʻamafanafana mo le kopiina o faila e ala i le ftp poʻo le http / https, o le aoga e taʻua o le fetch, o le mea lea o le a matou faʻaogaina.

Tatala faʻaiʻuga ma ulufale:

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

Faamolemole ia matau e manaʻomia e MikroTik ""e sola ese mai le faʻailoga"?'i le URL.

E tatau ona maua le taunuuga:

Fa'agaoioia mamao o tusitusiga Mikrotik mai Telegram

Sei o tatou agai atu i tusitusiga:

lalolagi

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}

lona galueaina

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"

Aua neʻi galo e faʻamaonia le igoa saʻo mac ma le atinaʻe, faʻapea foʻi ma bot-token ma chat_id.

O lenei o le a ou faʻamatalaina teisi mea latou te faia:

O le tusitusiga "helloworld" e auina atu se savali: "Talofa, lalolagi!" i la matou talatalanoaga ma le bot.
O le "itsworking" script e auina atu ai se feʻau: "Suʻe OK, o loʻo galue!" i la matou talatalanoaga ma le bot.
O nei tusitusiga e mo faʻamoemoega faʻataʻitaʻiga.
Na ou faʻaopoopoina le "wolmypc" script o se tasi o faʻatinoga talafeagai.
I le faʻatinoina o le tusitusiga, o le a tusia e le bot le "wol OK" i le talatalanoaga.
O le mea moni, e mafai ona e faʻatautaia soʻo se tusitusiga.

Fausia se galuega:

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

Vaaiga Faitaue le o manino pe aisea, ae mai le tusitusiga galue e le faʻaalia ai faʻamaumauga o le lalolagi, faʻaopoopoina le faʻamaumauga pe a faʻapipiʻi le faiga.
Telegram amata

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

uālesi

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

E faapefea e lenei galuega

La'u mai a matou fe'au "getUpdates" i le 30 sekone, ona va'ai lea e su'e ai update_id (numera fe'au) ma matua (a matou 'au) ma chat_id . I le le mafai, getUpdates faʻaalia mai le 1 i le 100 feʻau, mo le faʻaogagofie, pe a uma ona faitau le poloaiga, matou te tapeina le feʻau. Telegram api fai mai e faitau se savali e te manaʻomia le numera feʻau + 1

/getUpdates?offset=update_id + 1

Na tofotofoina uma i luga ole Mikrotik rb915 RouterOS 6.37.1
Afai e te auina atu le tele o poloaiga i le taimi e tasi, o le a faʻataunuʻu uma i le taimi e 30 sekone.

PS Faafetai tele ia Kirill Kazakov mo le manatu ma laʻu uo Alexander mo le fesoasoani i tusitusiga.

mau

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

upd:

03:11:16

Fa'aleleia tusitusiga:

Fa'aopoopo siaki mo chat_id
Siaki mo se vale, afai e tusi se tasi i la tatou bot, o le a ia tali atu ia te ia: "E le mafai ona ou talanoa ma oe. ", o le a faapena foi ona tali mai ia i tatou pe a le iloa le poloaiga.
A maeʻa ona faʻatino le faʻatonuga, e leʻi faʻasalalau le bot i le talatalanoaga (vaʻai wolmypc script)

FAAFOUGA

Maua ma 7Stuntman7 o se faila o loʻo i luga ~ 14 feʻau e le o toe faʻaogaina e le suʻega poloaiga (Mikrotik limitations). O le mea lea, i le lumanaʻi, o le a ou suia le tusitusiga i le lua, faafetai 7Stuntman7 mo lenei, ou te le iloa e uiga i le lua.

UPD 08.12.2016/XNUMX/XNUMX

i Telegram, e foliga mai, na latou suia teisi le "uso" o le getUpdate. i le taimi nei i le tusitusiga autu e te manaʻomia e faʻasaʻo le feʻau faʻamalo mai le 2 i le 1

suiga

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

заменить на :

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

puna: www.habr.com