LINE BOT을 단시간에 사용하는 방법

7049 단어 botLine
참고한 기사
Line Messaging API 앵무새 반환Bot(rails × heroku)
  • 앵무새를 돌려주는 BOT를 가장 빠르게 작성합시다!
  • 소요 시간 기준 30~60분

  • 환경 구축



    계정



    먼저 LINE 계정을 만드세요.
    아래를 참고로
    htps : //에서 ゔぇぺぺrs. 네. Me / Messagin g-Api / Getchin g-s r d

    LINE 자격 증명 정보



    계정 생성이 완료되면 다음에 액세스
    htps : // 부시넷 s. 네. 메/그럼/

    LINE developers의 Basic Information에는 다음이 포함되어 있습니다.
  • 채널 ID
  • Channel Secret
  • 채널 액세스 토큰

  • 상기를 삼가 해주십시오.

    에 6



    fixie 설치

    다음을 참고로
    LINE BOT을 일단 타다로 Heroku로 이동

    이쪽은 Heroku의 조작 커맨드도 정리해 게재되고 있습니다
    LINE BOT를 움직이는 환경을 조사해 보았다

    heroku 계정 생성 후 fixie 설치

    heroku addons:create fixie:tricycle

    계정 설정 확인
  • Proxy URL
  • Outbound IPs

  • 상기를 삼가 해주십시오.

    LINE developers에서 Server IP Whitelist 설정



    htps : // 부시넷 s. 네. 메/그럼/
    계정 목록에서 대상 계정의 LINE developers에 액세스하십시오.

    화면 왼쪽의 탭에서 Server IP Whitelist를 클릭합니다.
    위에서 삼킨 Outbound Ips를 IP address로 설정하십시오.
    (/이후에는 일단 신경 쓰지 말아 주세요)

    LINE developers에서 Webhook URL 설정



    LINE developers에서 Server IP Whitelist 설정과 마찬가지로 화면 왼쪽 탭의 Basic Information 클릭

    Webhook URL

    다음을 추가하십시오.
    https://{ご自身のherokuアプリ名}.herokuapp.com:443/callback

    Heroku 키 설정



    heroku에 환경 변수를 설정합니다.
    heroku config:add OUTBOUND_PROXY = '先ほどメモした設定値'
    heroku config:add CHANNEL_SECRET = '先ほどメモした設定値'
    heroku config:add CHANNEL_ACCESS_TOKEN = '先ほどメモした設定値'
    

    구현



    rails




    gem 'dotenv-rails'
    gem 'faraday'
    gem 'faraday_middleware'
    
    // heroku用
    group :production do
      gem 'rails_12factor'
    end
    

    위를 추가하십시오

    line_client


    lib/line_client.rb
    line_client.rb에는 주로 LINE의 회신 내용에 대한 구현이 있습니다.
    class LineClient
      END_POINT = "https://api.line.me"
    
      def initialize(channel_access_token, proxy = nil)
        @channel_access_token = channel_access_token
        @proxy = proxy
      end
    
      def post(path, data)
        client = Faraday.new(:url => END_POINT) do |conn|
          conn.request :json
          conn.response :json, :content_type => /\bjson$/
          conn.adapter Faraday.default_adapter
          conn.proxy @proxy
        end
    
        res = client.post do |request|
          request.url path
          request.headers = {
            'Content-type' => 'application/json',
            'Authorization' => "Bearer #{@channel_access_token}"
          }
          request.body = data
        end
        res
      end
    
      def reply(replyToken, text)
    
        messages = [
          {
            "type" => "text" ,
            "text" => text
          }
        ]
    
        body = {
          "replyToken" => replyToken ,
          "messages" => messages
        }
        post('/v2/bot/message/reply', body.to_json)
      end
    
    end
    

    위의 def reply(replyToken, text) 텍스트에 Bot에 입력했습니다.
    문자열 정보가 저장되어 있고 Json 형식으로 내용을 그대로 반환하는 구현입니다.

    컨트롤러


    webhook_controller.rb
    class WebhookController < ApplicationController
      // Lineからのcallbackか認証
      protect_from_forgery with: :null_session
    
      CHANNEL_SECRET = ENV['CHANNEL_SECRET']
      OUTBOUND_PROXY = ENV['OUTBOUND_PROXY']
      CHANNEL_ACCESS_TOKEN = ENV['CHANNEL_ACCESS_TOKEN']
    
      def callback
        unless is_validate_signature
          render :nothing => true, status: 470
        end
    
        event = params["events"][0]
        event_type = event["type"]
        replyToken = event["replyToken"]
    
        case event_type
        when "message"
          input_text = event["message"]["text"]
          output_text = input_text
        end
    
        client = LineClient.new(CHANNEL_ACCESS_TOKEN, OUTBOUND_PROXY)
        res = client.reply(replyToken, output_text)
    
        if res.status == 200
          logger.info({success: res})
        else
          logger.info({fail: res})
        end
    
        render :nothing => true, status: :ok
      end
    
      private
      # verify access from LINE
      def is_validate_signature
        signature = request.headers["X-LINE-Signature"]
        http_request_body = request.raw_post
        hash = OpenSSL::HMAC::digest(OpenSSL::Digest::SHA256.new, CHANNEL_SECRET, http_request_body)
        signature_answer = Base64.strict_encode64(hash)
        signature == signature_answer
      end
    end
    
    res = client.reply(replyToken, output_text, user)방금 만든 line_client.rb에 입력 값 output_text를 전달했습니다.

    루트 설정


    config/routes.rb
    Rails.application.routes.draw do
      post '/callback' => 'webhook#callback'
    end
    

    배포



    일단 Heroku의 커맨드에 대해서는 이하를 참고로
    Heroku 명령 및 설정 참고 참고
    git add .
    git commit -m "任意のコメント"
    git push heroku master
    

    시도해 보자.



    만든 LINE BOT을 친구 추가하고 테스트해 봅시다.

    잘 작동하지 않으면 heroku logs -t에서 오류 내용을 확인하십시오.

    마지막으로



    여기까지 끝나면 나중에
    htps : //에서 v cs. 네. 메 / 자 / # 우우 b 호오 ks
    위 참조를 참고로




    레퍼런스에는 상기의 실장 방법 등 상세하게 기재가 있으므로 여러가지 것을 시도해 봅시다

    저도 지난달 처음 LINE BOT 만들어 보았습니다만,
    상당한 시간을 환경 구축에 걸쳐 버렸습니다
    나처럼 시간을 보내지 않고 다행입니다.

    만들고 솔직히 매우 재미있었습니다.
    나는 구글 검색 엔진과 협력하여 Carousel에서
    표시 할 때까지 시도했습니다.
    아직 할 수있는 일이 많기 때문에 여러 가지 시도하고 싶습니다.

    google과의 제휴는 이쪽을 참고로

    좋은 웹페이지 즐겨찾기