
LINEã®BOTãPythonã§äœã£ãŠã¿ã
ããã«ã¡ã¯Rcatã§ãã
ããŠããããªãã§ãããããããããšãããã®ã§LINEã®botãäœããŸãã
ä»åã¯ãããã¢ã«ãŠã³ãã®äœãæ¹ãšåäœç¢ºèªãŸã§ãè¡ã£ãŠããããšæããŸãã¿ã€ãã«éããããã°ã©ãã³ã°èšèªã¯Pythonã§ãã
次åã¯ãã¡ã
BOTã¢ã«ãŠã³ããæºåãã
ã¢ã«ãŠã³ããäœæãã
ãŸããæåã«BOTã¢ã«ãŠã³ããçšæããŸãããã
å ¬åŒã®èª¬æãéåžžã«äžå¯§ã§ãããããæžãå¿ èŠããªãã£ãã®ã§ããªã³ã¯ã貌ã£ãŠãããŸãããããæ¥æ¬ã®äŒç€Ÿã£ãŠæããæ ªåŒã¯æããŠãŸããâŠã
ããããããŒã³ã³ãœãŒã«
宿ãããã¡ãã»ãŒãžã³ã°APIã®èšå®ã®ãšããããé·æã®ã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããŸãããã
ããã€ãã®èšå®ã倿Žãã
ã¢ã«ãŠã³ããã§ãããããã€ãã®èšå®ã倿ŽããŠãããŸãããã
çãäžããžãã®ãªãã£ã·ã£ã«èšå®ãã¯ãªãã¯ããŸãã

æ©èœã®å©çšã®éšåã®ããŒã¯ãžã®åå ã§ãã°ã«ãŒãè€æ°ã«ããŒã¯ãžã®åå ãèš±å¯ããŸããããä»åããããããšã¯ã°ã«ãŒãã«æåŸ
ããªããšã§ããªãã®ã§ããã®æ©èœããªã³ã«ããŸãã
èªèšŒãšããã®ããããŸãããããã¯æ€çŽ¢ããŠåºãŠããããã«ãªããšãããã®ã§ãä»åã¯å人çã«äœ¿ãããã®ã§ãããŠèªèšŒã¯ããŸããã

ããããšåéã«ãªã
ã¡ãã»ãŒãžã³ã°APIã®äžã«QRã³ãŒããããã®ã§ãLINEã®ã¢ããªã§èªã¿èŸŒãããšã§åé远å ããããšãã§ããŸãããåéãäžäººå¢ããŸãã ïŸïœŒïœ²ïŸ ïœâ

BOTãäœæãã
ããŠãã¢ã«ãŠã³ããæºåã§ãããšããã§åŠçåŽãäœã£ãŠãããŸãã
BOTãµãŒããŒãçšæãã
å
¬åŒã®èª¬æã«ãããéããLINEã®botã¯Webhookãšããä»çµã¿ã䜿çšããŠåããŠããŸããç§ã詳ããç¥ããªãã£ãã®ã§ã¡ãã£ãšèª¿ã¹ãŠã¿ãŸããã
ããã¯ããããã«å¯ŸããŠã¡ãã»ãŒãžãéããããªã©ã®ã€ãã³ããçºçããå ŽåãLINEã®ãµãŒããŒããåãããã皌åããŠãããµãŒããŒãžããŒã¿ãéä¿¡ãããããšã«ãã£ãŠããããã«ããŒã¿ãäŒããä»çµã¿ã§ãã
ãã®ãããLINEã®ãµãŒããŒããããŒã¿ãåä¿¡ããŠããããŠåããããã«éä¿¡ãããµãŒããŒãå¿ èŠã«ãªããŸãã
å³ã«ããŠã¿ããšãããªæãã§ããããïŒ

