4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SlackäøŠć§å‹•ćChatbotć‚’å®Ÿē¾ć™ć‚‹ćŸć‚ć®ć‚¢ćƒ¼ć‚­ćƒ†ć‚Æćƒćƒ£ć‚’č€ƒćˆć‚‹

4
Last updated at Posted at 2019-11-24

SlackäøŠć§ćƒ”ćƒƒć‚»ćƒ¼ć‚øć‚’é€ć‚Šć€ćć‚Œć‚’ć‚‚ćØć«BotćŒä½•ć‚‰ć‹ć®å‡¦ē†ć‚’ć™ć‚‹ćØć„ć†ć“ćØć‚’å®Ÿē¾ć™ć‚‹ć‚¢ćƒ¼ć‚­ćƒ†ć‚Æćƒćƒ£ć«ćÆä½•ēØ®é”žć‹å­˜åœØć—ć¾ć™ć€‚
ć©ć†ć„ć†ćØćć«ć©ć®ć‚¢ćƒ¼ć‚­ćƒ†ć‚Æćƒćƒ£ć‚’ęŽ”ē”Øć™ć‚Œć°ć‚ˆć„ć‹ć€ćć®ćƒ”ćƒŖćƒƒćƒˆćØćƒ‡ćƒ”ćƒŖćƒƒćƒˆć‚„ä½æć„ę‰€ć«ć¤ć„ć¦ē“¹ä»‹ć—ć¾ć™ć€‚

Events API

events_api.png

Slack恧(ć‚ć‚‰ć‹ć˜ć‚ęŒ‡å®šć—ćŸ)ē‰¹å®šć®ć‚¤ćƒ™ćƒ³ćƒˆćŒē™ŗē”Ÿć™ć‚‹ćØć€(Bot偓の)URL恫webhookćŒē™ŗē”Ÿć—ć¾ć™ć€‚ć€Œćƒćƒ£ćƒ³ćƒćƒ«å†…ć§ć®ē™ŗčØ€ć€ć‚„ć€ŒBotへのmentionć€ć®ć‚ˆć†ć«ć€ę‹¾ć„ćŸć„ć‚¤ćƒ™ćƒ³ćƒˆćÆéøć¶ć“ćØćŒć§ćć¾ć™ć€‚ć—ćŸćŒć£ć¦ć€SlackäøŠć®ć‚¤ćƒ™ćƒ³ćƒˆć®ć‚ć‚‰ć‚†ć‚‹ć‚‚ć®ćŒwebhookć•ć‚Œć‚‹ć‚ć‘ć§ćÆćŖćć€ę¬²ć—ć„ć‚‚ć®ć«(ある程度)ēµžć£ć¦é€šäæ”ć•ć‚Œć‚‹ćŸć‚ć€Bot偓にとってはある程度優しい仕組みになっています。

ćć®ę€§č³ŖäøŠć€Slack恋悉webhookć‚’å—ć‘ć‚‹URLć‚’ē™»éŒ²ć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚ćć®ćŸć‚ć€AWS恧恄恆API Gateway + Lambdać®ć‚ˆć†ćŖå°ć•ć„ę§‹ęˆć§ä½æć†ćØč‰Æć•ćć†ć‹ćŖćØę€ć„ć¾ć™ć€‚(ēµęžœēš„ć«Botć‚’åøøé§ć™ć‚‹ć‚ˆć‚Šå¤§ęŠµć®å “åˆćÆć‚³ć‚¹ćƒˆćŒęŠ‘ćˆć‚‰ć‚Œćć†)

ć“ć®ä»•ēµ„ćæć®ćƒ”ćƒŖćƒƒćƒˆ

Botå“ć®ćƒŖć‚½ćƒ¼ć‚¹ę¶ˆč²»ć‚’ęŠ‘ćˆć‚‰ć‚Œć‚‹

