話題のlinebotをherokuで試してみました。
はじめに
最近会社でslackが導入されてbot作ったばかりだった矢先に、linebotが作れるようになったとのことだったのでやってみました。
ズンドコ機能についてはslack用につくったのを流用しました。
当たり前ですが、hubotでlinebotが作れるとなると、今までの資産がつかえるのね。素敵。
hubot-line-trialの作者様に感謝。
なお、開発マシンはMac。
必要なやつ
$ brew install heroku-toolbelt
$ brew install node
$ npm install -g hubot hubot-line-trial yo generator-hubot coffee-script
linebot登録
https://business.line.me/ja/products/4/introductionから登録しとく。
つくりかた
$ mkdir linebot
$ cd linebot
$ yo hubot
$ git init
$ heroku login
$ heroku create:apps {アプリ名}
$ heroku addons:create fixie
yo hubot
したときのadapterにはline-trial
を入力。
アドオンのfixieは、ころころ変わるherokuのIPを固定してくれるらしい。
heroku addons:create fixie
のあとにIPが表示されるからlinebotのServer IP Whitelistに設定。
ついでにlinebotのCallback URLにhttps://{アプリ名}.herokuapp.com:443/hubot/incoming
を入力しとく。
botのChannel ID、Channel Secret、MIDを環境変数に設定。
$ heroku config:set LINE_CHANNEL_ID={Channel ID}
$ heroku config:set LINE_CHANNEL_SECRET={Channel Secret}
$ heroku config:set LINE_CHANNEL_MID={MID}
ズンドコ機能
zundoko = ->
result = ''
check = []
zundokoList = ['ズン', 'ドコ']
until check[check.length-6..check.length].join('').match(/([^(ズン)]ズンズンズンズンドコ|^ズンズンズンズンドコ)$/)
wordSelector = Math.floor(Math.random() * zundokoList.length)
check.push(zundokoList[wordSelector])
if check.length == 5 and check.join('') == 'ズンズンズンズンドコ'
break
trial_num = check.length
check.push('キ・ヨ・シ!!! (試行回数: ' + trial_num + '回)')
result = check.join('\r\n')
return result
module.exports = (robot) ->
robot.hear /^(ず|ズ)(ん|ン)(ど|ド)(こ|コ)$/, (msg) ->
result = zundoko()
msg.send result
"ズンズンズンズンドコ"の前は"ズン"が来たらいけないと思って、少しストイックなズンドコにした。
だって"ズンズンズンズンズンズンズンズンズンズンズンドコ"だとキヨシも歌いづらいだろうし。
ずんどこしてみる
$ bin/hubot
zundoko> ズンドコ
ズン
ドコ
ドコ
ズン
ズン
(中略)
ズン
ドコ
ズン
ズン
ズン
ズン
ドコ
キ・ヨ・シ!!! (試行回数: 47回)
でぷろい
$ git add .
$ git commit -m 'first commit'
$ git push heroku master
やってみる
linebotのページの下の方にあるQRコードからbotに話しかけてみる。
ズンドコの試行回数の大小で勝ち負け決めるゲームして、飲み会で飲みまくるぞ〜〜〜
参考
Line BOT API Trial + hubot で heroku 上にBot作成 | liptonista
hubot-line-trialを使ってhubotからlinebotに通知させてみた - Qiita