Rails에서 LINE Messaging API/앵무새 반환 Bot 만들기
11543 단어 LINEmessagingAPIlinebot루비Rails
소개
WEB API 공부에 사용한 LINE Messaging API 에 대해 정리를 위해 기술합니다.
다음과 같은 LINE Bot을 만들었습니다.
이번 여기에서는, 기능을 이해하기 위해 앵무새 반환을 하는 LINE Bot 작성을 해 갑니다.
환경
개발 환경
버전
루비
2.6.0
Ruby on Rails
5.1.7
Heroku
-
Messaging API를 사용하기 위한 준비
1. LINE Developers에 등록(기본 무료)
등록 방법은, 이쪽의 기사를 알기 쉽게 추천합니다.
→ LINE의 Bot 개발 초입문(전편)
2. Gemfile에 'line-bot-api' 작성
Gemfilegem 'line-bot-api'
$ bundle install
3. Heroku에 배포 확인
$ git init
$ git add -A
$ git commit -m "initial commit"
$ git push origin -u master
$ git push heroku
$ heroku open
작성한 URL에 액세스할 수 있으면 작성 테스트 완료입니다.
4. 구현
4-1. 컨트롤러 작성
$ rails generate controller Linebot
작성한 컨트롤러에 기술
linebot_controller.rbclass LinebotController < ApplicationController
require 'line/bot'
def callback
body = request.body.read
signature = request.env['HTTP_X_LINE_SIGNATURE']
unless client.validate_signature(body, signature)
error 400 do 'Bad Request' end
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
private
# LINE Developers登録完了後に作成される環境変数の認証
def client
@client ||= Line::Bot::Client.new { |config|
config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
}
end
end
callback내에 기술되어 있는events = client.parse_events_from(body)
에는 다음과 같은
JSON 객체가 들어 있습니다.
자세한 내용은 공식 API 참조
{
"replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
"type": "message",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U4af4980629..."
},
"message": {
"id": "325708",
"type": "text",
"text": "Hello, world!"
}
}
이 events
의 내용의 데이터를 근거로 하면,callback
내에서와 같은 처리가 행해지고 있는지 보여 옵니다.
# evnets内のtypeを識別していく。
events.each do |event|
case event
when Line::Bot::Event::Message
case event.type
# 今回はメッセージに対応する処理を行うため、type: "text"の場合処理をする。
# 例えば位置情報に対応する処理を行うためには、MessageType::Locationとなる。
when Line::Bot::Event::MessageType::Text
message = {
type: 'text',
text: event.message['text'] #送られた内容をそのまま返す
}
end
end
# 応答メッセージを送る
client.reply_message(event['replyToken'], message)
end
4-2. routes에 기술
routes.rbRails.application.routes.draw do
post '/callback' => 'linebot#callback'
end
4-3. 지금까지의 변경을 Heroku에 배포
$ git add -A
$ git commit -m "add to linebot_text"
$ git push
$ git push heroku
4-4. Messaging API 콘솔에서 Webhook URL 등록
routes에서도 기술한 바와 같이 サーバーアプリのURL/callback
를 입력해 등록한다.
그리고는, 실제로 앵무새 반환이 되어 있는지 확인해 봅시다!
요약
개인적으로 WEB API를 사용한 것은 처음으로, 빠지는 부분도 있었습니다.
다만, API를 조합하면 유효한 서비스를 할 수 있다는 실감을 얻을 수 있었습니다.
Reference
이 문제에 관하여(Rails에서 LINE Messaging API/앵무새 반환 Bot 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takashico/items/edb6050a8e54dd137148
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
개발 환경
버전
루비
2.6.0
Ruby on Rails
5.1.7
Heroku
-
Messaging API를 사용하기 위한 준비
1. LINE Developers에 등록(기본 무료)
등록 방법은, 이쪽의 기사를 알기 쉽게 추천합니다.
→ LINE의 Bot 개발 초입문(전편)
2. Gemfile에 'line-bot-api' 작성
Gemfilegem 'line-bot-api'
$ bundle install
3. Heroku에 배포 확인
$ git init
$ git add -A
$ git commit -m "initial commit"
$ git push origin -u master
$ git push heroku
$ heroku open
작성한 URL에 액세스할 수 있으면 작성 테스트 완료입니다.
4. 구현
4-1. 컨트롤러 작성
$ rails generate controller Linebot
작성한 컨트롤러에 기술
linebot_controller.rbclass LinebotController < ApplicationController
require 'line/bot'
def callback
body = request.body.read
signature = request.env['HTTP_X_LINE_SIGNATURE']
unless client.validate_signature(body, signature)
error 400 do 'Bad Request' end
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
private
# LINE Developers登録完了後に作成される環境変数の認証
def client
@client ||= Line::Bot::Client.new { |config|
config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
}
end
end
callback내에 기술되어 있는events = client.parse_events_from(body)
에는 다음과 같은
JSON 객체가 들어 있습니다.
자세한 내용은 공식 API 참조
{
"replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
"type": "message",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U4af4980629..."
},
"message": {
"id": "325708",
"type": "text",
"text": "Hello, world!"
}
}
이 events
의 내용의 데이터를 근거로 하면,callback
내에서와 같은 처리가 행해지고 있는지 보여 옵니다.
# evnets内のtypeを識別していく。
events.each do |event|
case event
when Line::Bot::Event::Message
case event.type
# 今回はメッセージに対応する処理を行うため、type: "text"の場合処理をする。
# 例えば位置情報に対応する処理を行うためには、MessageType::Locationとなる。
when Line::Bot::Event::MessageType::Text
message = {
type: 'text',
text: event.message['text'] #送られた内容をそのまま返す
}
end
end
# 応答メッセージを送る
client.reply_message(event['replyToken'], message)
end
4-2. routes에 기술
routes.rbRails.application.routes.draw do
post '/callback' => 'linebot#callback'
end
4-3. 지금까지의 변경을 Heroku에 배포
$ git add -A
$ git commit -m "add to linebot_text"
$ git push
$ git push heroku
4-4. Messaging API 콘솔에서 Webhook URL 등록
routes에서도 기술한 바와 같이 サーバーアプリのURL/callback
를 입력해 등록한다.
그리고는, 실제로 앵무새 반환이 되어 있는지 확인해 봅시다!
요약
개인적으로 WEB API를 사용한 것은 처음으로, 빠지는 부분도 있었습니다.
다만, API를 조합하면 유효한 서비스를 할 수 있다는 실감을 얻을 수 있었습니다.
Reference
이 문제에 관하여(Rails에서 LINE Messaging API/앵무새 반환 Bot 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takashico/items/edb6050a8e54dd137148
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
gem 'line-bot-api'
$ bundle install
$ git init
$ git add -A
$ git commit -m "initial commit"
$ git push origin -u master
$ git push heroku
$ heroku open
4-1. 컨트롤러 작성
$ rails generate controller Linebot
작성한 컨트롤러에 기술
linebot_controller.rb
class LinebotController < ApplicationController
require 'line/bot'
def callback
body = request.body.read
signature = request.env['HTTP_X_LINE_SIGNATURE']
unless client.validate_signature(body, signature)
error 400 do 'Bad Request' end
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
private
# LINE Developers登録完了後に作成される環境変数の認証
def client
@client ||= Line::Bot::Client.new { |config|
config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
}
end
end
callback내에 기술되어 있는
events = client.parse_events_from(body)
에는 다음과 같은JSON 객체가 들어 있습니다.
자세한 내용은 공식 API 참조
{
"replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
"type": "message",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U4af4980629..."
},
"message": {
"id": "325708",
"type": "text",
"text": "Hello, world!"
}
}
이
events
의 내용의 데이터를 근거로 하면,callback
내에서와 같은 처리가 행해지고 있는지 보여 옵니다.# evnets内のtypeを識別していく。
events.each do |event|
case event
when Line::Bot::Event::Message
case event.type
# 今回はメッセージに対応する処理を行うため、type: "text"の場合処理をする。
# 例えば位置情報に対応する処理を行うためには、MessageType::Locationとなる。
when Line::Bot::Event::MessageType::Text
message = {
type: 'text',
text: event.message['text'] #送られた内容をそのまま返す
}
end
end
# 応答メッセージを送る
client.reply_message(event['replyToken'], message)
end
4-2. routes에 기술
routes.rb
Rails.application.routes.draw do
post '/callback' => 'linebot#callback'
end
4-3. 지금까지의 변경을 Heroku에 배포
$ git add -A
$ git commit -m "add to linebot_text"
$ git push
$ git push heroku
4-4. Messaging API 콘솔에서 Webhook URL 등록
routes에서도 기술한 바와 같이
サーバーアプリのURL/callback
를 입력해 등록한다.그리고는, 실제로 앵무새 반환이 되어 있는지 확인해 봅시다!
요약
개인적으로 WEB API를 사용한 것은 처음으로, 빠지는 부분도 있었습니다.
다만, API를 조합하면 유효한 서비스를 할 수 있다는 실감을 얻을 수 있었습니다.
Reference
이 문제에 관하여(Rails에서 LINE Messaging API/앵무새 반환 Bot 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takashico/items/edb6050a8e54dd137148
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Rails에서 LINE Messaging API/앵무새 반환 Bot 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takashico/items/edb6050a8e54dd137148텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)