LINE BOT을 단시간에 사용하는 방법
Line Messaging API 앵무새 반환Bot(rails × heroku)
환경 구축
계정
먼저 LINE 계정을 만드세요.
아래를 참고로
htps : //에서 ゔぇぺぺrs. 네. Me / Messagin g-Api / Getchin g-s r d
LINE 자격 증명 정보
계정 생성이 완료되면 다음에 액세스
htps : // 부시넷 s. 네. 메/그럼/
LINE developers의 Basic Information에는 다음이 포함되어 있습니다.
상기를 삼가 해주십시오.
에 6
fixie 설치
다음을 참고로
LINE BOT을 일단 타다로 Heroku로 이동
이쪽은 Heroku의 조작 커맨드도 정리해 게재되고 있습니다
LINE BOT를 움직이는 환경을 조사해 보았다
heroku 계정 생성 후 fixie 설치
heroku addons:create fixie:tricycle
계정 설정 확인
상기를 삼가 해주십시오.
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과의 제휴는 이쪽을 참고로
Reference
이 문제에 관하여(LINE BOT을 단시간에 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/enzen/items/49bb2060cef08c481b9d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
gem 'dotenv-rails'
gem 'faraday'
gem 'faraday_middleware'
// heroku用
group :production do
gem 'rails_12factor'
end
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
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
Rails.application.routes.draw do
post '/callback' => 'webhook#callback'
end
git add .
git commit -m "任意のコメント"
git push heroku master
Reference
이 문제에 관하여(LINE BOT을 단시간에 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/enzen/items/49bb2060cef08c481b9d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)