0
2

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 3 years have passed since last update.

AWS Cloud9で初めてのLINEbot作成(Rails+Herokuデプロイ)

Last updated at Posted at 2020-10-12

#はじめに
 Railsチュートリアルを終わったばかりのペーペーが、まず作ってみようと思ったのがLINEbot。文字をそのまま返す「くり返しBot」を今まで学習したモノを使って理解度を深めようというのが今回の目的。なので、あえてGASなど便利なものを使わずに「Rails+Cloud9+Heroku」で開発します。
##目次

  • LINE Developersアカウント&新規チャネル作成
  • Herokuアカウントを作成
  • cloud9上にRailsアプリ作成
  • バージョン管理(Herokuデプロイ)
  • Bot用にコード編集
  • LINEで動作確認

#LINE Developersアカウント&新規チャネル作成
 まずはLINE Developersにログインします。(https://developers.line.biz/ja/)
 初めての方は、普段使っているLINEアカウントで簡単に登録できます。プロバイダー情報を登録し、新規チャネルを作成します。
 詳しくはこちらの記事を参照ください。(https://qiita.com/nkjm/items/38808bbc97d6927837cd)
#Herokuアカウントを作成
 すでにHerokuのアカウントを作成済であれば、ここは飛ばして次の工程へ進んでください。
 Herokuを開いたら、新規登録のボタンをクリックしてアカウントを作成します。
https://jp.heroku.com/)
 後からでもできますが、ここでCloud9上でHerokuを使えるように設定しましょう。以下のコードを一つずつ順番にターミネルに打ち込むだけです。

terminal
curl -OL https://cli-assets.heroku.com/heroku-linux-x64.tar.gz
tar zxf heroku-linux-x64.tar.gz && rm -f heroku-linux-x64.tar.gz
sudo mv heroku /usr/local
echo 'PATH=/usr/local/heroku/bin:$PATH' >> $HOME/.bash_profile
source $HOME/.bash_profile > /dev/null

 無事ログインできればOKです。これで自身の開発環境でHerokuが使えるようになりました。
 
#cloud9上にRailsでアプリ作成
 Railsを学んだ方はおなじみの「Rails new」でサクッとアプリを作りましょう。

terminal
rails new repeat-bot

 次にGemfileを少し編集します。

Gemfile
gem 'line-bot-api'
group :development do
  gem 'sqlite3'←ここが新しく追加された部分
  # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
group :production do
 gem 'pg'
end
end

新しく追加したGemをインストールしましょう。

terminal
bundle install --without production

#バージョン管理(Herokuデプロイ)
 ここまで進んだところで一度Gitでバージョン管理しておきましょう。

terminal
git init

 続いて、herokuのappとこのRails上のappを結び付けましょう。

terminal
heroku git:remote -a herokuのapp名

先ほどHerokuのapp名を登録したのであれば、その名を。特に変更していない場合は自動で英数字の羅列がふられているのでそれを打ち込んでください。(Herokuのページより確認)

そして先ほど登録したHerokuにデプロイします。

terminal
git add .
git commit -m "init"

最後にpushして終了です。

terminal
git push heroku master

#Bot用にコード編集
 くり返しBot用にコードを付け加えていきます。まずはRailsでおなじみコントローラーの作成です。

terminal
rails g controller linebot

つぎに、今回作成したLINEbotの管理画面から、チャンネルシークレットとアクセストークンをコピーしてターミネルに貼り付けます。
以下のように記入してください。

terminal
heroku config:set LINE_CHANNEL_SECRET=あなたのchannel secret
heroku config:set LINE_CHANNEL_TOKEN=あなたのchannel token

くり返し返答させるように、コードを編集します。
コピペして貼り付けてください。

routes.rb
Rails.application.routes.draw do
  post '/callback' => 'linebot#callback'
end
linebot_controller.rb
class LinebotController < ApplicationController
  require 'line/bot' 

  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)
      error 400 do 'Bad Request' end
    end

    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: event.message['text']
          }
          client.reply_message(event['replyToken'], message)
        end
      end
    }

    head :ok
  end
end

最後にもう一度デプロイしておきましょう。

terminal
git add .
git commit -m "add linebot_controller"
git push heroku master

そしてLINEbot管理画面から、Webhook URLを[https://herokuのapp名.herokuapp.com/callback]
で入力すれば完成です。

#LINEで動作確認
 最後に実際にLINEで文字を入力して正しく返答されるのか見てみましょう。

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?