Raspberry Pi | Slack bot様々な人生のアドバイスをもらう(advice.coffee)
こんにちは、tapunです。今日はクリスマスイブイブですね!
これまでにRaspverry Pi をSlack bot化しましたが、今日はhubot scriptを試してみようと思います。
これまでやったこと
hubot Scriptとは
hubot-scriptsとは、hubotコミュニティの方々が作った様々なスクリプト群のことです。
「hubotを使ってあんなことしたいなぁ~」「何かしたいな~、なんでもいいから試したいな~」と思った時、hubot-scripts を探せば、自分でスクリプトを書かなくてもOKな場合もあるので、探してみましょう。
※スクリプトが作成された日付が古いものはAPIが公開停止になっている場合とかもあるので、要注意です。
hubot scriptsはこちらにございます。
https://github.com/github/hubot-scripts/tree/master/src/scripts
advice.coffeeを試してみる
私もcoffeescriptでバリバリscriptを作成できれば良いのですが、まだまだ全然できないので、一旦hubot scriptsの中の”advice.coffee”を試してみます。
advice.coffeeとは、特定の型に当てはまるコトバをbotに投げかけることでその質問に対するアドバイスを答えてくれちゃう優れものです。
スクリプトはこちら。
ここにも書いておきます。
# Description: # Get free advice from http://adviceslip.com/ # # Dependencies: # None # # Configuration: # None # # Commands: # hubot what should I do about (.*) # hubot what do you think about (.*) # hubot how do you handle (.*) # hubot I need some advice # # Author: # pengwynn # getAdvice = (msg, query) -> msg.http("http://api.adviceslip.com/advice/search/#{query}") .get() (err, res, body) -> results = JSON.parse body if results.message? then randomAdvice(msg) else msg.send(msg.random(results.slips).advice) randomAdvice = (msg) -> msg.http("http://api.adviceslip.com/advice") .get() (err, res, body) -> results = JSON.parse body advice = if err then "You're on your own, bud" else results.slip.advice msg.send advice module.exports = (robot) -> robot.respond /what (do you|should I) do (when|about) (.*)/i, (msg) -> getAdvice msg, msg.match[3] robot.respond /how do you handle (.*)/i, (msg) -> getAdvice msg, msg.match[1] robot.respond /(.*) some advice about (.*)/i, (msg) -> getAdvice msg, msg.match[2] robot.respond /(.*) think about (.*)/i, (msg) -> getAdvice msg, msg.match[2] robot.respond /(.*) advice$/i, (msg) -> randomAdvice(msg)
やること
- Raspberry Pi にログオンし、hubotをインストールしたディレクトリ/scriptsディレクトリに移動します。
$ cd <your hubot>/scripts
- advice.coffeeファイルを作成します。そのままgitから持ってきても良いし、自分でコピペしても良いし。
私はコピペしちゃいました。$ nano ./advice.coffee
- hubotを実行します。
※私は前回作成したSlack API を入れ込んだ”slack-token.sh”を実行するようにしてます。
詳しくはこちらをご参照ください。$ sh <your hubot>/slack-token.sh
さっそくSlackでbotに話しかけてみる
これで準備は整いました!
advice.coffeeのソースを見ると、下記の5種類の話しかけ方でアドバイスをくれそうです。
- what (do you|should I) do (when|about) (.*)
→(.*)部分に入れた言葉に関するアドバイスをくれます。 - how do you handle (.*)
→(.*)部分に入れた言葉に関するアドバイスをくれます。 - (.*) some advice about (.*)
→2箇所の(.*)部分に入れた言葉に関するアドバイスをくれます。 - (.*) think about (.*)
→2箇所の(.*)部分に入れた言葉に関するアドバイスをくれます。 - (.*) advice
→ランダムにアドバイスをくれます。
ということで早速試してみます。
例1
Q:
今日は「~など」といった曖昧なコトバは使うな
例2
Q:
A:
これは、質問の仕方1に当てはまるので、”sleep”に関連するアドバイスをくれました。
まとめ
今日はslack bot計画の取っ掛かりとして、hubot script(advice.coffee)を使って英語で人生における様々なアドバイスをしてくれるslack botを作ってみました。
英語なのがちょっとアレですが、為になるし暇つぶしになりそうです!
coffeescript勉強して自分で好きなAPIから情報をとってこれるようにしたいなぁ。
以上です。最後まで読んでいただいてありがとうございました
コメントを残す