LoginSignup
52
66

More than 5 years have passed since last update.

Ruby on Rails でlinebot。メンヘラbotを作ってみた。

Last updated at Posted at 2016-06-02

環境構築

先人様達の偉大な知恵をお借りいたしました。環境構築において特にはまったところはありませんでした。

・ 環境構築:
LINE BOT をとりあえずタダで Heroku で動かす
http://qiita.com/yuya_takeyama/items/0660a59d13e2cd0b2516#comment-e6737f3166be32597681

Rails HerokuでLINE BOTを試してみた
http://qiita.com/Arahabica/items/98e3d0d5b65269386dc4

・ エラー対応
http://qiita.com/harumakiyukko/items/05b29b1cc7e72514aa76
=>私の場合はご丁寧に全部対応することになりましたが、その通りにすれば全く問題ありませんでした。

・ LINE 公式
https://developers.line.me/bot-api/getting-started-with-bot-api-trial

メンヘラボット

be0e22a8.jpg

趣旨:
・ 話しかけると、メンヘラな返事をしてくれる。
・ 特定のワードに対しては、とりあえず定型で返す。["おはよう","愛してる"]

という、練習用Botです。すいません。

スクリーンショット 2016-05-31 16.10.00.png

1:LINEへの登録~Herokuへのデプロイ

http://qiita.com/Arahabica/items/98e3d0d5b65269386dc4
まるっきりこのまんまです。本当にありがとうございます。

2:話しかけられた時の返事を登録する。

前段で作成したRails アプリに適当にScaffoldで作成します。

rails g scaffold Post name:string

そこにガツガツメンヘラワードを放り込みます。
スクリーンショット 2016-06-02 17.26.10.png

3:ランダムで返事をする。

1で作成したlib/line_client.rbをコントローラー代わりにオウム返しではなく返事ができるようにします。

line_client.rb



def send(line_ids, message)

   @post=Post.offset( rand(Post.count) ).first
# Postからランダムで返事を選ぶ。


    post('/v1/events', {

            to: line_ids,
            content: {
                contentType: ContentType::TEXT,
                toType: ToType::USER,
                text: @post.name #返事をPostから取ってくる。
            },

            toChannel: TO_CHANNEL,
            eventType: EVENT_TYPE,



        })

4 特定の発話に対応する。

と言っても条件分岐でとりあえず作っただけです。ゴメンなさい。

line_client.rb

def send(line_ids, message)

    @post=Post.offset( rand(Post.count) ).first

   if message == "愛してる"

    post('/v1/events', {

        to: line_ids,
        content: {
            contentType: ContentType::TEXT,
            toType: ToType::USER,
            text: "んほぉぉぉぉぉぉ!すきすきすきすきすきすきすきすきぃぃぃぃぃ"
        },

        toChannel: TO_CHANNEL,
        eventType: EVENT_TYPE,



    })

   elsif

   message == "いってきます"

     post('/v1/events', {

         to: line_ids,
         content: {
             contentType: ContentType::TEXT,
             toType: ToType::USER,
             text: "どこいくの?どこいくの?どこいくの?寂しい寂しい寂しい。。。"
         },

         toChannel: TO_CHANNEL,
         eventType: EVENT_TYPE,



     })

   elsif

   message == "おはよう"

     post('/v1/events', {

         to: line_ids,
         content: {
             contentType: ContentType::TEXT,
             toType: ToType::USER,
             text: "おはよう。なんで今まで連絡くれなかったの?"
         },

         toChannel: TO_CHANNEL,
         eventType: EVENT_TYPE,



     })

   else

        post('/v1/events', {

            to: line_ids,
            content: {
                contentType: ContentType::TEXT,
                toType: ToType::USER,
                text: @post.name
            },

            toChannel: TO_CHANNEL,
            eventType: EVENT_TYPE,



        })

   end

    end

5 まとめ

という感じでデプロイして使えばとりあえず支離滅裂ではありますが、お話はできる感じです。
かなり手軽に作れる感じで、様々なAPIと連携すれば色々なことができると思いました。

一応QRを貼っておきますので、もしよろしければお試しくださいませ。どうぞよろしくお願い致します。

スクリーンショット 2016-11-18 21.58.24.png

52
66
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
52
66