åæ…č¦ćŖć‚¤ćƒ™ćƒ³ćƒˆć«ēµžć£ć¦Slackć‹ć‚‰é€šäæ”ćŒč”Œć‚ć‚Œć‚‹ćŸć‚ć€Botå“ć®ćƒŖć‚½ćƒ¼ć‚¹ę¶ˆč²»ć‚’ęŠ‘ćˆć‚‰ć‚Œć¾ć™ć€‚
ćØćÆć„ćˆć€SubscribeするのはSlackå“ć§ć®ć‚¤ćƒ™ćƒ³ćƒˆć®å˜ä½ćØć„ć†ć–ć£ćć‚Šć—ćŸćƒ¬ćƒ™ćƒ«ćŖć®ć§ć€Botå“ć§ćŖć‚“ć®åˆ¶å¾”ć‚‚č”Œć‚ćŖćć¦č‰Æć„ć‚ć‘ć§ćÆćŖćć€ć”ć‚ƒć‚“ćØē™ŗčØ€č€…ć‚„ē™ŗčØ€ć®å†…å®¹ć€ćƒćƒ£ćƒ³ćƒćƒ«åćŖć©ć‚’ćƒ‘ćƒ©ćƒ”ćƒ¼ć‚æćØć—ć¦å—ć‘ć¦åˆ¶å¾”ć‚’č”Œć†ć®ćÆéæć‘ć‚‰ć‚Œć¾ć›ć‚“ć€‚(ć“ć‚ŒćÆć©ć®ä»•ēµ„ćæć§ć‚‚åŒć˜ć§ć™ćŒ)

ć“ć®ä»•ēµ„ćæć®ćƒ‡ćƒ”ćƒŖćƒƒćƒˆ

ć‚¤ćƒ³ć‚æćƒ¼ćƒćƒƒćƒˆć«å‘ć‘ć¦URLć‚’å…¬é–‹ć™ć‚‹åæ…č¦ćŒć‚ć‚‹

ä»•ēµ„ćæäøŠć€Slackć‹ć‚‰ć®é€šäæ”ć‚’å—ć‘ć‚‹ć“ćØć«ćŖć‚Šć¾ć™ć€‚
ę™®ę®µćÆę°—ć«ć™ć‚‹ć“ćØćÆćŖć„ć§ć—ć‚‡ć†ćŒć€ä¾‹ćˆć°ć‚Ŗćƒ³ćƒ—ćƒ¬ćƒŸć‚¹ć®ē’°å¢ƒćŖć©ć§ē°”å˜ć«ć‚¤ćƒ³ć‚æćƒ¼ćƒćƒƒćƒˆć«å…¬é–‹ć™ć‚‹URLć‚’ęŒć¦ćŖć„å “åˆćŖć©ćÆć“ć®ä»•ēµ„ćæć‚’ęŽ”ē”Øć—ć„ć‚‰ććŖć‚‹ć§ć—ć‚‡ć†ć€‚

č¦ęØ”ćŒå¤§ćććŖć‚‹ćØhook恌遅恄

(ć“ć‚Œć‚’ę›øććŸćć¦ć“ć®čØ˜äŗ‹ć‚’ę›øć„ćŸć®ć§ć™ćŒ)č¦ęØ”ćŒå¤§ćććŖć‚‹ćØć€å¦‚å®Ÿć«é…ććŖć‚Šć¾ć™ć€‚

ćć‚‚ćć‚‚ćć‚“ćŖč¦ęØ”ć§Slackć‚’ä½æć£ć¦ć„ć‚‹ćØć“ć‚ćÆćć‚“ćŖć«ćŖć„ć®ć‹ć‚‚ć—ć‚Œć¾ć›ć‚“ćŒć€2500äŗŗč¦ęØ”ć®Slackだと、 発言してから app_mention ć‚¤ćƒ™ćƒ³ćƒˆ(BOTへのmention)がBOTå“ć«åˆ°é”ć™ć‚‹ć¾ć§ć«5ē§’ćć‚‰ć„ć‹ć‹ć‚Šć¾ć—ćŸć€‚(ę­£ē¢ŗć«ćÆć€é…ć•ćŒä½•ć«ä¾å­˜ć™ć‚‹ć‹ć‚’ćÆć£ćć‚ŠćØćÆčŖæć¹ć¦ć„ć¾ć›ć‚“ć€‚workspaceå…Øä½“ć§ć®ēž¬é–“ēš„ćŖć‚¤ćƒ™ćƒ³ćƒˆć®é‡ć‹ć‚‚ć—ć‚Œć¾ć›ć‚“)