ã€ã³ã¿ãŒãããã§èª¿ã¹ããšgasã䜿ã£ãŠãããã®ããããŸãããç§ã®å Žåã¯24æéçšã®LinuxãµãŒããŒãããã®ã§ãããã䜿ã£ãŠPythonã§åãããŸãã
確ãã«ãã®ä»çµã¿ãªãgasã䜿ãã®ãè³¢ãããæ¹ãªã®ãããããŸããã
ä»åã¯ããããç§ã®ããããããšãããæç¹ã§èªåã®ãµãŒããŒã§Pythonã§ãªããã°ãã¡ãªã®ã§ããå
·äœçã«ã¯æ¬¡ã®èšäºã§èª¬æããŸããã
ã¢ã¯ã»ã¹å ã®URLãèšå®ãã
ããŠãä»çµã¿ãåãããŸãããã€ãŸãã¯å
¬åŒããå®¶ã«ã¢ã¯ã»ã¹ããŠããããªããã°ãããªããšããããšã§ããã
ãšããããã§ãã®èšå®ããã¡ããåé远å ã®QRã³ãŒãã®å°ãäžã«ããWebhookURLã§ãã
ããã«èªåã®å®¶ã«æ¥ç¶ã§ããURLãå
¥åããŸããããä»åã¯ãµãŒããŒã®äžã«Webhookcgiãšããã®ãäœæããã®ã§ãããã«ã¢ã¯ã»ã¹ãããŸã

ãã®æ¬¡ã®æé ã§ãã¹ãåãå¿
èŠã«ãªãã®ã§ãå€åIPã¢ãã¬ã¹ã§ã¯ãã¡ã§ã(詊ããŠãŸããã)ã
ãããã¹ãåãå¿
é ã ã£ãå Žåãç§ãå©çšããŠãããµãŒãã¹ã玹ä»ããŸãã®ã§ããããããã°äœ¿ã£ãŠã¿ãŠãã ããã
ãã®ãµã€ãã䜿ã£ãŠããçç±ãšããŠã¯ãäžçªæåIPã¢ãã¬ã¹ã®æŽæ°ãESP32ãããã£ãŠãããã§ããESP32çšã®ã©ã€ãã©ãªããããã§ããããä»ã¯ãã¡ãã24æéãµãŒããŒã§ãã£ãŠããŸãããæŽæ°ã¹ã¯ãªããé
åžãããããªâŠïŒ
SSLèšŒææžãå ¥æãã
ããŠãæ©éå£ã«ã¶ã¡åœãããŸããããšããšãSSLã«æãåºããªããã°ãªããªãæãæ¥ãããã§ãã
ãŠãŒã¶ãŒã®æ
å ±ãå«ãŸããŠããã®ã§åœããåã§ãããæå·åã§ããhttpséä¿¡ã§ãªããŠã¯ãªããªãããã§ã察å¿ãããµãŒããŒã¯SSLã«ããªããã°ãªããŸããã
ä»ãŸã§ã¯å¥ã«æŒæŽ©ããŠãåé¡ã®ãªãæ
å ±ã ã£ãããã©ãããŠãã®æã¯VPNã䜿ããšããæ¹æ³ã§ã©ãã«ããªã£ãŠããã®ã§æãåºããŠããŸããã§ããããå¿
èŠã«ãªã£ãã®ã§ä»æ¹ãããŸãããããŸãããã
ãããããããããããšã«LINEã®å
¬åŒããç¡æã®èšŒææžå
¥æã«é¢ããæ
å ±ããã£ãã®ã§ããã¡ãã䜿ã£ãŠãããŸãããã£ã±ããã®èŸºæ¥æ¬ã®äŒç€Ÿã£ãŠæããã¢ããªãç¡éã«æ¹æªããŠéç¥æ¥ãªããªã£ãŠããã®ã¯æ®å¿µã ãã©ããŸãããããä»åã®ããããããšã§è§£æ±ºäºå®ã
ã¡ãªã¿ã«èªå·±çœ²åã®èšŒææžãé©çšããŠãå ã»ã©ã®URLã®äžã®æ€èšŒãã¿ã³ãæŒããšãããªããŸããïŒåŸã§ããèŠããèªå·±èšŒæã¯ãã¡ã£ãŠã¡ãããšæžããŠãã£ããïŒã¡ãããšå®¶ã«æ¥ç¶ãã«æ¥ãŠãããŠãã¿ããã§ãããèšŒææžããã¡ãªã®ã§è¹Žãããã¿ããã§ããã

èšŒææžã®å ¥æã¯ããã ãã§1æ¬ã®ãã¿ã«ãªãã®ã§ã以äžã®èšäºã§è¡ã£ãŠããŸããåç §ããŠãã ããã
ãšããããã§èšŒææžãäœããŸãããé©çšãããšâŠ

