Kunna nesa daga rubutun Mikrotik daga Telegram

Alexander Koryukin ya tura ni zuwa wannan aiwatarwa GeXoGeN tare da littafinsaKunna kwamfutar ta nisa kyauta, ba tare da SMS ba kuma ba tare da gajimare ba, ta amfani da Mikrotik".

Kuma sharhi a cikin ɗayan ƙungiyoyin VK na Kirill Kazakov:

Ee, ba shi da tsaro kwata-kwata. Na fi so in rubuta bot na telegram wanda kawai ke karɓar umarnin kunnawa daga asusuna.

Na yanke shawarar rubuta irin wannan bot.

Don haka, abu na farko da za a yi shine ƙirƙirar bot a cikin telegram.

  • Mun sami a cikin binciken wani asusu mai suna @botfather
  • Danna maɓallin Fara a kasan allon
  • Sai mu rubuta masa umurnin / newbot

Sai mu amsa tambayoyi guda 2 masu sauki:

  • Tambaya ta farko ita ce sunan bot ɗin da za a ƙirƙira. MyMikrotikROuter
  • Tambaya ta biyu ita ce laƙabin bot ɗin da ake ƙirƙira (ya kamata ya ƙare da bot) MikrotikROuter_bot

A cikin martani, za mu karɓi alamar bot ɗin mu, a cikin yanayina shine:

Yi amfani da wannan alamar don samun damar HTTP API: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Kunna nesa daga rubutun Mikrotik daga Telegram
Bayan haka, kuna buƙatar nemo bot ɗin mu a cikin binciken da suna @MikrotikROuter_bot kuma danna maɓallin Fara.

Bayan haka, kuna buƙatar buɗe mai binciken kuma shigar da layi mai zuwa:

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

Inda XXXXXXXXXXXXXXXXXX shine alamar bot ɗin ku.

Shafi mai kama da mai zuwa zai buɗe:

Kunna nesa daga rubutun Mikrotik daga Telegram

Muna samun rubutu mai zuwa akansa:

"chat":{"id":631290,

Don haka, muna da duk mahimman bayanan da ake buƙata don rubuta rubutun na Mikrotik, wato:

Alamar Bot: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

Taɗi ID inda ya kamata ya rubuta: 631290

Don bincika, za mu iya shiga cikin browser:

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

Ya kamata a sami sakamako:

Kunna nesa daga rubutun Mikrotik daga Telegram

Don dacewarmu, nan da nan za mu ƙara umarni don bot:

Neman asusu mai suna @baba
Sai mu rubuta masa umarni / umarni

  • Zai tambayi wane bot

Mun rubuta:
@MikrotikROuter_bot

Ƙara umarni:

  • helloworld<- Gwajin saƙo akan taɗi 1
  • Saƙon Gwaji yana aiki akan taɗi 2
  • wolmypc-tashi PC na

Yanzu idan ka buga "/" a cikin hira, ya kamata ka samu:

Kunna nesa daga rubutun Mikrotik daga Telegram

Yanzu bari mu matsa zuwa MikroTik.

RouterOS yana da kayan aikin wasan bidiyo don kwafin fayiloli ta hanyar ftp ko http / https, mai amfani ana kiransa fetch, wanda shine abin da za mu yi amfani da shi.

Bude m kuma shiga:

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

Lura cewa MikroTik yana buƙatar "» don tserewa alamar "?'a cikin URL.

Ya kamata a sami sakamako:

Kunna nesa daga rubutun Mikrotik daga Telegram

Yanzu bari mu matsa zuwa rubutun:

Sannu Duniya

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}

aikinsa

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"

Kar a manta a saka madaidaicin sunan mac da interface, da kuma bot-token da chat_id.

Yanzu zan yi bayani kadan abin da suke yi:

Rubutun "helloworld" yana aika sako: "Sannu, duniya!" zuwa tattaunawar mu da bot.
Rubutun "mai aiki" yana aika sako: "Gwaji yayi kyau, yana Aiki!" zuwa tattaunawar mu da bot.
Waɗannan rubutun don dalilai ne na nunawa.
Na ƙara rubutun "wolmypc" a matsayin ɗaya daga cikin yiwuwar aiwatarwa.
Bayan aiwatar da rubutun, bot ɗin zai rubuta "wol OK" zuwa hira.
A zahiri, zaku iya gudanar da cikakken kowane rubutun.

Ƙirƙiri ɗawainiya:

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

Duban Karatuba a bayyana dalilin da ya sa ba, amma daga rubutun aiki ba ya bayyana bayanan duniya ba, ya kara da rubutun lokacin da tsarin ya tashi.
Farawa ta 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") ;

sakon waya

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

Ta yaya wannan aikin

Zazzage saƙon "getUpdates" ɗin mu kowane sakan 30, sannan ku bita don ganowa update_id (lambar sakon) da rubutu (kungiyoyin mu) da chat_id . Ta hanyar tsoho, getUpdates yana nunawa daga saƙonni 1 zuwa 100, don dacewa, bayan karanta umarnin, muna share saƙon. Telegram api ya ce don karanta sako kuna buƙatar lambar saƙon + 1

/getUpdates?offset=update_id + 1

Duk an gwada su akan Mikrotik rb915 RouterOS 6.37.1
Idan ka aika umarni da yawa lokaci guda, za a aiwatar da su bi da bi tare da tazarar daƙiƙa 30.

PS Yawancin godiya ga Kirill Kazakov don ra'ayin da abokina Alexander don taimako tare da rubutun.

nassoshi

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

sabuntawa:

03:11:16

Ingantattun rubutun:

Ƙara duba don chat_id
Binciken wawa, idan wani ya rubuta wa bot ɗinmu, zai amsa masa: "Ba zan iya magana da ku ba. ", Hakanan zai amsa mana idan bai gane umarnin ba.
Bayan aiwatar da umarnin, bot ɗin ya cire rajista zuwa tattaunawar (duba rubutun wolmypc)

DUP

An same shi da 7 Stuntman7 cewa fayil ɗin da ke sama ~14 ba a sarrafa shi ta hanyar neman umarni (iyakantattun Mikrotik). Saboda haka, nan gaba, zan canza rubutun zuwa lua, godiya 7 Stuntman7 don wannan, ban san game da lua ba.

UPD 08.12.2016/XNUMX/XNUMX

a cikin Telegram, a fili, sun ɗan canza "ƙarewa" na getUpdate. yanzu a cikin babban rubutun kuna buƙatar gyara gyara saƙon daga 2 zuwa 1

canji

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

заменить на :

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

source: www.habr.com