line/line-bot-sdk-ruby に公開されている examples/echobot/app.rb を動かしてみた
前提・ゴール設定
- 「とりあえず動かす」ことがゴール (サーバにデプロイせず、ローカル環境で動作検証する)
- ngrok コマンドが使える
- line/line-bot-sdk-ruby の examples/echobot/app.rb が手元にある
app.rb
がどんな処理をするか大まかに把握している- Ruby 2.6.2 環境 (...で動作確認した)
準備
チャネル, bot の作成
Messaging APIを利用するには を読んで作る
LINE Messaging API SDK をインストールする
リポジトリ の README.md
に目を通す
dotenv gem を使う
dotenv gem をインストールする
そこで アプリの利用に必要な「Channel ID」や「Channel Secret」などを .env
ファイルに控えておく
app.rb
行頭付近に次のコードを追記して、dotenv で環境変数を読み込み・有効化する
require 'dotenv' Dotenv.load
(NOTE: git
で版管理、公開をしない場合、「.env
をコミットしない」とか そもそも dotenv を使わなくても問題ない)
署名検証をしない
設定した前提の通り「とりあえず動かす」のが目的なので、セキュリティはゆるくしてしまう
post '/callback' do body = request.body.read # -- コメントアウトする -- # signature = request.env['HTTP_X_LINE_SIGNATURE'] # unless client.validate_signature(body, signature) # error 400 do 'Bad Request' end # end
Sinatra と ngrok を動かす
# 特に指定しなければ Port 4567 で起動する
ruby app.rb
# Sinatra のポート番号に合わせて ngrok を起動する ngrok http 4567
ngrok
を起動すると xxxxxxxx.ngrok.io
といった URL が (時間制限付きで) 発行される
Webhook URL に値を設定する
開発者コンソールページで「Webhook URL」の設定があるので、先程 ngrok
に発行してもらった URL (https://xxxxxxxx.ngrok.io/callback
) を設定する
「Webhook送信」を有効化するのもわすれずに
メッセージを送ってみる
サーバ側のセットアップは済ませたので、今度はケータイ アプリ側からメッセージを送ってみる
QR コードを読み取る
開発者コンソールページで「LINEアプリへのQRコード」に表示されている QR コードをケータイの LINE アプリで読み取り、会話が始められるようにする
メッセージを送る
なにか適当なメッセージを送る
(画像のは返信処理に少し手を加えているので オウム返しする文字列が反転している)