BOTć«åˆ°é”ć—ć¦ć‹ć‚‰ć®ćƒćƒ„ćƒ¼ćƒ‹ćƒ³ć‚°ć§ć‚ć‚Œć°ć‚ć‚‹ēØ‹åŗ¦ć§ććć†ć§ć™ćŒć€ćć‚‚ćć‚‚åˆ°é”ć™ć‚‹ć®ćŒé…ć„ćØćŖć‚‹ćØę‰‹ć®ę‰“ć”ć‚ˆć†ćŒć‚ć‚Šć¾ć›ć‚“ā€¦ć€‚ć§ć™ć®ć§ć€å…Øä½“ēš„ć«ćÆćØć¦ć‚‚ćŠę‰‹č»½ć«ä½œć‚‹ć“ćØćŒć§ćć‚‹äø€ę–¹ć€č¦ęØ”ćŒå¤šć„ćØBotć«č² ę‹…ć•ć›ćŸć„ć“ćØć‚’ć¾ćØć‚ć¦ę¬”ć«čŖ¬ę˜Žć™ć‚‹RTMć§å‡¦ē†ć™ć‚‹ć»ć†ćŒć„ć„ć‚ˆć†ć«ę€ć„ć¾ć™ć€‚

é…ććŖć‚‹č¦å› ćŒćÆć£ćć‚Šć—ćŖć„ć®ć§ć€äø€åæœćć®ę™‚ć®ē’°å¢ƒć‚’ę®‹ć—ć¦ćŠćć¾ć™ć€‚

  • Workspace全体で2500人程度
  • ćØćÆć„ćˆć€ćć®BOTćŒę‰€å±žć™ć‚‹channelは10äŗŗå‰å¾Œć€ē™ŗčØ€ć‚‚ć»ćØć‚“ć©ćŖć„(å¤šćć¦ę•°ē§’ć«1å›žēØ‹åŗ¦)
  • BOT自体は2ćƒćƒ£ćƒ³ćƒćƒ«ćć‚‰ć„ć—ć‹joinしていない

ę³Øę„ć™ć¹ćä»•ę§˜

  • 3ē§’ä»„å†…ć«åæœē­”ć‚’čæ”ć•ćŖć„ćØć€Exponential Backoffć«ć‚ˆć‚‹ćƒŖćƒˆćƒ©ć‚¤ć‚’ęœ€å¤§3å›žč”Œć„ć¾ć™ć€‚
  • Subscribeć™ć‚‹ć‚¤ćƒ™ćƒ³ćƒˆćÆ3äø‡å›ž/1時間までとなっています。
  • ć‚¤ćƒ™ćƒ³ćƒˆć®ēØ®é”žć«ć‚ˆć‚‹subscribeåˆ¶é™ćÆåÆčƒ½ć§ć™ćŒć€ē“°ć‹ć„åˆ¶å¾”ćÆć§ććŖć„ć®ć§č‡Ŗå‰ć§ä½œć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚

Real Time Messaging API(RTM)

rtm.png

BOT偓からWebSocketé€šäæ”ć‚’Slackå“ć§č”Œć„ć€ć‚ćØćÆSlackćØć®é–“ć§ć‚¤ćƒ™ćƒ³ćƒˆć®ć‚„ć‚Šå–ć‚Šć‚’č”Œć„ć¾ć™ć€‚

ć“ć®ä»•ēµ„ćæć®ćƒ”ćƒŖćƒƒćƒˆ

ꗩ恄

