前提
ruby on railsでLINE messageAPIを使い、「おうむ返しBot」を作ろうとしています。
ローカル環境で動かしたかったのでngrokを導入しています。
webhookURLの検証では成功が出ます。
ほぼサンプルコードのはずなのにうまく出来なくて…
初心者の質問ですみません…
実現したいこと
公式アカウントをフレンド登録しているユーザーがメッセージを送ると
同じ内容の返信が返ってくる
発生している問題・エラーメッセージ
POST /callback 403 Forbidden
該当のソースコード
ruby
1#config/routes.rb 2 3Rails.application.routes.draw do 4 post '/callback' => 'linebot#callback' 5end 6
シークレットとトークンは環境変数に記載しています
ruby
1#controllers/linebot_controller.rb 2 3class LinebotController < ApplicationController 4 require 'line/bot' 5 6 def client 7 @client ||= Line::Bot::Client.new { |config| 8 config.channel_secret = ENV["LINE_CHANNEL_SECRET"] 9 config.channel_token = ENV["LINE_CHANNEL_TOKEN"] 10 } 11 end 12 13 post '/callback' do 14 body = request.body.read 15 16 signature = request.env['HTTP_X_LINE_SIGNATURE'] 17 unless client.validate_signature(body, signature) 18 halt 400, {'Content-Type' => 'text/plain'}, 'Bad Request' 19 end 20 21 events = client.parse_events_from(body) 22 23 events.each do |event| 24 case event 25 when Line::Bot::Event::Message 26 case event.type 27 when Line::Bot::Event::MessageType::Text 28 message = { 29 type: 'text', 30 text: event.message['text'] 31 } 32 client.reply_message(event['replyToken'], message) 33 end 34 end 35 end 36 37 "OK" 38 end 39end
導入したgem
ruby
1gem 'line-bot-api'
試したこと
rails 6ではIPやloocalhost以外からのサーバーがブロックされるとの記事があり、
ruby
1#config/environments/development.rb 2 3Rails.application.configure do 4 config.hosts << '.ngrok.io' 5 : 省略 6end
を追加しましたが同じエラーが出ました。
補足情報(FW/ツールのバージョンなど)
(バージョン)
rails 6.0.0
ruby 2.6.5
あなたの回答
tips
プレビュー