Help us understand the problem. What is going on with this article?

Slack × hubotで笑いをとる

More than 3 years have passed since last update.

この記事は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に登録した内容をランダムに返すというものです。

コードは置いておいて、重要なのは登録内容です。

パターンマッチングでは、みんなが言うわけではないけれど、特定の人だけたまに言う事を登録しておく事がポイントです。

なぜか「おはヨーグルト」と挨拶する面白い先輩がいたので、それに反応するようにしました。

スクリーンショット 2016-12-17 13.16.02.png

すると、こんな言葉の場合もちゃんと用意してあるんだ、と笑いが取れます。

パターンにマッチせず、ランダムに返す場合はパワーワードや時事ネタを入れると面白くなります。

当時はLINEの乗っ取りが流行っていたので、「近くのコンビニでiTunesカードを買うのを手伝ってもらえませんか?」と返したら笑ってもらえました。

勝手に反応して笑いをとる

話しかけた時に返してくれる機能ですが、正直よっぽど暇な人でない限り話しかけようとはしません。
そんな場合は勝手にワードを拾って反応しましょう。

これもpattern.txtに登録された内容を返すものなのでポイントはパターンマッチングの時と同じです。

挨拶に反応して返してくれるような普通の使い方もできます。

スクリーンショット 2016-12-17 14.35.03.png

誰も反応してくれないと寂しいのでありがたい機能です。

役に立たない機能で笑いをとる

chatbotといえばgitのbranchをビルドさせたりredmineのチケットを取得したりと色々便利な機能が思いつきますが、あえて、おおよそ役に立たないであろう今日の六曜を教えてくれるコマンドrokuyo.coffeeを実装しました。
内部では暦API(http://koyomi.zing2.org/ )というAPIを使わせていただいてます。

トラブルが多発した時なんかに聞いてみると

スクリーンショット 2016-12-17 13.26.47.png

やっぱりかー!となります。

おわりに

ブルーマンデーと揶揄される月曜の朝など、ちょっとした笑いで気持ちよく仕事に入っていけることもあると思います。
不適切にならないレベルを見極めつつ、笑いを取っていきましょう!

今回紹介したコードはgithubにありますので、よかったら使ってみてください。
https://github.com/teitaraku/hubot-scripts

明日は@yt09191971さんの「プログラミングレスでIoTデバイスハブのデータをData Visualizer (β)に表示させる」です。楽しみです!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした