ブログ

読んで思い出す。忘れるために書く

line-bot-sdk-ruby に公開されているサンプルコードを動かす (echobot)

line/line-bot-sdk-ruby に公開されている examples/echobot/app.rb を動かしてみた

前提・ゴール設定

  • 「とりあえず動かす」ことがゴール (サーバにデプロイせず、ローカル環境で動作検証する)
  • ngrok コマンドが使える
  • line/line-bot-sdk-rubyexamples/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 アプリで読み取り、会話が始められるようにする

メッセージを送る

なにか適当なメッセージを送る

f:id:innocent-zero:20190617135001j:plain
LINE bot にメッセージを送って応答してもらった様子

(画像のは返信処理に少し手を加えているので オウム返しする文字列が反転している)

Links