RubyでLINE Botを動かすための方法です
環境, ライブラリ
- Windows10
- Visual Studio Code
- Ruby(3.1.1)
- Sinatra
- Heroku
- LINE Message API
ファイル構成
- Gemfile
- Gemfile.lock
- Procfile
- app.rb
- config.ru
前提
Ruby、Gitのインストールが完了していることが前提です。
[手順1] ボット用のチャネルを作成する
LINE Developersコンソールでボット用のチャネルを作成します。
1. LINE Developersコンソールにログインする
LINE Developersサイト の右上の[ログイン]をクリックします。
次の画面で、[LINEアカウントでログイン]または[ビジネスアカウントでログイン]をクリックします。
LINE Developersコンソールに初めてログインしたときは、名前とメールアドレスを入力して開発者アカウントを作成します。
2. 新規プロバイダーを作成する
[新規プロバイダー作成]画面で任意の[プロバイダー名]を入力し、[作成]をクリックします。
自分の名前や企業名で大丈夫です。
3. チャネルを作成する
作成したプロバイダーページで、[チャネル設定]タブの[Message API]をクリックします.
チャネルに必要な情報を入力していきます。「LINE」またはそれに類する文字列をチャネル名に含めることはできません。
最後にチャネルが作成されたことを確認して、アカウントの作成は終了です。
[手順2] Herokuアカウントを作成する
Herokuアカウント を作成します(作成は無料です)。
次に、Herokuをインストール します。
[手順3] ファイルを作成する
※手順3はVScode上で操作しています。
ファイル構成は次のとおりです。
- Gemfile
- Gemfile.lock
- Procfile
- app.rb
- config.ru
これらのファイルを入れておく適当なフォルダを用意してください。
Gemfile
source "https://rubygems.org"
gem "sinatra"
gem 'puma'
次にGemfile.lockを作ります。中身は空で大丈夫です。
ファイルを作成したら、$ bundle install
でインストールします。(ターミナル上)
Procfile
web: bundle exec rackup config.ru -p $PORT
config.ru
require './app.rb'
run Sinatra::Application
app.rb
require 'bundler/setup'
require 'sinatra'
get '/' do
'hello world!'
end
ここまでできたらデプロイしていきます。
この先はターミナル上に入力します。
Herokuにログインするために、$ heroku login
を入力します。
上の画像のように出たら、指示通りキーを押します。ブラウザでHerokuが開き、ログイン画面になるのでログインします。
再びターミナル上に戻ってきて次を入力します。{HEROKU_APP_NAME}
は好きなアプリ名を入力します。このアプリ名はどこかにメモしておきます。
$ heroku create {HEROKU_APP_NAME}
$ git init
$ heroku git:remote -a {HEROKU_APP_NAME}
$ git add .
$ git commit -m "first commit"
$ git push heroku master
$ heroku open
デプロイでエラーが出なければ、https://アプリ名.herokuapp.com/
にアクセスしたときに「hello world!」と出ています。(heroku open
でこのURLがブラウザで開きます)
[手順4] サンプルボットを動かしてみる
LINE BotのLINE Message API SDK for Ruby のechoボット のサンプルコードをコピーします。
コピーしたものをapp.rbの下に貼り付けます。貼り付けて整えたコードがこちらです。
require 'bundler/setup'
require 'sinatra'
require 'line/bot'
get '/' do
'hello world!'
end
def client
@client ||= Line::Bot::Client.new { |config|
config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
}
end
post '/callback' do
body = request.body.read
signature = request.env['HTTP_X_LINE_SIGNATURE']
unless client.validate_signature(body, signature)
halt 400, {'Content-Type' => 'text/plain'}, 'Bad Request'
end
events = client.parse_events_from(body)
events.each do |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
end
"OK"
end
Gemfileにgem 'line-bot-api'
を加えます。
LINE Developersコンソール
LINE Developersコーンソールのチャネルページの[チャネル基本設定]のチャネルシークレットと[Message API設定]のチャネルアクセストークンを確認します。チャネルアクセストークンがない場合は[発行]をクリックします。
[Message API設定]のWebhook設定にhttps://{HEROKU_APP_NAME}.herokuapp.com/callback
を入力し(アプリ名はHerokuで作ったアプリ名)、[有効]にします。応答メッセージとあいさつメッセージは[無効]にしておきます。
Heroku
ブラウザでHerokuのダッシュボードを開いて、先ほど作ったHerokuのアプリをクリックします。
[setting] => Config Varsの[Reveal Config Vars]をクリックします。
- [KEY]にapp.rbの
LINE_CHANNEL_SECRET
を、[VALUE]にチャネルシークレットを入力します - [KEY]にapp.rbの
LINE_CHANNEL_TOKEN
を、[VALUE]にチャネルアクセストークンを入力します
ターミナルに戻り、Herokuにプッシュします。
$ git add .
$ git commit -m "Update"
$ git push heroku master
LINE DevelopersコンソールのMessage API設定のWebhookの[検証]をクリックして成功すれば、LINEチャンネルのQRコードをLINEアプリの友だち追加で読み取って友だち追加します。
実際に動かしてみます。
LINE画面
オウム返しするLINE Botです。
このあとは、サンプルコードを変えて自分の好きなLINE Botにしていきます!
うまく動作しない場合
LINE Botがうまく動かない場合は、$ heroku logs --tail --app {HEROKU_APP_NAME}
でHerokuのログを確認します。
参考サイト