ಅಲೆಕ್ಸಾಂಡರ್ ಕೊರ್ಯುಕಿನ್ ನನ್ನನ್ನು ಈ ಅನುಷ್ಠಾನಕ್ಕೆ ತಳ್ಳಿದರು
ಮತ್ತು ಕಿರಿಲ್ ಕಜಕೋವ್ ಅವರ VK ಗುಂಪುಗಳಲ್ಲಿ ಒಂದಾದ ಕಾಮೆಂಟ್:
ಹೌದು, ಇದು ಸುರಕ್ಷಿತವಲ್ಲ. ನನ್ನ ಖಾತೆಯಿಂದ ಸಕ್ರಿಯಗೊಳಿಸುವ ಆಜ್ಞೆಗಳನ್ನು ಮಾತ್ರ ಸ್ವೀಕರಿಸುವ ಟೆಲಿಗ್ರಾಮ್ ಬೋಟ್ ಅನ್ನು ನಾನು ಬರೆಯುತ್ತೇನೆ.
ಅಂತಹ ಬೋಟ್ ಬರೆಯಲು ನಾನು ನಿರ್ಧರಿಸಿದೆ.
ಆದ್ದರಿಂದ, ಟೆಲಿಗ್ರಾಮ್ನಲ್ಲಿ ಬೋಟ್ ಅನ್ನು ರಚಿಸುವುದು ಮೊದಲನೆಯದು.
- ಹುಡುಕಾಟದಲ್ಲಿ @botfather ಹೆಸರಿನ ಖಾತೆಯನ್ನು ನಾವು ಕಂಡುಕೊಳ್ಳುತ್ತೇವೆ
- ಪರದೆಯ ಕೆಳಭಾಗದಲ್ಲಿರುವ ಸ್ಟಾರ್ಟ್ ಬಟನ್ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ
- ನಂತರ ನಾವು ಅವನಿಗೆ ಆಜ್ಞೆಯನ್ನು / ನ್ಯೂಬಾಟ್ ಅನ್ನು ಬರೆಯುತ್ತೇವೆ
ನಂತರ ನಾವು 2 ಸರಳ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಿಸುತ್ತೇವೆ:
- ರಚಿಸಬೇಕಾದ ಬೋಟ್ನ ಹೆಸರು ಮೊದಲ ಪ್ರಶ್ನೆಯಾಗಿದೆ. MyMikrotikROuter
- ಎರಡನೇ ಪ್ರಶ್ನೆಯು ಬೋಟ್ ಅನ್ನು ರಚಿಸುವ ಅಡ್ಡಹೆಸರು (ಬಾಟ್ನೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳಬೇಕು) MikrotikROuter_bot
ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿ, ನಾವು ನಮ್ಮ ಬೋಟ್ನ ಟೋಕನ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತೇವೆ, ನನ್ನ ಸಂದರ್ಭದಲ್ಲಿ ಅದು:
HTTP API ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಈ ಟೋಕನ್ ಅನ್ನು ಬಳಸಿ: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
ನಂತರ, ನೀವು ಹೆಸರಿನ ಮೂಲಕ ಹುಡುಕಾಟದಲ್ಲಿ ನಮ್ಮ ಬೋಟ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಬೇಕು @MikrotikROuter_bot ಮತ್ತು ಪ್ರಾರಂಭ ಬಟನ್ ಒತ್ತಿರಿ.
ಅದರ ನಂತರ, ನೀವು ಬ್ರೌಸರ್ ಅನ್ನು ತೆರೆಯಬೇಕು ಮತ್ತು ಕೆಳಗಿನ ಸಾಲನ್ನು ನಮೂದಿಸಬೇಕು:
https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates
ಅಲ್ಲಿ XXXXXXXXXXXXXXXXXX ನಿಮ್ಮ ಬೋಟ್ನ ಟೋಕನ್ ಆಗಿದೆ.
ಕೆಳಗಿನ ರೀತಿಯ ಪುಟವು ತೆರೆಯುತ್ತದೆ:
ನಾವು ಅದರ ಮೇಲೆ ಈ ಕೆಳಗಿನ ಪಠ್ಯವನ್ನು ಕಾಣುತ್ತೇವೆ:
"ಚಾಟ್":{"id":631290,
ಆದ್ದರಿಂದ, ಮಿಕ್ರೋಟಿಕ್ಗಾಗಿ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಬರೆಯಲು ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಮಾಹಿತಿಯನ್ನು ನಾವು ಹೊಂದಿದ್ದೇವೆ, ಅವುಗಳೆಂದರೆ:
ಬಾಟ್ ಟೋಕನ್: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
ಅವನು ಬರೆಯಬೇಕಾದ ಚಾಟ್ ಐಡಿ: 631290
ಪರಿಶೀಲಿಸಲು, ನಾವು ಬ್ರೌಸರ್ ಮೂಲಕ ಹೋಗಬಹುದು:
https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test
ಫಲಿತಾಂಶವನ್ನು ಪಡೆಯಬೇಕು:
ನಮ್ಮ ಅನುಕೂಲಕ್ಕಾಗಿ, ನಾವು ತಕ್ಷಣವೇ ಬೋಟ್ಗಾಗಿ ಆಜ್ಞೆಗಳನ್ನು ಸೇರಿಸುತ್ತೇವೆ:
ಹೆಸರಿನೊಂದಿಗೆ ಖಾತೆಯನ್ನು ಹುಡುಕಲಾಗುತ್ತಿದೆ @botfather
ನಂತರ ನಾವು ಅವನಿಗೆ ಆಜ್ಞೆಯನ್ನು ಬರೆಯುತ್ತೇವೆ / setcommands
- ಅವನು ಯಾವ ಬೋಟ್ ಎಂದು ಕೇಳುತ್ತಾನೆ
ನಾವು ಬರೆಯುತ್ತೇವೆ:
@MikrotikROuter_bot
ಆಜ್ಞೆಗಳನ್ನು ಸೇರಿಸಿ:
- helloworld< — ಚಾಟ್ 1 ನಲ್ಲಿ ಪರೀಕ್ಷಾ ಸಂದೇಶ
- ಚಾಟ್ 2 ನಲ್ಲಿ ಅದರ ವರ್ಕಿಂಗ್-ಟೆಸ್ಟ್ ಸಂದೇಶ
- wolmypc-ನನ್ನ ಪಿಸಿಯನ್ನು ಎಚ್ಚರಗೊಳಿಸಿ
ಈಗ ನೀವು ಚಾಟ್ನಲ್ಲಿ "/" ಎಂದು ಟೈಪ್ ಮಾಡಿದರೆ, ನೀವು ಪಡೆಯಬೇಕು:
ಈಗ ನಾವು MikroTik ಗೆ ಹೋಗೋಣ.
ftp ಅಥವಾ http / https ಮೂಲಕ ಫೈಲ್ಗಳನ್ನು ನಕಲಿಸಲು ರೂಟರ್ಒಎಸ್ ಕನ್ಸೋಲ್ ಉಪಯುಕ್ತತೆಯನ್ನು ಹೊಂದಿದೆ, ಉಪಯುಕ್ತತೆಯನ್ನು ಫೆಚ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಅದನ್ನು ನಾವು ಬಳಸುತ್ತೇವೆ.
ತೆರೆಯಿರಿ ಟರ್ಮಿನಲ್ ಮತ್ತು ನಮೂದಿಸಿ:
/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test " keep-result=no
MikroTik ಅಗತ್ಯವಿದೆ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ ""ಚಿಹ್ನೆಯಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು"?URL ನಲ್ಲಿ.
ಫಲಿತಾಂಶವನ್ನು ಪಡೆಯಬೇಕು:
ಈಗ ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿಗೆ ಹೋಗೋಣ:
ಹೆಲೋವರ್ಲ್ಡ್
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}
ಅದರ ಕೆಲಸ
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"
ಸರಿಯಾದ ಮ್ಯಾಕ್ ಮತ್ತು ಇಂಟರ್ಫೇಸ್ ಹೆಸರನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಮರೆಯಬೇಡಿ, ಹಾಗೆಯೇ ಬೋಟ್-ಟೋಕನ್ ಮತ್ತು ಚಾಟ್_ಐಡಿ.
ಈಗ ಅವರು ಏನು ಮಾಡುತ್ತಾರೆಂದು ನಾನು ಸ್ವಲ್ಪ ವಿವರಿಸುತ್ತೇನೆ:
"ಹೆಲೋವರ್ಲ್ಡ್" ಸ್ಕ್ರಿಪ್ಟ್ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ: "ಹಲೋ, ವರ್ಲ್ಡ್!" ಬೋಟ್ನೊಂದಿಗೆ ನಮ್ಮ ಚಾಟ್ಗೆ.
"ಇದರ ವರ್ಕಿಂಗ್" ಸ್ಕ್ರಿಪ್ಟ್ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ: "ಪರೀಕ್ಷೆ ಸರಿ, ಇದು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ!" ಬೋಟ್ನೊಂದಿಗೆ ನಮ್ಮ ಚಾಟ್ಗೆ.
ಈ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಪ್ರದರ್ಶನ ಉದ್ದೇಶಗಳಿಗಾಗಿ.
ನಾನು "wolmypc" ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಸಂಭವನೀಯ ಅನುಷ್ಠಾನಗಳಲ್ಲಿ ಒಂದಾಗಿ ಸೇರಿಸಿದ್ದೇನೆ.
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ಬೋಟ್ ಚಾಟ್ಗೆ "ವೋಲ್ ಓಕೆ" ಎಂದು ಬರೆಯುತ್ತದೆ.
ವಾಸ್ತವವಾಗಿ, ನೀವು ಯಾವುದೇ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಚಲಾಯಿಸಬಹುದು.
ಕಾರ್ಯವನ್ನು ರಚಿಸಿ:
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
ಓದಬಹುದಾದ ನೋಟಏಕೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ, ಆದರೆ ವರ್ಕಿಂಗ್ ಸ್ಕ್ರಿಪ್ಟ್ನಿಂದ ಅದು ಜಾಗತಿಕ ಡೇಟಾವನ್ನು ಬಹಿರಂಗಪಡಿಸುವುದಿಲ್ಲ, ಸಿಸ್ಟಮ್ ಬೂಟ್ ಮಾಡಿದಾಗ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
ಟೆಲಿಗ್ರಾಮ್ ಪ್ರಾರಂಭ
: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") ;
ಟೆಲಿಗ್ರಾಂ
: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;
}
ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ
ಪ್ರತಿ 30 ಸೆಕೆಂಡುಗಳಿಗೊಮ್ಮೆ ನಮ್ಮ "getUpdates" ಸಂದೇಶಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿ, ನಂತರ ಕಂಡುಹಿಡಿಯಲು ಪಾರ್ಸ್ ಮಾಡಿ update_id (ಸಂದೇಶ ಸಂಖ್ಯೆ) ಮತ್ತು ಪಠ್ಯ (ನಮ್ಮ ತಂಡಗಳು) ಮತ್ತು chat_id . ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, getUpdates 1 ರಿಂದ 100 ಸಂದೇಶಗಳನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ, ಅನುಕೂಲಕ್ಕಾಗಿ, ಆಜ್ಞೆಯನ್ನು ಓದಿದ ನಂತರ, ನಾವು ಸಂದೇಶವನ್ನು ಅಳಿಸುತ್ತೇವೆ. ಟೆಲಿಗ್ರಾಮ್ ಎಪಿಐ ಸಂದೇಶವನ್ನು ಓದಲು ನಿಮಗೆ ಸಂದೇಶ ಸಂಖ್ಯೆ + 1 ಅಗತ್ಯವಿದೆ ಎಂದು ಹೇಳುತ್ತದೆ
/getUpdates?offset=update_id + 1
ಎಲ್ಲವನ್ನೂ Mikrotik rb915 RouterOS 6.37.1 ನಲ್ಲಿ ಪರೀಕ್ಷಿಸಲಾಗಿದೆ
ನೀವು ಏಕಕಾಲದಲ್ಲಿ ಅನೇಕ ಆಜ್ಞೆಗಳನ್ನು ಕಳುಹಿಸಿದರೆ, ಅವುಗಳನ್ನು 30 ಸೆಕೆಂಡುಗಳ ಮಧ್ಯಂತರದೊಂದಿಗೆ ಪ್ರತಿಯಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ.
PS ಕಲ್ಪನೆಗಾಗಿ ಕಿರಿಲ್ ಕಜಕೋವ್ ಅವರಿಗೆ ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್ಗಳ ಸಹಾಯಕ್ಕಾಗಿ ನನ್ನ ಸ್ನೇಹಿತ ಅಲೆಕ್ಸಾಂಡರ್ಗೆ ಅನೇಕ ಧನ್ಯವಾದಗಳು.
ಉಲ್ಲೇಖಗಳು
ನವೀಕರಿಸಿ:
03:11:16
ಸುಧಾರಿತ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು:
chat_id ಗಾಗಿ ಚೆಕ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ
ಮೂರ್ಖನನ್ನು ಪರೀಕ್ಷಿಸಿ, ಯಾರಾದರೂ ನಮ್ಮ ಬೋಟ್ಗೆ ಬರೆದರೆ, ಅವನು ಅವನಿಗೆ ಉತ್ತರಿಸುತ್ತಾನೆ: "ನಾನು ನಿಮ್ಮೊಂದಿಗೆ ಮಾತನಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ", ಇದು ಆಜ್ಞೆಯನ್ನು ಗುರುತಿಸದಿದ್ದರೆ ಅದೇ ರೀತಿ ನಮಗೆ ಉತ್ತರಿಸುತ್ತದೆ.
ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ಬೋಟ್ ಚಾಟ್ಗೆ ಅನ್ಸಬ್ಸ್ಕ್ರೈಬ್ ಮಾಡುತ್ತದೆ (wolmypc ಸ್ಕ್ರಿಪ್ಟ್ ನೋಡಿ)
ಯುಪಿಡಿ
ಜೊತೆ ಕಂಡುಬಂದಿದೆ
ಯುಪಿಡಿ 08.12.2016
ಟೆಲಿಗ್ರಾಮ್ನಲ್ಲಿ, ಅವರು getUpdate ನ "ನಿಷ್ಕಾಸ" ವನ್ನು ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ಬದಲಾಯಿಸಿದ್ದಾರೆ. ಈಗ ಮುಖ್ಯ ಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ನೀವು ಸಂದೇಶವನ್ನು 2 ರಿಂದ 1 ರವರೆಗೆ ಸರಿದೂಗಿಸಬೇಕು
ಬದಲಾವಣೆಗಳನ್ನು
:local message [:pick $content ($startLoc + 2) $endLoc] ;
заменить на :
:local message [:pick $content ($startLoc + 1) $endLoc] ;
ಮೂಲ: www.habr.com