LoginSignup
10
14

More than 5 years have passed since last update.

LINEBOT + RailsでWikipediabotを作ってみました。

Last updated at Posted at 2019-04-10

はじめに

Railsの勉強のためにLINEBOTを作ってみました。
内容はLineメッセージに調べたい単語を送信すれば、Wikipediaの概要とurlを返すものです。

LineBotの設定

下記のリンクを参考に設定しました。ありがとうございます。

今更ながらRails5+line-bot-sdk-ruby+HerokuでLineBot作成してみたら、色々詰まったのでまとめました。

Wikipediaの情報取得

Wikipediaの情報を取得するためにGemがあったので、そちらを利用しました。
wikipedia-client

Gemgile
gem 'wikipedia-client'
$ bundle install

Controllerを編集

linebot_controller.rb
class LinebotController < ApplicationController
  require 'line/bot'
  require 'wikipedia'

  # callbackアクションのCSRFトークン認証を無効
  protect_from_forgery :except => [:callback]

  def client
    @client ||= Line::Bot::Client.new { |config|
      config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
      config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
    }
  end

  def callback
    body = request.body.read

    signature = request.env['HTTP_X_LINE_SIGNATURE']
    unless client.validate_signature(body, signature)
      head :bad_request
    end

    events = client.parse_events_from(body)

    events.each { |event|
      if event.message['text'] != nil
        # LINEで送られてきた文書を取得
        word = event.message['text']
        # 日本語版Wikipediaを設定
        Wikipedia.Configure {
          domain 'ja.wikipedia.org'
          path   'w/api.php'
        }
      end

      # wikipediaから情報取得
      page = Wikipedia.find(word)

      # 概要とURLを返す
      response = page.summary + "\n" + page.fullurl

      case event
      # メッセージが送信された場合
      when Line::Bot::Event::Message
        case event.type
        # メッセージが送られて来た場合
        when Line::Bot::Event::MessageType::Text
          message = {
            type: 'text',
            text: response
          }
          client.reply_message(event['replyToken'], message)
        end
      end
    }

    head :ok
  end
end

あとはherokuにデブロイして、動作確認すれば完成です。

動作イメージ

こんな感じで概要とURLを返してくれるようになります。
2019-04-11 0.53のイメージ.jpg

まとめ

簡単なまとめになりましたが以上になります。
結構簡単に実装できました。APIと組み合わせれば色々使えるんじゃないかなと思いました。
何かご指摘等がございましたらコメントよろしくお願いします。

参考サイト

今更ながらRails5+line-bot-sdk-ruby+HerokuでLineBot作成してみたら、色々詰まったのでまとめました。

Web APIとは? (LINE bot API・グルナビAPI)

wikipedia-client

10
14
0

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
10
14