開発環境
- Line Bot設定はhttps://developers.line.me からどうぞ!
- Cloud9 https://c9.io/
- Heroku https://www.heroku.com/
アカウントがない人は登録しておこう!(みんな無料だよ)
ただし今回使うHerokuのFIXIEアドオンのインストールはクレジットカードの登録が必要になります。(無料でも必要なんです)
抵抗がない方はアカウント情報から登録しておきましょう。
手順
Cloud9でrailsプロジェクトを作成する
プロジェクト作成はCloud9のページから。
プロジェクトが作成できたら
ここからはCloud9のターミナル上での作業です。
rm -rf /home/ubuntu/workspace/*
railsとかは使わないので、workspace内のフォルダは全て削除しておく
そしてGemをきれいにしよう
# 必要なものだけ残す
gem uninstall -axI $(gem list --no-versions | egrep -v "bigdecimal|io-console|json|psych|rake|rdoc")
# 確認
gem list
# bundler! bundler!
gem install bundler
プログラムの作成
@yuya_takeyama さんのRubyプログラムを参考にしました。
(プログラムが最新版になられてたので、一つ前のプログラムを紹介しています)
LINE BOT をとりあえずタダで Heroku で動かす
最新版は上記をご参照ください。
Heroku(Ruby,Railsプロジェクト)でデプロイすれば、Rakeの仕様で
config.ruがエントリポイントになるので、その中に手っ取り早くコードを書きましょう。
require 'bundler/setup'
require 'sinatra/base'
require 'json'
require 'rest-client'
class App < Sinatra::Base
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']
}
endpoint_uri = 'https://trialbot-api.line.me/v1/events'
content_json = request_content.to_json
RestClient.proxy = ENV["FIXIE_URL"]
RestClient.post(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
end
run App
source 'https://rubygems.org'
gem 'sinatra'
gem 'json'
gem 'rest-client'
bundle install
問題なくインストールできるはずです。
安定した土台があるのはクラウドサービスのいいとこですね。
Windowsで環境構築してるときは色々エラーで泣いてました。
Gitの準備
HerokuへデプロイするためにGitプロジェクトにします。
git init
HerokuとFIXIEの準備
heroku login # 登録メールアドレスとパスワードを入力するよ
heroku create # app名を指定しなければ適当なapp名になります
heroku addons:create fixie:tricycle # FIXIEインスコ
これでherokuからFIXIEのプロキシ経由でリクエストできます。
FIXIEのアウトバウンドIPやプロキシURLの情報は
Herokuのダッシュボード → 作成したプロジェクト → Resourcesの
Add-onsにFixieのリンクがあるので、そこをクリックすれば
FIXIEのログとアカウント情報が見れます。
LINE BOTに必要な情報を調べておく
Channel ID
Channel Secret
MID
の値ははこの後利用します。
ついでにCallback URLを設定します
前の手順のLINE Developersの画像からはみ出てますが、下のほうでCallback URLを指定できます。
Callback URL指定する値を調べます。
Herokuのダッシュボード → 作成したプロジェクト → Settings
でHerokuプロジェクトのURLがわかります。
このURLをhttpsプロトコルにしてポート番号をつけます。(そうでないとだめらしいです)
https://xxxxxxxxx.herokuapp.com:443/linebot/callback
にしてCallback URLとして指定してあげます。
ついでにServer IP Whitelistを設定しておきます
設定するIPはFixieのアウトバウンドIPです。
アウトバウンドIPは二つあったので、両方指定しておきます。
Heroku ENVの設定
前手順にあったLINE BOT APIの情報
Channel ID
Channel Secret
MID
とFIXIEのアカウント情報にあったPROXY URLを
下記のように設定してあげます。
このENVはRubyプログラムから参照します。
heroku config:add LINE_CHANNEL_ID="xxxxxx"
heroku config:add LINE_CHANNEL_SECRET="xxxxxx"
heroku config:add LINE_CHANNEL_MID="xxxxxx"
heroku config:add FIXIE_URL="http://xxxxxx"
Herokuへデプロイ
準備は整ったので最後にHerokuへデプロイします
git add .
git commit -m 'deploy!! heroku!'
git push heroku master
あとはLINEから確認しましょう
@yuya_takeyama さんの記事のように、タダでLINE BOTの構築が行えました。
プログラムはすでに上がっている記事を参考にするとして、
今回は手順にフォーカスをあてた記事になりました。
それではよいBOTライフを!!!