Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
BotKitで作る
イベント駆動Bot
@hico_horiuchi
自己紹介
堀内 晨彦 (Akihiko Horiuchi)
Emacs, Ruby, Golang
Hubot, Sensu, Ansible, Itamae
@hico_horiuchi
http://bit.ly/hiconyan
NTT ...
Hubot×ChatOps勉強会
第1回 2014/11/22
場 所:大阪大学 中之島センター
参加者:34人
第2回 2015/08/22
場 所:兵庫勤労市民センター
参加者:6人
第3回 ついに東京で開催できました
3
これまで作ったBot
hico-horiuchi/huboco
あなたの研究生活をサポートするHubot
Hubotでボット開発はじめてみた
hico-horiuchi/kaobashi
工学部祭実行委員会をサポートするHubot
Hubotで...
Botkitとは?
-
Botkitの紹介
howdyai/botkit
2015年12月に発表された Botフレームワーク
スタートアップのHowdy社が開発
Slack、Messanger、Twilioなどに対応
Botkit will also provide ...
HubotとBotkitの比較
hello、hiに挨拶を返すサンプル
# Hubot
robot.respond /hello|hi/i, (message) ->
message.reply 'Hello.'
// Botkit
contro...
対話(Conversation)
controller.hears(['pizzatime'], 'message_received',
function(bot, message) {
var askFlavor = function(err...
Slack Web APIをたたく
GJにAdd Reactionするサンプル
controller.hears(['gj', 'GJ'], ['ambient'],
function(bot, message) {
bot.api.react...
イベント駆動Botとは?
-
これまでのBot
ユーザーの発言に反応してアクションする
「プルリクが出たよ〜」
「テスト通ったよ〜」
「プルリク、マージしとく?」
「LGTMだね、マージよろ〜」
「おけ、ついでにデプロイしとく?」
「いいね、デプロイよろ〜」
「おけ、デプロ...
イベント駆動Bot
Slackの API Event に反応してアクションする
API Events | Slack
Real Time Messaging API | Slack
イベント 説明
channel_created 新しいチャンネ...
RTMでEventを受け取る
HubotでもBotkitで簡単に実装できるよ
# Hubot
robot.adapter.client?.on? 'raw_message', (message) ->
if message.type is 'c...
イベント駆動のサンプル
新しいチャンネルが作られたら参加する
(全てのチャンネルにBotが居て欲しいとき)
controller.on('channel_created', function(bot, message) {
bot.api.ch...
イベント駆動のサンプル
新しい絵文字が登録されたら教えてくれる
(新しい絵文字はどんどん使いたいですよね)
controller.on('emoji_changed', function(bot, message) {
if (message....
イベント駆動どうですか?
ChatOpsの幅が広がると思うので
ぜひ試してみて下さい!
-
ありがとうございました
-
Upcoming SlideShare
Loading in …5
×

BotKitで作るイベント駆動Bot

1,273 views

Published on

第3回 Hubot×ChatOps勉強会
https://hubot-chatops.connpass.com/event/49793/

Published in: Technology
  • Be the first to comment

BotKitで作るイベント駆動Bot

  1. 1. BotKitで作る イベント駆動Bot @hico_horiuchi
  2. 2. 自己紹介 堀内 晨彦 (Akihiko Horiuchi) Emacs, Ruby, Golang Hubot, Sensu, Ansible, Itamae @hico_horiuchi http://bit.ly/hiconyan NTT Comの ベアメタルクラウドチーム で サービス開発やデプロイ自動化などをやってます 2
  3. 3. Hubot×ChatOps勉強会 第1回 2014/11/22 場 所:大阪大学 中之島センター 参加者:34人 第2回 2015/08/22 場 所:兵庫勤労市民センター 参加者:6人 第3回 ついに東京で開催できました 3
  4. 4. これまで作ったBot hico-horiuchi/huboco あなたの研究生活をサポートするHubot Hubotでボット開発はじめてみた hico-horiuchi/kaobashi 工学部祭実行委員会をサポートするHubot HubotでSlackのChannelとTrelloのBoardを連携 hico-horiuchi/emojiner I am a slack custom emoji craftsman. 新しく追加されたEmojiを教えてくれるボットを作った 4
  5. 5. Botkitとは? -
  6. 6. Botkitの紹介 howdyai/botkit 2015年12月に発表された Botフレームワーク スタートアップのHowdy社が開発 Slack、Messanger、Twilioなどに対応 Botkit will also provide a simplified way for new developers to get into programming for Slack by building off the impressive collection of tools available in it. — The Slack Platform launch “ “ 6
  7. 7. HubotとBotkitの比較 hello、hiに挨拶を返すサンプル # Hubot robot.respond /hello|hi/i, (message) -> message.reply 'Hello.' // Botkit controller.hears(['hello', 'hi'], ['direct_message', 'direct_mention', 'mention'], function(bot, message) { bot.reply(message, 'Hello.'); } ); CoffeeScriptで書けないし コードの量も増えてる気がする… でも、便利な機能がたくさんあるんです 7
  8. 8. 対話(Conversation) controller.hears(['pizzatime'], 'message_received', function(bot, message) { var askFlavor = function(err, convo) { convo.ask('What flavor of pizza do you want?', function(response, convo) { convo.say('Awesome.'); askSize(response, convo); convo.next(); } ); }; var askSize = function(response, convo) { convo.ask('What size do you want?', function(response, convo) { convo.say('Ok.') askWhereDeliver(response, convo); convo.next(); } ); }; var askWhereDeliver = function(response, convo) { convo.ask('So where do you want it delivered?', function(response, convo) { convo.say('Ok! Good bye.'); convo.next(); } ); }; bot.startConversation(message, askFlavor); }); 8
  9. 9. Slack Web APIをたたく GJにAdd Reactionするサンプル controller.hears(['gj', 'GJ'], ['ambient'], function(bot, message) { bot.api.reactions.add({ timestamp: message.ts, channel: message.channel, name: '+1', } } ); bot.api で簡単にSlackのAPIをたたける Using the Slack Web API HubotでSlackのEmoji Reactionを付ける 9
  10. 10. イベント駆動Botとは? -
  11. 11. これまでのBot ユーザーの発言に反応してアクションする 「プルリクが出たよ〜」 「テスト通ったよ〜」 「プルリク、マージしとく?」 「LGTMだね、マージよろ〜」 「おけ、ついでにデプロイしとく?」 「いいね、デプロイよろ〜」 「おけ、デプロイしといた!」 みなさんの ChatOps はどんな感じですか? 11
  12. 12. イベント駆動Bot Slackの API Event に反応してアクションする API Events | Slack Real Time Messaging API | Slack イベント 説明 channel_created 新しいチャンネルが作られた channel_joined ユーザーがチャンネルに参加した emoji_changed 新しい絵文字が登録された file_created 新しいファイルがアップロードされた pin_added メッセージがピンされた team_join 新しいユーザーが参加した 12
  13. 13. RTMでEventを受け取る HubotでもBotkitで簡単に実装できるよ # Hubot robot.adapter.client?.on? 'raw_message', (message) -> if message.type is 'channel_joined' # message contains data sent by slack # in this case: # https://api.slack.com/events/channel_joined // Botkit controller.on('channel_joined', function(bot, message) { // message contains data sent by slack // in this case: // https://api.slack.com/events/channel_joined }); notify "reaction_added" event for slack.com Slack-Specific Events 13
  14. 14. イベント駆動のサンプル 新しいチャンネルが作られたら参加する (全てのチャンネルにBotが居て欲しいとき) controller.on('channel_created', function(bot, message) { bot.api.channels.join({ name: message.channel }); }); ユーザーがチャンネルに参加したらメッセージを送る (ウェルカムメッセージなどを送りたいとき) controller.on('channel_joined', function(bot, message) { bot.say('Welcome!'); }); 14
  15. 15. イベント駆動のサンプル 新しい絵文字が登録されたら教えてくれる (新しい絵文字はどんどん使いたいですよね) controller.on('emoji_changed', function(bot, message) { if (message.subtype == 'added') { bot.say('New emoji ' + message.names[0] + 'is added!'); } }); 新しいユーザーが参加したら案内を出す (アイコンやプロフィールを設定して貰いたいですよね) controller.on('team_join', function(bot, message) { bot.say(message.user.name + 'Please set your icon and profile.') }); 15
  16. 16. イベント駆動どうですか? ChatOpsの幅が広がると思うので ぜひ試してみて下さい! -
  17. 17. ありがとうございました -

×