Real Timeというだけあって、SlackäøŠć§åæ…č¦ćŖć‚¤ćƒ™ćƒ³ćƒˆ(ä¾‹ćˆć°BOTへのmention)ćŒē™ŗē”Ÿć™ć‚‹ćØć€ć»ć¼å³ę™‚ć§BOTå“ć«åˆ°é”ć—ć¾ć™ć€‚
ć—ćŸćŒć£ć¦ćƒ¦ćƒ¼ć‚¶ćØć‚¤ćƒ³ć‚æćƒ©ć‚Æćƒ†ć‚£ćƒ–ćŖååæœćŒåæ…č¦ćŖå‡¦ē†ć‚’č”Œć†å “åˆć®å³åæœę€§ć‚’ę±‚ć‚ć‚‹å “åˆć«é©ć—ć¦ć„ć¾ć™ć€‚

URLć‚’å…¬é–‹ć™ć‚‹åæ…č¦ćŒćŖć„

Events APIć®é€†ć§ć™ćŒć€BOT偓からSlackへWebSocketć‚’å¼µć‚Šć«ć„ćć®ć§ć€URLć‚’ęŒćŸćŖćć¦ć‚‚ć‚„ć‚ŠćŸć„ć“ćØć‚’å®Ÿē¾ć™ć‚‹ć“ćØćŒć§ćć¾ć™ć€‚

ć“ć®ä»•ēµ„ćæć®ćƒ‡ćƒ”ćƒŖćƒƒćƒˆ

åŸŗęœ¬ēš„ć«BOTを常駐(常時起動)ć•ć›ć‚‹åæ…č¦ćŒć‚ć‚‹

恓悌悂Events APIć®é€†ć§ć™ćŒć€BOTとSlack恮間恧WebSocketć‚’å¼µć£ć¦ćŠćåæ…č¦ćŒć‚ć‚‹ć®ć§ć€åŸŗęœ¬ēš„ć«BOTå“ćÆåøøę™‚čµ·å‹•ćØćŖć‚‹ćØę€ć„ć¾ć™ć€‚
ćØćŖć‚‹ćØć€ćć®ć‚¤ćƒ³ć‚¹ć‚æćƒ³ć‚¹ć®ćƒ©ćƒ³ćƒ‹ćƒ³ć‚°ć‚³ć‚¹ćƒˆćŒćć‚ŒćŖć‚Šć«ć‹ć‹ć‚‹ć“ćØć«ćŖć‚Šć¾ć™ć€‚

ćŠć¾ć‘: Slash Commands

čŖ¬ę˜Ž

ć‚¢ćƒ¼ć‚­ćƒ†ć‚Æćƒćƒ£ć§ć„ć†ćŖć‚‰Events APIćØć»ćØć‚“ć©åŒć˜(EndpointとPayloadćŒåˆ„ćØć„ć†ć ć‘)恧恙怂(3ē§’ä»„å†…ć«ååæœć‚’čæ”ć•ćŖć‘ć‚Œć°ćŖć‚‰ćŖć„ćØć„ć†ć®ć‚‚åŒć˜)

ę©Ÿčƒ½ć®é•ć„ćŖć®ć§ćŠć¾ć‘ćØć—ć¦čŖ¬ę˜Žć—ć¾ć™ć€‚

ć“ć®ä»•ēµ„ćæć®ćƒ”ćƒŖćƒƒćƒˆ

ćć®botć®å­˜åœØé–¢äæ‚ćŖćć€ć‚ć‚‰ć‚†ć‚‹ćƒćƒ£ćƒ³ćƒćƒ«ć§ē™ŗå‹•ć•ć›ć‚‹ć“ćØćŒć§ćć¾ć™ć€‚
ćŖć®ć§ć€č‡Ŗē„¶ćØę±Žē”Øēš„ćŖē”Øé€”ć€ćƒćƒ£ćƒ³ćƒćƒ«ć«ē„”é–¢äæ‚ćŖē”Øé€”ć®ćŸć‚ć«ć“ć®ę–¹ę³•ć‚’ē”Øć„ć‚‹ć“ćØć«ćŖć‚‹ćØę€ć‚ć‚Œć¾ć™ć€‚ä¾‹ćˆć°ć™ć§ć«ć‚ć‚‹ć‚³ćƒžćƒ³ćƒ‰ć§ć‚ć‚‹ToDoćƒŖć‚¹ćƒˆć®ä½œęˆć‚„ć€remind态channelへのinvitećŖć©ćŒćć‚Œć«å½“ćŸć‚Šć¾ć™ć€‚

