とにかく今すぐ Heroku にデプロイしたい方はこちら。 (要 LINE BOT API のトライアルアカウント)
LINE BOT API の呼び出しには Server IP Whitelist に接続元 IP の指定が必要とのことで、Heroku だと難しいかなー、と思いましたがアドオンで解決できました。
これを使うと HTTP プロキシの URL が発行され、それを通してリクエストすればアウトバウンド IP を固定できるというものです。
無料プランもあるのでそれを使えばとりあえずタダで試せます。
(最初に Proximo という類似アドオンを試そうとしたけどそっちは無料プランなかったので無駄に $5 取られるっぽい。つらい)
$ heroku addons:create fixie:tricycle
これを実行するとアウトバウンド IP が出力されるので、それを LINE BOT API の Server IP Whitelist に登録します。
後から確認する場合は Heroku 上で作ったアプリの設定画面から Fixie の画面を開くと Account の画面で確認できます。
とりあえず試すコードとしては、@masuidrive さんのとりあえずLINE BOT APIでオウムを作ってみたをほぼ丸パクリして以下のようになりました。 (すいません)
# Mostly taken from http://qiita.com/masuidrive/items/1042d93740a7a72242a3
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
ソースはここに置いてます。 (masuidrive さんに怒られたら消す)
https://github.com/yuya-takeyama/line-echo
LINE_CHANNEL_ID の環境変数とかは適当に設定してください。
LINE developers のページで登録したら発行されるので。
そしてそのときに QR とかも出てくるのでそれを友達として登録して話しかけたら返ってきます (おしまい)