[Rails] LINE MessagingAPI를 사용하여 echo (앵무새 반환) Bot을 만듭니다.

 개요



웹 API를 학습하기 위해 LINE Bot 개발을 수행했습니다.
이번에는 간단한 보낸 텍스트를 그대로 반환하는 echoBot을 만듭니다.
Rails에서 개발하여 Heroku에 배포할 수 있습니다.

환경



· Ruby 2.6.5
· Rails 6.0.3.2
· PostgreSQL
・Heroku

목차



· LINE Developers로 채널 만들기
・Bot 본체의 프로그램을 작성(Ruby/Rails)
· Heroku에 배포

LINE Developers로 채널 만들기



우선 LINE 개발자 등록을 실시합니다. 그런 다음 공급자와 채널을 만들어 필요한 API 키를 가져옵니다.
ぇぺぺrs. 네. 비 · 그럼 / 드 cs / 메사 긴 g 아피 / 곁 친 g - r d /

공식(위)을 참고로 Bot용 channel을 작성합니다.
쉽게 작업을 글머리 기호로하면,

· LINE Developers 콘솔에 로그인
· 이름과 이메일 주소를 입력하여 개발자 계정 만들기
· 프로바이더, 채널을 작성, 이 때 MessagingAPI를 지정
· 액세스 토큰 발급
· 응답 메시지 끄기 Webhock을 켜기로 설정하십시오.

Channel secret과 Channel access token이 Bot 개발에 필요하므로 여기에서 메모해 둡니다!

Bot 본체의 프로그램 작성(Ruby/Rails)



Heroku에 배포하기 때문에 DB는 PostgreSQL을 사용합니다.
$ rails new アプリ名 -d postgresql
$ cd アプリ名
$ git init

필요한 gem 설치



line-bot-api라는 gem을 사용합니다.

Gemfile
gem 'line-bot-api'
$ bundule install

구현



1. 라우팅 설정



config/routes.rb

Rails.application.routes.draw do  
    post '/callback' => 'linebot#callback'  
end

2. 컨트롤러 작성


$ rails g controller linebot

3. 컨트롤러에의 기술



콘트롤러에의 기술은 라인 공식 SDK의 RUBY를 참고로(코피페) 했습니다.
htps : // 기주 b. 이 m/ぃね/ぃねーぼ tsdk-by/bぉb/마s r/에ぁmpぇs/에쵸보 t/아 p. rb
class LinebotController < ApplicationController
 require 'line/bot'  # gem 'line-bot-api'

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

post '/callback' do
  body = request.body.read

  signature = request.env['HTTP_X_LINE_SIGNATURE']
  unless client.validate_signature(body, signature)
    halt 400, {'Content-Type' => 'text/plain'}, '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
  end

  "OK"
 end
end

Heroku에 배포



먼저 Heroku에 로그인하고 Heroku에 앱을 만들고 배포합니다.

Heroku 측에 환경 변수를 설정합니다.


$ heroku config:set LINE_CHANNEL_SECRET=ここに先程メモしたChannel Secretを貼り付ける
$ heroku config:set LINE_CHANNEL_TOKEN=ここに先程メモしたアクセストークンを貼り付ける

LINE developers로 Webhook settings 설정하기



배포 된 주소 끝에/callback이있는 URL을 Webhook으로 설정합니다.


이것으로 echo-bot의 완성입니다. 텍스트를 보내면 같은 텍스트를 반환합니다.

 정리



현재는 코드 변경 후 배포하지 않으면 반영되지 않으므로,
다음 번에는 ngrok을 사용하여 로컬 환경에서 이동하는 방법을 수행합니다.
htps : // 이 m / 시즈 9d / ms / 42b2cb209b2 23 a 9a f6d

참고문헌



이하의 기사를 참고로 했습니다.
htps : // 이 m / 풀이나 1217 / ms / 00d6461 9f54900377 A3

좋은 웹페이지 즐겨찾기