ããŸããããŸããã
ããã§ãããã¢ã«ãŠã³ãã®æºåã¯å®äºã§ãã
åäœç¢ºèªã®ãã¹ãã³ãŒã
ããŠã次ã¯ãã¹ãã³ãŒãã®ç޹ä»ã§ãã
玹ä»ã¯åŸã«ãªã£ãŠããŸããŸãããããããããããã®æ¥ç¶æ€èšŒã®æç¹ã§ãµãŒããŒãå¿
èŠã§ããäžã®èª¬æãããŠããé ã¯URLãäœã£ãŠåçŽã«200è¿ãã ãã«ããŠãŸããã
ãšããããã§å ·äœçãªã³ãŒããäœã£ãŠãããŸãããã
䜿çšããã©ã€ãã©ãªã¯?
ä»åã¯aiohttpã©ã€ãã©ãªãŒã®ãµãŒããŒã䜿ããŸãã
ãããã€ãã¯flask䜿ã£ãŠãè£åãè
ã ã£ãŠ?
Flaskã«ã¯å€§å€ç³ãèš³ããããŸããããä»åã¯BOTãäœãç®çããããããã«å¯Ÿå¿ããã«ã¯asyncioã䜿ã£ãéåæã§ã¯ãªããã°ãªããªãã®ã§ããã®ã©ã€ãã©ãªã䜿ããŸãã
ããŠããã®èŸºã§ã ãã ãç®çãããã£ãŠãã¡ãããŸãããïŒå
·äœçã«ã¯æ¬¡ã®èšäºã§ç޹ä»ããŸããã
Line BOTã®Pythonã³ãŒã
å®éã«æžããŠããã³ãŒãã¯ãã³ãã¬ãŒãã®äœ¿ãåããªã®ã§ãããããªãšããã§èšè¿°ãããã®ã§æç²ããŸããæç²ããããŠæããŠããããããªããã

ç°¡åã«å
容ã説æããŸãã
ãŸãäžã®æ¹ã§ç°¡åãªèšå®ãè¡ã£ãŠããŸããå
·äœçã«ã¯ããŒãçªå·ãšSSLã«å¿
èŠãªããŒã¿ã®èªã¿èŸŒã¿ã§ãããèšŒææžãäœãæ¹ã®èšäºã§äœã£ãèšŒææžããã£ã¬ã¯ããªã«æã£ãŠããŠèªã¿èŸŒãããã«ããŠããŸãã
次ã«cgiã®å®çŸ©ã§ããããã¯URLã«ã¢ã¯ã»ã¹ãããäœããããšããå®çŸ©ã§ãã
ãªãã¡ã¬ã³ã¹ã«ãããšåããã¯ãã¹ãã§JSONããŒã¿ãæããŠãããããã§ãããã®ãããåãåã£ãããŒã¿ã¯JSONãšããŠåŠçããPythonã§èŸæžåã«å€æããŸãã
ä»åã¯ãã¹ããªã®ã§ãåãåã£ãããŒã¿ã¯pprintã©ã€ãã©ãªã䜿ã£ãŠåãããããç»é¢ã«è¡šç€ºããããã«ããŠããŸãã
åŠçãçµãã£ããã¯ã©ã€ã¢ã³ãã«å¿çãæããŸãããªãã¡ã¬ã³ã¹ã«ãããšã¹ããŒã¿ã¹ã³ãŒã200ãªãäœã§ãããã¿ããã§ãããªã®ã§OKãšè¿ããŸãã
次ã«ãµãŒããŒã®å®çŸ©ã§ãã
ããã§ã¯ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ã¿ã³ã¹ããURLãšcgiã®çŽä»ããããŠããŸããç¹ã«é£ããããšã¯ãããŸãããã
æåŸã«WebãµãŒããŒãã¹ã¿ãŒããã颿°ã§ãã
ãšããããåºæ¬éãæžããŠããã ãã§ãããµã€ãã®æåŸã®ãšããã«SSLã®èšŒææžã®èšå®ãããã®ãç¹åŸŽã§ããããããã ãã§SSLã«ã§ãããã§ããã䟿å©ã§ãã
ãããŠäžçªäžã§ããã°ã©ã èªäœãèµ·åããŠããŸãã
å€åãã®æžãæ¹ã§åã£ãŠããšæããŸãããå®åã¯å¥ã®æžãæ¹ã§ãã£ãŠãã®ã§åããªããããããŸããã
ãã£ã¬ã¯ããªæ§æã¯ãã¡ã
ãªãããã£ã±ãããŒããããã§ãããèªã¿èŸŒãã§ãã®ã¯2ã€ã ããªãã§ããããçªã£èŸŒãã ãçµãããªããªããããªã®ã§ããšããããããã¯ã¹ã«ãŒããŸãããã

