【Ruby on Rails 備忘録】LINE Messaging API でチャットボットを作る
公開日:
:
LINE, Ruby on Rails LINE Messaging API, Ruby on Rails, チャットボット, 備忘録
毎回悩むので自分用の備忘録として保存します。
なお、ほとんどが、こちらの方の記事を参考にしました。
というか、丸写しに近いです。
ありがとうございました。
gemをインストール
Gemfile
1 |
gem 'line-bot-api' |
ターミナルで
bundle install
を忘れずに。
line_clientクラス作成
>lib > line_client.rb
コードはこちらを丸写し
http://qiita.com/YoheiMiyamoto/items/f6851cdb40891edf0e57
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
class LineClient END_POINT = "https://api.line.me" def initialize(channel_access_token, proxy = nil) @channel_access_token = channel_access_token @proxy = proxy end def post(path, data) client = Faraday.new(:url => END_POINT) do |conn| conn.request :json conn.response :json, :content_type => /\bjson$/ conn.adapter Faraday.default_adapter conn.proxy @proxy end res = client.post do |request| request.url path request.headers = { 'Content-type' => 'application/json', 'Authorization' => "Bearer #{@channel_access_token}" } request.body = data end res end def reply(replyToken, text) messages = [ { "type" => "text" , "text" => text } ] body = { "replyToken" => replyToken , "messages" => messages } post('/v2/bot/message/reply', body.to_json) end end |
config > environment.rb
require ‘line_client’
を追加
1 2 3 4 5 6 7 8 |
# Load the Rails application. require File.expand_path('../application', __FILE__) # line_clientを追加 require 'line_client' # Initialize the Rails application. Rails.application.initialize! |
コントローラー作成
app > controllers > webhook_controller.rb
コードはこちらのを僕なりに修正
http://qiita.com/YoheiMiyamoto/items/f6851cdb40891edf0e57
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
class WebhookController < ApplicationController protect_from_forgery :except => [:callback] require 'line/bot' require 'net/http' def client client = Line::Bot::Client.new { |config| config.channel_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXX' config.channel_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' } end def callback body = request.body.read signature = request.env['HTTP_X_LINE_SIGNATURE'] event = params["events"][0] event_type = event["type"] #送られたテキストメッセージをinput_textに取得 input_text = event["message"]["text"] events = client.parse_events_from(body) events.each { |event| case event when Line::Bot::Event::Message case event.type #テキストメッセージが送られた場合、そのままおうむ返しする when Line::Bot::Event::MessageType::Text message = { type: 'text', text: input_text } #画像が送られた場合、適当な画像を送り返す #画像を返すには、画像が保存されたURLを指定する。 #なお、おうむ返しするには、1度AWSなど外部に保存する必要がある。ここでは割愛する when Line::Bot::Event::MessageType::Image image_url = "https://XXXXXXXXXX/XXX.jpg" #httpsであること message = { type: "image", originalContentUrl: image_url, previewImageUrl: image_url } end #event.type #メッセージを返す client.reply_message(event['replyToken'],message) end #event } #events.each end #def end |
なお、テキストを2つ返したい場合は、
1 2 3 4 |
message = [ {type: 'text',text: "復唱するよ。"}, {type: 'text',text: input_text} ] |
ルーティング設定
config > routes.rb
post ‘/callback’ => ‘webhook#callback’
を追加
LINE Developper
Webhook URLの設定を忘れずに
あとは、コントローラーにコードを追加して、自分の思い通りのボットを作りましょう!
ad
- Tweet
-
-
この記事が気に入りましたら、ぜひTwitter、facebookボタンをお願いします。
ブログを書くモチベーションになります。よろしくお願いします。
ビットコイン投げ銭ウィジェット
関連記事
-
-
【Ruby on Rails 備忘録】JSON形式のデータから情報を取得する方法
JSON形式のデータから情報を取得する時、 いつも忘れるので、備忘録 飲食店の検索サービスから
-
-
LINEのチャットボットを作ってみた(PHP + docomo雑談対話API)
これからはボットの時代だなんて、最近よく聞きます。 いつかは自分でも作ってみたいと思って
-
-
LINEボット「有名人GO」
LINEボット 「有名人GO」 某N社のポ●モンGOにインスパイアされて作りました。
-
-
【Ruby on Rails 備忘録】 WEBサービスを作ろうと思った時、最初にすること
いつも忘れるので、 自分用備忘録として残します。 私のやり方なので、あくまでもご参考にし
-
-
選択するのが面倒な現代人へ 〜僕のチャットボットとアプリを紹介
消費者は買い物をするとき、選ぶのが面倒だと感じている。 大量の品揃えが良いなんて、