Fampahavitrihana lavitra ny script Mikrotik avy amin'ny Telegram

Alexander Koryukin no nanosika ahy hanao izany fampiharana izany GeXoGeN miaraka amin'ny famoahana azyMandehana lavitra ny solosaina maimaim-poana, tsy misy SMS ary tsy misy rahona, mampiasa Mikrotik".

Ary fanehoan-kevitra tao amin'ny iray amin'ireo vondrona VK nataon'i Kirill Kazakov:

Eny, tsy azo antoka mihitsy. Aleoko manoratra bot telegrama izay manaiky baiko fampahavitrihana avy amin'ny kaontiko.

Nanapa-kevitra ny hanoratra bot toy izany aho.

Noho izany, ny zavatra voalohany tokony hatao dia ny mamorona bot amin'ny telegrama.

  • Hitanay ao amin'ny fikarohana ny kaonty iray antsoina hoe @botfather
  • Tsindrio ny bokotra Start eo amin'ny faran'ny efijery
  • Avy eo dia soratanay aminy ny baiko / newbot

Dia mamaly fanontaniana tsotra 2 izahay:

  • Ny fanontaniana voalohany dia ny anaran'ny bot hoforonina. MyMikrotikROuter
  • Ny fanontaniana faharoa dia ny anaram-bositra noforonina (tokony hifarana amin'ny bot) MikrotikROuter_bot

Ho setrin'izany dia hahazo ny mariky ny bot-nay izahay, raha ny amiko dia:

Ampiasao ity famantarana ity hidirana amin'ny HTTP API: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Fampahavitrihana lavitra ny script Mikrotik avy amin'ny Telegram
Avy eo, mila mahita ny bot-nay ianao amin'ny fikarohana amin'ny anarana @MikrotikROuter_bot ary tsindrio ny bokotra Start.

Aorian'izay dia mila manokatra ny navigateur ianao ary miditra amin'ity andalana manaraka ity:

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

Aiza ny XXXXXXXXXXXXXXXXXX no famantarana ny bot-nao.

Pejy mitovy amin'ity manaraka ity no hisokatra:

Fampahavitrihana lavitra ny script Mikrotik avy amin'ny Telegram

Hitantsika ao anatin'izany ity lahatsoratra manaraka ity:

"chat":{"id":631290,

Noho izany, manana ny fampahalalana rehetra ilaina amin'ny fanoratana script ho an'ny Mikrotik isika, izany hoe:

Bot famantarana: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Chat ID izay tokony hanoratany: 631290

Mba hanamarinana dia afaka mandeha amin'ny navigateur isika:

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

Tokony hahazo ny vokatra:

Fampahavitrihana lavitra ny script Mikrotik avy amin'ny Telegram

Ho fanamorana anay dia hampiditra baiko avy hatrany ho an'ny bot izahay:

Mitady kaonty misy anarana @botray
Dia manoratra baiko ho azy izahay / setcommands

  • Hanontany izay bot izy

Manoratra izahay:
@MikrotikROuter_bot

Ampio baiko:

  • helloworld< β€” Hafatra andrana amin'ny chat 1
  • itsworking-Test Message on chat 2
  • wolmypc-mifohaza ny PC-ko

Ankehitriny raha manoratra "/" ao amin'ny chat ianao dia tokony hahazo:

Fampahavitrihana lavitra ny script Mikrotik avy amin'ny Telegram

Andeha isika hifindra amin'ny MikroTik.

RouterOS dia manana fitaovana fampiononana ho an'ny kopia rakitra amin'ny ftp na http / https, ilay fitaovana dia antsoina hoe fetch, izay no hampiasainay.

sokafy ny alalan'ny terminal ary midira:

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

Mariho fa mila "MikroTik"Β» handosirana ny famantarana Β«?' ao amin'ny URL.

Tokony hahazo ny vokatra:

Fampahavitrihana lavitra ny script Mikrotik avy amin'ny Telegram

Andeha isika hifindra amin'ny scripts:

Hello World

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}

ny asany

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"

Aza adino ny mamaritra ny anarana mac sy interface tsara, ary koa ny bot-token sy chat_id.

Hazavaiko kely izao ny ataon'izy ireo:

Ny script "helloworld" dia mandefa hafatra: "Manahoana, izao tontolo izao!" amin'ny resakay miaraka amin'ny bot.
Ny script "itsworking" dia mandefa hafatra: "Test OK, miasa izany!" amin'ny resakay miaraka amin'ny bot.
Ireo script ireo dia natao ho an'ny tanjona fampisehoana.
Nampiako ny script "wolmypc" ho iray amin'ireo fampiharana azo atao.
Rehefa vita ny script dia hanoratra "wol OK" amin'ny chat ny bot.
Raha ny marina, azonao atao ny mampandeha ny script rehetra.

Mamorona asa:

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

Fijery azo vakianatsy mazava ny antony, fa avy amin'ny script miasa dia tsy manambara angon-drakitra manerantany, nanampy ny script rehefa boot ny rafitra.
Telegram fanombohana

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

telegrama

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

Inona no manao izany asa

Ampidino ny hafatray "getUpdates" isaky ny 30 segondra, avy eo dia diniho mba hahitana izany update_id (numero hafatra) ary lahatsoratra (ny ekipanay) ary chat_id . Amin'ny alΓ lan'ny default, ny getUpdates dia mampiseho hafatra 1 ka hatramin'ny 100, ho fanamorana, rehefa avy mamaky ny baiko izahay dia mamafa ilay hafatra. Telegram api dia milaza fa mamaky hafatra ianao dia mila ny laharana hafatra + 1

/getUpdates?offset=update_id + 1

Nosedraina avokoa tamin'ny Mikrotik rb915 RouterOS 6.37.1
Raha mandefa baiko maro indray mandeha ianao dia hotanterahina miaraka amin'ny elanelana 30 segondra izy rehetra.

PS Misaotra betsaka an'i Kirill Kazakov tamin'ny hevitra sy Alexander namako tamin'ny fanampiana tamin'ny script.

soratra masina

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

upd:

03:11:16

Soraty nohatsaraina:

Fanamarinana fanampiny ho an'ny chat_id
Manamarina ny adala, raha misy manoratra amin'ny boty, dia hamaly azy izy hoe: "Tsy afaka miresaka aminao aho. β€œ, dia hamaly antsika toy izany koa raha tsy mahafantatra ny baiko.
Aorian'ny fanatanterahana ny baiko dia miala amin'ny chat ny bot (jereo ny script wolmypc)

DUP

Hita tamin'ny 7Stuntman7 fa ny rakitra misy hafatra ~ 14 etsy ambony dia tsy voakarakara amin'ny baiko fitadiavana (famerana Microtik). Noho izany, amin'ny ho avy dia hanova ny script ho lua aho, misaotra 7Stuntman7 noho izany dia tsy nahafantatra momba an'i lua aho.

UPD 08.12.2016/XNUMX/XNUMX

ao amin'ny Telegram, toa nanova kely ny "setroka" an'ny getUpdate izy ireo. Amin'izao fotoana izao ao amin'ny script lehibe dia mila manitsy ny offset amin'ny 2 ka hatramin'ny 1 ianao

fanovana

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

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

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

Source: www.habr.com