10
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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作成してみたら、色々詰まったのでまとめました。][1]
[1]:https://qiita.com/y428_b/items/d2b1a376f5900aea30dc

Wikipediaの情報取得

Wikipediaの情報を取得するためにGemがあったので、そちらを利用しました。 [wikipedia-client][1] [1]:https://github.com/kenpratt/wikipedia-client
Gemgile
gem 'wikipedia-client'
$ bundle install

Controllerを編集

```ruby: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にデブロイして、動作確認すれば完成です。

<h1>動作イメージ</h1>
こんな感じで概要とURLを返してくれるようになります。
![2019-04-11 0.53のイメージ.jpg](https://qiita-image-store.s3.amazonaws.com/0/330080/e5ecb9ad-e9e6-c387-580a-43bce2ce68b2.jpeg)

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

<h1>参考サイト</h1>
[今更ながらRails5+line-bot-sdk-ruby+HerokuでLineBot作成してみたら、色々詰まったのでまとめました。][1]
[1]:https://qiita.com/y428_b/items/d2b1a376f5900aea30dc
[Web APIとは? (LINE bot API・グルナビAPI)][1]
[1]:https://qiita.com/NoharaMasato/items/6fb1ac277c965905e019
[wikipedia-client][1]
[1]:https://github.com/kenpratt/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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?