LineBotの作成(途中)

RailsAPIとして利用しLINEチャネルと通信させる

class LineBotController < ApplicationController

  protect_from_forgery except: [:callback]

  def callback
    body = request.body.read

    signature = request.env['HTTP_X_LINE_SIGNATURE']
     unless client.validate_signature(body, signature)
       return 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']
          }
          client.reply_message(event['replyToken'], message)
        end
      end
      head :ok
     end
  end

  private
 
     def client
       @client ||= Line::Bot::Client.new { |config|
         config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
         config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
       }
     end

     def search_and_create_message()
      http_client = HTTPClient.new
     end
end

Line::Bot::ClientはLINEが用意してくれているクラス。つまり、Line::Bot::Client.newでLine::Bot::Clientクラスに書かれたメソッドを持つオブジェクトが生成できる。

LINEアカウントで作成したbotのチャンネルシークレットとチャンネルトークンを環境変数に入れて、インスタンスを生成する。