Edited at

LINE BOTを試してみる(Cloud9 + Heroku)

More than 3 years have passed since last update.


開発環境

アカウントがない人は登録しておこう!(みんな無料だよ)

ただし今回使う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がエントリポイントになるので、その中に手っ取り早くコードを書きましょう。


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



Gemfile

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ライフを!!!