Edited at

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

More than 1 year has passed since last update.


環境構築

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

・ 環境構築:

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