この記事はNIFTY Advent Calendar 2016 17日目の記事です。
昨日は@qracさんのリメイクUIコーディングという記事でした。
はじめに
あれは入社一年目でまだ新人の頃です。とある先輩から言われました。
先輩「chatbot入れたんだけどさ〜、何か面白いこと言うようにしておいて」
私「え? は、はい」
果たしてどこまで本気だったのかわかりませんが、ピュアだった私は真面目に面白いことを言わせようとするのでした。。。
パターンマッチングで笑いをとる
ちょうど恋するプログラムという人工無脳について書かれた素晴らしい本を持っていたので、この本を参考にパターンマッチングで応答するtalk.coffee
を書きました。
scripts
├── talk
│ ├── pattern.txt
│ └── random.txt
└── talk.coffee
このコードはpattern.txtに正規表現と返答の組み合わせを正規表現<tab>返答
の形式で登録しておいて、正規表現にマッチした場合は登録された内容を返します。
はよ|おっはー|オッハー %user%さんおはようございます!|%match%|おっはー\
|グッドモーニング!
(今晩|こんばん)(は|わ) こんばんは
お(休|やす)み|オヤスミ お休みなさい|今日はゆっくり休んでくださいね
もしマッチしなかった場合はrandom.txtに登録した内容をランダムに返すというものです。
コードは置いておいて、重要なのは登録内容です。
パターンマッチングでは、みんなが言うわけではないけれど、特定の人だけたまに言う事を登録しておく事がポイントです。
なぜか「おはヨーグルト」と挨拶する面白い先輩がいたので、それに反応するようにしました。
すると、こんな言葉の場合もちゃんと用意してあるんだ、と笑いが取れます。
パターンにマッチせず、ランダムに返す場合はパワーワードや時事ネタを入れると面白くなります。
当時はLINEの乗っ取りが流行っていたので、「近くのコンビニでiTunesカードを買うのを手伝ってもらえませんか?」と返したら笑ってもらえました。
勝手に反応して笑いをとる
話しかけた時に返してくれる機能ですが、正直よっぽど暇な人でない限り話しかけようとはしません。
そんな場合は勝手にワードを拾って反応しましょう。
これもpattern.txt
に登録された内容を返すものなのでポイントはパターンマッチングの時と同じです。
挨拶に反応して返してくれるような普通の使い方もできます。
誰も反応してくれないと寂しいのでありがたい機能です。
役に立たない機能で笑いをとる
chatbotといえばgitのbranchをビルドさせたりredmineのチケットを取得したりと色々便利な機能が思いつきますが、あえて、おおよそ役に立たないであろう今日の六曜を教えてくれるコマンドrokuyo.coffee
を実装しました。
内部では暦API(http://koyomi.zing2.org/ )というAPIを使わせていただいてます。
トラブルが多発した時なんかに聞いてみると
やっぱりかー!となります。
おわりに
ブルーマンデーと揶揄される月曜の朝など、ちょっとした笑いで気持ちよく仕事に入っていけることもあると思います。
不適切にならないレベルを見極めつつ、笑いを取っていきましょう!
今回紹介したコードはgithubにありますので、よかったら使ってみてください。
https://github.com/teitaraku/hubot-scripts
明日は@yt09191971さんの「プログラミングレスでIoTデバイスハブのデータをData Visualizer (β)に表示させる」です。楽しみです!