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

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

・　環境構築：
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](https://qiita-image-store.s3.amazonaws.com/0/128165/a48004eb-ad26-088e-3dca-c09e4c60c40b.jpeg)

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

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

<img width="818" alt="スクリーンショット 2016-05-31 16.10.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/128165/5e45d825-8e66-6cfd-2db3-af2069179aff.png">

# １：LINEへの登録~Herokuへのデプロイ
http://qiita.com/Arahabica/items/98e3d0d5b65269386dc4
まるっきりこのまんまです。本当にありがとうございます。

# ２：話しかけられた時の返事を登録する。
前段で作成したRails アプリに適当にScaffoldで作成します。

rails g scaffold Post name:string

そこにガツガツメンヘラワードを放り込みます。
<img width="744" alt="スクリーンショット 2016-06-02 17.26.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/128165/b6931a67-b682-b75c-abe3-566ddd072602.png">

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

```ruby: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　特定の発話に対応する。
と言っても条件分岐でとりあえず作っただけです。ゴメンなさい。

```ruby: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を貼っておきますので、もしよろしければお試しくださいませ。どうぞよろしくお願い致します。

<img width="662" alt="スクリーンショット 2016-11-18 21.58.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/128165/20ccddd7-e470-069b-f611-e61e54f3d301.png">