ć“ć®ä»•ēµ„ćæć®ćƒ‡ćƒ”ćƒŖćƒƒćƒˆ

ćƒ”ćƒŖćƒƒćƒˆć®č£čæ”ć—ć§ć™ćŒć€ć©ć“ć®ćƒćƒ£ćƒ³ćƒćƒ«ć§ć‚‚ē™ŗå‹•ć•ć›ć‚‹ć“ćØćŒć§ćć‚‹ć®ć§ć€ē”Øé€”ćŒé•ć„ć¾ć™ć€‚
ē‰¹å®šć®ćƒćƒ£ćƒ³ćƒćƒ«ć§ē‰¹å®šć®ē”Øé€”ć§ä»•äŗ‹ć‚’ć•ć›ć‚‹ChatbotćØć€ć‚ć‚‰ć‚†ć‚‹ćƒćƒ£ćƒ³ćƒćƒ«ć§ę±Žē”Øēš„ćŖä»•äŗ‹ć‚’ć•ć›ć‚‹Slash Commandć§ćÆć€ē›®ēš„ć®ę™‚ē‚¹ć§éøęŠžćŒåˆ†ć‹ć‚Œć‚‹ćÆćšć§ć™ć€‚
(ć§ć™ć®ć§ć€åˆ„ć«ćƒ‡ćƒ”ćƒŖćƒƒćƒˆćØć„ć†ć‚ć‘ć§ćÆćŖć„ć®ć§ć™ćŒć€č‡ŖćšćØć„ćšć‚Œć‚’éøęŠžć™ć‚‹ć‹ćÆę±ŗć¾ć‚‹ć‹ćØę€ć„ć¾ć™)

ćŠć¾ć‘: Outgoing webhook

Slack Integration恮1ć¤ćØć—ć¦ć®ę©Ÿčƒ½ć§ć™ć€‚å˜ć«Slack恋悉hookć‚’å—ć‘ć¦čæ”ē­”ć—ćŸć„ć ć‘ćŖć‚‰ć“ć‚Œć§ć‚‚ć‚ˆć„ćØę€ć„ć¾ć™ć€‚
恟恠恗态Slackとしてはlegacyć®ä½ē½®ć„ć‘ć§ć‚ć‚Šć€éžęŽØå„ØćØćŖć£ć¦ć„ć¾ć™ć€‚

ć©ć®ć‚¢ćƒ¼ć‚­ćƒ†ć‚Æćƒćƒ£ć‚’éøęŠžć™ć¹ćć‹

ę‰‹č»½ć«ęøˆć¾ć›ćŸć„ćŖć‚‰Events APIć€ä»Šå¾Œć®ę‹”å¼µę€§ć‚’č€ƒćˆć¦ć€ćć®BotćŒę§˜ć€…ćŖć“ćØć‚’č”Œć†åÆčƒ½ę€§ćŒć‚ć‚‹ćŖć‚‰RTM恧恗悇恆恋怂
URLå…¬é–‹ćŒč² ę‹…ć«ćŖć‚‹ćŖć‚‰éøęŠžć®ć—ć‚ˆć†ćŒć‚ć‚Šć¾ć›ć‚“ćŒć€Events APIć®ćæćŖć‚‰ćšSlack Command悄 Interactive ComponentsćŖć©ć§ć‚‚åæ…č¦ć«ćŖć£ć¦ćć‚‹ć®ć§ć€å®Ÿē¾ć§ćć‚‹ć®ć§ć‚ć‚Œć°URL endpoint恮1ć¤ć§ć‚‚ęŒć£ć¦ć„ććØä»Šå¾Œä¾æåˆ©ć ć‚ć†ćŖćØę€ć„ć¾ć™ć€‚

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?