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

  • 61
    いいね
  • 5
    コメント

開発環境

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

ただし今回使うHerokuのFIXIEアドオンのインストールはクレジットカードの登録が必要になります。(無料でも必要なんです)
抵抗がない方はアカウント情報から登録しておきましょう。

手順

Cloud9でrailsプロジェクトを作成する

プロジェクト作成はCloud9のページから。

image_03.png

プロジェクトが作成できたら
ここからはCloud9のターミナル上での作業です。

image_02.png

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のログとアカウント情報が見れます。

アカウント情報
image_01.png

LINE BOTに必要な情報を調べておく

image_05.png

Channel ID
Channel Secret
MID
の値ははこの後利用します。

ついでにCallback URLを設定します

前の手順のLINE Developersの画像からはみ出てますが、下のほうでCallback URLを指定できます。

Callback URL指定する値を調べます。

image_06.png

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