gNNuarmczPNBuIu
@gNNuarmczPNBuIu

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

LINEbotが機能しない

解決したいこと

RailsでLINE Messaging APIを使って、オウム返しBotを作成できない。

発生している問題・エラー

RailsでLINE Messaging APIを使って、オウム返しBotを作成しています。
Bot用channelを作成し、デプロイしたアドレスの末尾に
/callbackをつけたURLをWebhookに設定しました。
コードは以下のように書きました。

Gemfile
gem 'line-bot-api'
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)
      head :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']
          }
        end
      end
      client.reply_message(event['replyToken'], message)
    end
    head :ok
  end
end
routes.rb
post '/callback' => 'linebot#callback'

しかし、LINE Developer内のWebhookURLを検証してみると、

エラー
ボットサーバーから200以外のHTTPステータスコードが返されました。(302 Found)
LINEプラットフォームから送信されたHTTP POSTリクエストに対してボットサーバーがステータスコード200を返すことを確認してください。
詳しくは、Messaging APIリファレンスのレスポンスを参照してください。

と表示されます。もちろんLINEbotもオウム返しがされない状態です。

自分で試したこと

原因がわかりません。
envファイルの値も何度も確認したのですが、正しいです。

0

1Answer

callbackスクリプトを置いたWEBサーバーのアクセスログを見れば何かわかるんじゃないでしょうか?

0Like

Comments

  1. 原因が判明しました。
    app/controllers/application_controller.rbにて

    before_action :authenticate_user!

    と記載していたためです。
    linebot_controller.rbにて

    class LinebotController < ApplicationController
    skip_before_action :authenticate_user!
    end

    上記のように変更したら、成功しました。

Your answer might help someone💌