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.5k
5年前の自分に伝えたい広告 API 周辺の歩き方 / SOT Tech Night vol.1
ariarijp
1
560
使われていない、を知る / 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
590
Other Decks in Programming
See All in Programming
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
The Rails Doctrine Decade
koic
2
590
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
phperだってパンチカードでコーディングしたい
o0h
PRO
0
330
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
320
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
My Coaching Mixtape
mlcsv
0
360
Thoughts on Productivity
jonyablonski
76
5.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
The untapped power of vector embeddings
frankvandijk
2
1.9k
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ʹศར ͳػೳΛ༩͢Δ͜ͱͰ͖Δ • Ͳ͏ͬͯ׆༻͢Δ͔ɺ։ൃऀͷΞΠσΟΞ ࣍ୈ