æ¥ç¶ãæ€èšŒãã
ããŠããµãŒããŒãã§ãããLINEã®æ¹ã§æ€èšŒã®ãã¿ã³ãæŒããŠã¿ãŸãããã
ãµãŒããŒåŽã«ã¯ä»¥äžã®ãããªè¡šç€ºãåºãŠããŠãLINEã®æ¹ã§ã¯æåããŸãããšãã衚瀺ã«ãªã£ãŠããã¯ãã§ãã

ã¡ãã»ãŒãžãéã£ãŠã¿ã
ã§ã¯ã次ã«LINEã¢ããªããã¡ãã»ãŒãžãéã£ãŠã¿ãŸãã
ãšããããé©åœã«éãªã¡ãã»ãŒãžãéããŸãã

ç¹ã«äœãããŠããªããšããããèªåè¿ä¿¡ããããã§ããã
ããŠã倧äºãªã®ã¯ãµãŒããŒåŽã«ã©ããªã®ãæ¥ããã§ãã
ãµããµãããªãã»ã©ãåãããŸããããšããããè²ã
é ããæ¹ãè¯ããããªã®ãå€ãã®ã§ããšããããé ããŸãã
ãã ããããèŠãéãããã¹ããšããéšåããäœãéãããŠããããååŸããããšã¯ã§ããã¿ãããªã®ã§ã掻çšã¯ã§ãããã§ãã

ã¹ã¿ã³ããéã£ãŠã¿ã
ã§ã¯ãLINEã®ç¹åŸŽã®äžã€ã§ããã¹ã¿ã³ããéã£ãŠã¿ãŸãããã

ãµããµãããªãã»ã©ã
ã¿ã€ãã®ãšãããããã¹ãããã¹ããã«ãŒã«å€ãã£ãŠããŸããã
ããã°ã©ã ã§ã¯ãã®ã¿ã€ãã®éšåããã¡ããšèªã¿åãããŠãããªããšæ¬¡ã®åŠçã§ãšã©ãŒã«ãªãããã§ãã
ç»åã¯æ¥ãªãã¿ãããªã®ã§ããããããã¹ã¿ã³ãã®IDãšå
容ã衚ã«ããŠäœã£ãŠããå¿
èŠãããããã§ããããã®ã¹ã¿ã³ãã®å Žåã¯"(ST)æ®æ¥ã§ã"ã¿ãããªæãã§ãããããã

ã°ã«ãŒãã«æåŸ ããŠãã¡ãã»ãŒãžãéã£ãŠã¿ã
ããŠãä»åã®ç®çã¯ã°ã«ãŒãã«æåŸ ããªããã°éæã§ããªãã®ã§ãã¡ãããšåäœããã®ã確èªããŸãã
ãšããããã§BOTãæåŸ
ããŠã°ã«ãŒããäœããããã§ã¡ãã»ãŒãžãéä¿¡ããŠã¿ãŸãã
ã¡ãªã¿ã«ããããã®ã§å¿çã¡ãã»ãŒãžã¯ãªãã«ããŸãããç¡èŠãããŠããããããªãã§ãã

ãããã®æ¹ã®å¿çããã¡ã
ãµããµãããªãã»ã©ããœãŒã¹ã®éšåã®ã¿ã€ããå€ãã£ãŠãŸããã
ã°ã«ãŒããªã©ãIDã«ãªã£ãŠããã®ã§ãäºåã«ã©ã®ã°ã«ãŒãåãªã®ãã¯å¯Ÿå¿è¡šãäœã£ãŠãããªããšå€å¥ããã®ã¯é£ãããã§ããã

