LoginSignup
57
55

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-04-08

開発環境

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

ただし今回使う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ライフを!!!

57
55
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
55