ããã«ã¡ã¯ãæè¡1課ã®é«æ©ã§ãã
API Gatewayã¨AWS Lambdaã§Slackã®BOTãä½ã£ã¦ã¿ã¾ããã
ä»åãã®ä½ææ¹æ³ããç´¹ä»ãã¾ãã
Slackã£ã¦ãªãã ï¼ï¼
ããããSlackã¨ã¯ä½ã§ããããSlackã¨ã¯ã³ãã¥ã±ã¼ã·ã§ã³ãã¼ã«ã§ãããæä½æ§ã®è¯ããæ¡å¼µæ§ã®é«ãããç¹ã«ITã¨ã³ã¸ãã¢çéã§äººæ°ãé«ãã¦ããæ³¨ç®ã®ãµã¼ãã¹ã§ãã
ãµã¼ãã¼ã¯ã¼ã¯ã¹ã§ã¯ç¤¾å ã³ãã¥ã±ã¼ã·ã§ã³ãã¼ã«ã«Slackãå©ç¨ãã¦ããã¾ãã社å¡å士ã§ã¡ã¼ã«ããããã¨ã¯ããã¾ãããå¼ç¤¾ä»£è¡¨ã®å¤§ç³ãè¨ãéããSlackã§ã¯è¦ªè¿æããã£ã¦ããã¨ããã§ããã®ã§æ¥½ããã§ãã
æ¦è¦
Slackä¸ã§ãç¹å®ã®æåãæã¤ã¨ç»åã表示ãã¦ãããBOTãä½ã£ã¦ã¿ã¾ãã
Slack APIã®Outgoing Webhooksã¨ãããã®ã使ãã¾ããããã¯ç¹å®ã®ãã£ã³ãã«ã§ç¹å®ã®æåãæã¤ã¨ãæå®ããURLã«æç¨¿å 容ãPOSTãã¦ããããã®ã§ãããã®POSTã«å¯¾ãã¦æå®ãããå½¢ã®JSONãè¿ããã¨ã§ãSlackä¸ã«æç¨¿ãã§ããã¨ããä»çµã¿ã§ãã
Hubotã¿ããã«è¤éãªãã®ã¯ä½ãã¾ããããç°¡åã«BOTãä½ããã®ã§æ¥½ããã§ãã
ä»çµã¿
AWS Lambdaã¯ã¤ãã³ãããªãã³åã®ã³ã³ãã¥ã¼ãã£ã³ã°ãµã¼ãã¹ã§ãããAPI Gatewayã¯REST APIã使ãããã¨ãã§ãããµã¼ãã¹ã§ãã
AWS Lambdaã¯éå¸¸ã«æ¡å¼µæ§ã®é«ããµã¼ãã¹ã§ãã®ã§ããããªãã¨ãã§ãã¡ããã¾ãã
ãã¦ä»åã®BOTã§ãããSlackã®Outgoing Webhooksãããç¹å®ã®æåãæããããAPI Gatewayãçºè¡ããAPIãå©ãããã«ãã¾ãã
API Gatewayã¯AWS Lambdaã§ããããã使ãã¦ãããfunctionãå®è¡ãã¾ããLambda functionã¯flickrã®APIãå©ãã¦ç»åã®URLãJSONå½¢å¼ã§åå¾ããAPI Gatewayçµç±ã§Slackã«å¤ãè¿ãã¾ããè¿ãããç»åã¯Slackã«æç¨¿ãããã¨ãã£ãã·ã¹ãã ã§ãã
é ã追ã£ã¦èª¬æãã¾ãã
Slackã§Outgoing Webhooksã®è¨å®ããã
Slackã®è¨å®ç»é¢ããOutgoing Webhooksã®è¨å®ããã¾ããæ°ãã«ä½æããã¨ãä¸è¨ã®ãã©ã¼ã ãã§ã¦ãã¾ãã®ã§ãä¸ã¤ãã¤å ¥åãã¦ããã¾ãã
ãã©ã¡ã¼ã¿ | 説æ |
Channel | BOTãåãããã£ã³ãã«ãé¸ã³ã¾ã |
Trigger words | ããªã¬ã¼ã¨ãªãåèªãè¨å ¥ãã¾ã |
URLs | éä¿¡å ã®URLãè¨å ¥ãã¾ãï¼API Gatewayè¨å®å¾ï¼ |
Token | ããã«è¡¨ç¤ºããããã¼ã¯ã³ã¯JSONã®ä¸ã«å«ã¾ãã¾ãã®ã§ãã©ã®BOTãããããã®ãããã¯ã¨ã³ãå´ã§ç¥ããã¨ãã§ãã¾ã |
Descriptive Level | Slackå ã§ãªãã¨ããååã§BOTã管çãããååãæ±ºãã¾ã |
Customize Name | ããã§é¸æããååã§BOTãæç¨¿ãã¾ã |
Customize Icon | BOTãæç¨¿ããæã«ä½¿ç¨ããã¢ã¤ã³ã³ãæå®ãã¾ã |
AWS Lambdaã®æ§ç¯ããã
AWS Lambdaï¼ä»¥ä¸ãLambdaï¼ã§ãããã¯ã¨ã³ãã®è¨å®ããã¾ãã
ã³ã¼ããæ¸ãã¦Zipãã¡ã¤ã«ã«åºãã¦ã¢ãããã¼ãããã ãã§ããä»åãç§ã¯JavaScriptã§æ¸ãã¾ãããã¢ã¸ã¥ã¼ã«ã¯ãnode_modulesãã³ã¼ããã¡ã¤ã«ã¨ä¸ç·ã«Zipå§ç¸®ããã°ä½¿ç¨ã§ãã¾ãã
ä½è«ã§ããAWS Lambdaã¯Python,Java,Node.jsã«å¯¾å¿ãã¦ãã¾ããï¼2015å¹´11æ19æ¥æç¹ï¼
ä»åã¯Flickrã®APIãå©ãã¦ç»åã®URLãåå¾ãã¦ã¿ã¾ããã
API Gatewayã®è¨å®ããã
使ããFunctionã®"API endpoint"ã®æ¬ãããAPI endpointã使ãã¦ãã ããã
Outgoing Webhooksã®URLsãè¨å®ãã
å ã»ã©ä½æããOutgoing Webhooksã®"URLs"ã®æ¬ã«ãAPI endpoint URLãå ¥åãã¦ã»ã¼ããã¦ãã ããã
ããã§è¨å®ã¯å®äºã§ãã
åããã¦ã¿ããï¼
åããã¦ã¿ã¾ããããBOTãã¸ã§ã¤ã³ããããã£ã³ãã«ã§ãæå®ãããã¼ã¯ã¼ããæã£ã¦ã¿ã¾ãã
ã»ããçèãï½¶ï¾ï½¶ï¾ ï¾ï¾ï¾ï½°
ãããããæãã§ããããããã£ã¡ã
çµè«
- API Gateway,Lambdaã§Slackã®BOTãã§ãã
- ç°¡åã«ä½ãã
- è¿ã£ã¦ããç»åãããã¼ãã¨èãã
Hubotã§ã§ãã¦ãã社å ã®ããªã¨ã¯ç°ãªãè¤éãªãã¨ã¯ã§ããªãã®ã§ãããç°¡åã«ä½ããã®ã§ç¤¾å Slackã®æ´»æ§åã«ãããã§ããããããµã¼ããHerokuã®æºåã¯ä¸è¦ã§ãããAWS Lambda,API Gatewayã¨ãã«ãå®ãã®ã§ã財å¸ã«ãåªããã§ãã
ã¡ãªã¿ã«æè¿Lambdaã«Schedule Eventã¨ããæ©è½ã追å ããã¾ãããcronå½¢å¼ã®ã¹ã±ã¸ã¥ã¼ã«ã¤ãã³ãã§ãã
ããã¨Slackã®Incoming Webhooks(Slackã¸ã®POST)ãçµã¿åããããã¨ã§ã宿ã«ãªã£ãããèã®å ãã®ãªã³ã¯ãè²¼ã£ã¦å¸°å® ãä¿ããã¨ãã§ãã¡ããã¾ãã
ãªããã®BOTãä½ã£ãã®ã
ã¿ããªã«ãã«ã¯ãæãã¦æ¬²ããã£ã
ããã§ã¯ãããããã