Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Botkit入門
Search
Takuya Arita
May 17, 2016
Programming
750
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Botkit入門
社内勉強会用の資料です
Takuya Arita
May 17, 2016
More Decks by Takuya Arita
See All by Takuya Arita
Hosted Redash の EOL と移行ツール redash-migrate / You should know about Hosted Redash EOL and redash-migrate
ariarijp
0
3.4k
Redash で踏み出す BI 導入はじめの一歩 / DataEngineeringStudy Redash
ariarijp
1
2.8k
Redash のいま / Redash in 2021
ariarijp
2
1.2k
Redash 導入・運用を4年ぐらいやって変わったこと・変わらなかったこと / Changed and unchanged things with Redash and me
ariarijp
0
1.4k
5年前の自分に伝えたい広告 API 周辺の歩き方 / SOT Tech Night vol.1
ariarijp
1
550
使われていない、を知る / How do we know unused things in the real world?
ariarijp
0
490
MULTI_ORG について / What is MULTI_ORG in Redash
ariarijp
1
3.9k
あらためて振り返る Redash の使いどころ / Why I strongly recommend Redash
ariarijp
2
1.3k
PHP Data Structures
ariarijp
1
580
Other Decks in Programming
See All in Programming
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
Deep dive into the select statement (GopherCon UK)
jespino
0
170
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.4k
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
140
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
470
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
390
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
140
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
130
Webの地図
yosuke_furukawa
PRO
6
4.1k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
240
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
110
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
140
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Cost Of JavaScript in 2023
addyosmani
55
10k
GraphQLとの向き合い方2022年版
quramy
50
15k
Faster Mobile Websites
deanohume
310
32k
How to Talk to Developers About Accessibility
jct
2
540
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
30 Presentation Tips
portentint
PRO
1
390
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
Fireside Chat
paigeccino
43
4k
Transcript
Botkitೖ @ariarijp
ఆϦεφʔ • “Bot”ͱ͍͏ΩʔϫʔυΛฉ͍ͨ͜ͱ͕͋Δ • SlackΛΑ͍ͬͯ͘Δ • BotkitΛฉ͍ͨ͜ͱ͕ͳ͍ɺͬͨ͜ͱ͕ͳ͍
Botͱ(WikipediaΑΓ) • ΠϯλʔωοτϘοτʢӳ: Internet botʣɺΠϯλʔωοτ্ͰࣗಈԽ͞ ΕͨλεΫΛ࣮ߦ͢ΔΞϓϦέʔγϣϯιϑτΣΞɻWebϘοτ͋Δ͍ ୯ʹϘοτͱݺͿɻҰൠʹ୯७ͳ܁Γฦ͠ͷλεΫΛ͜ͳ͠ɺͦͷΑ͏ͳ λεΫʹؔͯ͠ਓ͕ؒखͰΔΑΓߴͰ͋ΔɻϘοτओʹΫϩʔϥ ͱͯ͠ΘΕΔ͜ͱ͕ଟ͘ɺਓؒͷԿഒͷ͞ͰWebϖʔδΛࣗಈతʹ ूΊɺͦͷ༰ʢใʣΛੳͯ͠ྨ͢ΔɻWebαʔόʹ
robots.txt ͱ ͍͏ϑΝΠϧ͕͋ΓɺΫϩʔϥ͕ै͏͖نଇ͕ॻ͔Ε͍ͯΔɻ • ͦͷଞʹɺਓؒΑΓߴͳԠ͕ཁٻ͞ΕΔ໘ͰϘοτ͕ΘΕͨΓ ʢήʔϜΦʔΫγϣϯͳͲͰͷϘοτར༻ʣɺ·Εʹਓؒͷ׆ಈΛΤϛϡ Ϩʔγϣϯ͢ΔͷʹΘΕͨΓ͢ΔʢձϘοτͳͲʣɻ
ձBotʹ͍ͭͯ͏͢͜͠ • ͜͜࠷ۙͷ༷ʑͳBotؔ࿈χϡʔε • LINEFacebook, Microsoft͕BotΛͬͨαʔϏε։ൃڥΛެ։͠ʹͳͬͨ • ۙͷϏοάσʔλɺػցֶशɺਓೳͱ͍ͬͨΩʔϫʔυͱؔΘΓ͕͋Δͱ͍͑ Δ •
ऩूͨ͠σʔλɺֶशͨ͠σʔλʹج͍ͮͯదͳԠΛ͢Δ • LINEͱMicrosoft͕ఏڙ͍ͯ͠ΔʮΓΜͳʯ͕༗໊Ͳ͜Ζ • http://rinna.jp/rinna/ • SlackͷྲྀߦʹΑΓWebؔ࿈αʔϏεͷاۀͰɺBot͕ChatopsͳͲͷ໘Ͱ׆༻͞Εͯ ͍Δ
Botkitͱ • Slack༻ͷBotΛ࡞͢ΔͨΊͷϑϨʔϜϫʔ Ϋ • ϓϩάϥϛϯάݴޠNode.jsΛ༻͍ͯ͠Δ • ͔ᷮͳ࣮ͰಛఆͷΩʔϫʔυʹԠ͢ΔBot Λ؆୯ʹ࡞Δ͜ͱ͕Ͱ͖Δ
BotkitͰ ͍͋ͭ͞BotΛ࡞ͬͯΈΑ͏
͍͋ͭ͞Botͷࡶͳઃܭ • ʮ͓Α͏ʯͱ͔͚͠ΔͱʮࠓΑΖ͠ ͘ʯͱԠ͑Δ • ʮ͜Μʹͪʯͱ͔͚͠Δͱʮ͜Μʹͪʯ ͱԠ͑Δ • ʮ͓͔ͭΕ͞·ʯͱ͔͚͠Δͱʮ·ͨ໌ʯ ͱԠ͑Δ
ڥߏங $ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install -y nodejs $ cd /vagrant $ npm install --save botkit
αϯϓϧίʔυΛࢀߟʹ࣮ var Botkit = require('botkit'); var controller = Botkit.slackbot(); controller.spawn({
token: process.env.SLACK_BOT_TOKEN, }).startRTM() controller.hears('͓Α͏', ['direct_message', 'direct_mention', 'mention'], function(bot, message) { bot.reply(message, 'ࠓΑΖ͘͠'); }); controller.hears('͜Μʹͪ', ['direct_message', 'direct_mention', 'mention'], function(bot, message) { bot.reply(message, '͜Μʹͪ'); }); controller.hears('͓͔ͭΕ͞·', ['direct_message', 'direct_mention', 'mention'], function(bot, message) { bot.reply(message, '·ͨ໌'); });
ಈ࡞֬ೝ $ SLACK_BOT_TOKEN=BotϢʔβʔͷτʔΫϯ node bot.js info: ** No persistent storage
method specified! Data may be lost when process shuts down. info: ** Setting up custom handlers for processing Slack messages info: ** API CALL: https://slack.com/api/rtm.start notice: ** BOT ID: greetbot ...attempting to connect to RTM!
ಈ࡞֬ೝ • ࣮ߦ͢ΔͱBotϢʔβʔ͕ΦϯϥΠϯঢ়ଶʹͳ Δ • BotϢʔβʔΛదͳνϟϯωϧ·ͨάϧʔϓ ʹট͢Δ • BotϢʔβʔʹϝϯγϣϯΛ͚ͭͯʮ͓Α ͏ʯͱ͔͔͚ͯ͠ΈΔ
࣮ͷ·ͱΊ • controller.hearsͰԿʹԠ͢Δ͔Λఆٛ͢Δ • controller.hearsʹ͍ͯ͠Δແ໊ؔͰͲͷ Α͏ͳԠΛ͢Δ͔Λఆٛ͢Δ
ϦΞϧλΠϜʹձ͕Ͱ͖ΔΈ • WebSocketͱ͍͏௨৴ن(ϓϩτίϧ)Λ༻ • WebSocketʹ͍֤ͭͯࣗௐͯΈͯͩ͘͞ ͍ • HTTPͱͷҧ͍͕ཧղ͕Ͱ͖Δͱྑ͍Ͱ͠ΐ ͏
BotkitͳΒ࣮؆୯ͳͷͰ ͋ͱΞΠσΟΞ࣍ୈ
Botͷ࣮ྫ • ఱؾΛฉ͍ͨΒࠓͱ໌ͷఱؾΛڭ͑ͯ͘ΕΔ • Ӻ໊Λฉ͍ͨΒΓೖΕ࿏ઢΛڭ͑ͯ͘ΕΔ • ࠓͷ༧ఆΛฉ͍ͨΒGoogleΧϨϯμʔͳͲ͔ Βࣗͷ༧ఆΛڭ͑ͯ͘ΕΔ • ࢦఆͷ࣌ࠁʹͳͬͨΒ෦ఆྫͷϦϚΠϯυΛ͠
ͯ͘ΕΔ
طଘͷWebAPIͳͲͱ Έ߹ΘͤΔ͜ͱͰศརͳBot࡞ΕΔ
·ͱΊ • BotkitΛ͏͜ͱͰ؆୯ʹSlackͷBotΛ࡞Δ͜ ͱ͕Ͱ͖Δ • طଘͷWebAPIΛར༻͢Δ͜ͱͰɺBotʹศར ͳػೳΛ༩͢Δ͜ͱͰ͖Δ • Ͳ͏ͬͯ׆༻͢Δ͔ɺ։ൃऀͷΞΠσΟΞ ࣍ୈ