LINEBOT API公開記念でただ同じ事を返すだけのボットを作ってみた。
アカウントや設定とかは、 https://developers.line.me から適当にやってください。
まず最初にハマるところは、Callback URLです。どうやらポート番号も必要なので、https://example.com:443/callback
などのように443を指定してください。
LINE_CHANNEL_ID, LINE_CHANNEL_SECRET, LINE_CHANNEL_MIDは適当な物を指定して下記を実行すると「オウム返しBot」の出来上がり。
APIを呼ぶにはWhitelistにIPを登録する必要があるので、Herokuなどで動かす事はできません。
【追記】 LINE BOT をとりあえずタダで Heroku で動かすを見ると、Fixieっていうアドオンを使えばHerokuでも行けるそうです。
CallbackやWhitelistは追加してから反映までちょっと時間が掛かるみたいです。
app.rb
require 'bundler/setup'
require 'sinatra'
require 'json'
require 'httpclient'
post '/linebot/callback' do
params = JSON.parse(request.body.read)
params['result'].each do |msg|
request_content = {
to: [msg['content']['from']],
toChannel: 1383378250, # Fixed value
eventType: "138311608800106203", # Fixed value
content: msg['content']
}
http_client = HTTPClient.new
endpoint_uri = 'https://trialbot-api.line.me/v1/events'
content_json = request_content.to_json
http_client.post_content(endpoint_uri, content_json,
'Content-Type' => 'application/json; charset=UTF-8',
'X-Line-ChannelID' => ENV["LINE_CHANNEL_ID"],
'X-Line-ChannelSecret' => ENV["LINE_CHANNEL_SECRET"],
'X-Line-Trusted-User-With-ACL' => ENV["LINE_CHANNEL_MID"]
)
end
"OK"
end
# Gemfile
source "https://rubygems.org"
# gem "rails"
gem 'sinatra'
gem 'httpclient'