ããã°ã©ã ããã¡ãã»ãŒãžãéä¿¡ãã
ããŠãã¡ãã»ãŒãžãåä¿¡ã§ããããšãããã£ããšããã§ã次ã¯éä¿¡ã®ãã¹ããããŸãããã
MessagingAPIã䜿çšããããšã«ãªããŸãã®ã§ä»¥äžã®ããŒãžãèŠãŸãã
APIã確èªãããšã¡ãã»ãŒãžã®éä¿¡ã¯ããã·ã¥ã¡ãã»ãŒãžAPIã䜿ãã¿ããã§ããã
ãšããããã§ãã¡ãã»ãŒãžãéä¿¡ãã颿°ãäœããŸããã
ãã®é¢æ°ã«å¯ŸããŠéãããã¡ãã»ãŒãžãšãéãçžæãŸãã¯ã°ã«ãŒãIDãæž¡ãããšã§ã¡ãã»ãŒãžãéãããšãã§ããŸãã

ãŸããPOSTã®ãªã¯ãšã¹ãããããŒã«ã³ã³ãã³ãã¿ã€ããšèªèšŒããŒãå
¥ããŸããèªèšŒããŒã¯äžçªæåã«ããããäœã£ãæã«ååŸããé·æã¢ã¯ã»ã¹ããŒã¯ã³ã®ããšã§ãã
次ã«ãªã¯ãšã¹ãããã£ã§ãããå¿
é ã2ã€ãããŸãã
1ã€ç®ã¯éä¿¡å
toã§è¡šãããŠããŸãããããã«ãŠãŒã¶ãŒIDãŸãã¯ã°ã«ãŒãIDãå
¥ããŸããä»åã¯æ°ãããåéãšã®ã°ã«ãŒããå
¥ããŸãã
次ã¯ã¡ãã»ãŒãžã§ããæå€§5åãŸã§æå®ã§ããã¿ããã§ããªã¹ãã®äžã«åã¡ãã»ãŒãžã®å
容ã«ãªã£ãŠããŸããããã¹ãã®ãšããã«éãããã¡ãã»ãŒãžãå
¥ããŸãã
ä»åã¯ãªãã·ã§ã³ã§éç¥ããããããã©ããã®ãã©ã°ã«TRUEãå
¥ããŠãŸããå
¬åŒã¢ã«ãŠã³ãããéç¥ãæ¥ããšå«ã§ãããããã¯èªåã®botãªã®ã§ã¡ãããšéç¥ãæ¥ãŠããããªããšå°ããŸãããŸãããããäžå
·åã§æ¥ãªããã§ããã
ãã®é¢æ°ãåŒã³åºãããã®å®éšé¢æ°ããã¡ããã¯ããhttpã§ãã
ã¡ãã»ãŒãžãéãããã®URLãäœã£ãã®ã§ãããã«GETã§ã¡ãã»ãŒãžãšIDãå
¥ããŠå®éšããŠã¿ãããšã«ããŸããã

ã¢ã¯ã»ã¹æ¹æ³ã¯ãããªæãã
SSLãæå¹ã«ãããšããŒã«ã«ããã®æ¥ç¶ã§éã«èŠåããããã§ããã確ãã«ãã¹ãå䜿ã£ãŠãªããããããã®ãã

ãšããããã§ãå®è¡çµæã¯ãã¡ãã
ã¯ããæ£åžžã«ã¡ãã»ãŒãžãæçš¿ãããŸãããçã§""ã§å²ã£ãŠããŸããŸããããGETãªã®ã§ãããªãã£ãã§ããã

ãŸãšã
ä»åã¯LINEã®ããããäœã£ãŠã¡ãã»ãŒãžã®éå信確èªãããŸããã
SSLãWebããã¯ã®å®è£
ãªã©åããŠããããšãå€ãã£ãã®ã§ãå®éã«3æ¥ãããããããŸãã(äž»ã«SSLèšŒææžã®ãšãã)ã
ããŠãåºç€ã¯æŽã£ãã®ã§ã次åããæ¬åœã«ããããã£ãããšãå§ããŠããããšæããŸããããã§ã¯ãŸããäŒãããŸãããã
ãªã³ã¯é
API
MessagingAPI
æåŸã«
å©çšèŠçŽ
æ å ±ãäœåã®æŽ»çšæã¯äºåã«å©çšèŠçŽãã確èªãã ããã
https://note.com/rcat999/n/nb6a601a36ef5
ã³ã¡ã³ãã«ã€ããŠ
å©çšèŠçŽã®ã¬ã€ãã©ã€ã³ã確èªã®äžã³ã¡ã³ãããŠãã ãã