HerokuでLINE BOT(python)を動かしてみました。
公式で公開しているLINE BOTのサンプル(Flask Echo)をHerokuで動かしました。
https://github.com/line/line-bot-sdk-python
https://github.com/line/line-bot-sdk-python/tree/master/examples/flask-echo
LINE BOTを友だち登録してメッセージを送るとそのままメッセージが返ってくるサンプルです。
#環境
CentOS7.2
heroku-cli/6.15.17
git version 1.8.3.1
#前提
LINE@とHerokuのアカウントが必要です。
LINE@アカウントを作成。
https://at.line.me/jp/
ここから新規プロバイダー作成してチャンネル(Message API)を選択。
https://developers.line.me/console/
LINE Messaging APIのドキュメントです。
https://developers.line.me/ja/docs/messaging-api/overview/
Herokuアカウントを作成。
https://www.heroku.com/
デプロイするとここにアプリケーションが登録されます。
https://dashboard.heroku.com/apps
#Heroku CLI(旧heroku toolbalt)インストール
公式サイトの手順でインストールします。CentOSなのでStandaloneでインストールしました。
https://devcenter.heroku.com/articles/heroku-cli#standalone
$ wget https://cli-assets.heroku.com/heroku-cli/channels/stable/heroku-cli-linux-x64.tar.gz -O heroku.tar.gz
$ tar -xvzf heroku.tar.gz
$ mkdir -p /usr/local/lib /usr/local/bin
$ sudo mv heroku-cli-v* /usr/local/lib/heroku
$ sudo ln -s /usr/local/lib/heroku/bin/heroku /usr/local/bin/heroku
#実装
ここからサンプルコードをダウンロードしておきます。
https://github.com/line/line-bot-sdk-python
このようなディレクトリ構成になるように作成していきます。
heroku-line-bot
├── Procfile
├── main.py
└── requirements.txt
アプリケーションのディレクトリを作成する。
今回はアプリケーションの名前を「heroku-line-bot」として説明します。
$ mkdir heroku-line-bot
$ cd heroku-line-bot
作成したディレクトリに「Procfile」を作成します。
web: python main.py
ダウンロードしたサンプルコードの「app_with_handler.py」をコピーして「main.py」にファイル名を変更します。
https://github.com/line/line-bot-sdk-python/blob/master/examples/flask-echo/app_with_handler.py
末尾の「if __name__ == __main__":
」以下の行を次のように変更します。
if __name__ == "__main__":
arg_parser = ArgumentParser(
usage='Usage: python ' + __file__ + ' [--port <port>] [--help]'
)
arg_parser.add_argument('-p', '--port', default=8000, help='port')
arg_parser.add_argument('-d', '--debug', default=False, help='debug')
options = arg_parser.parse_args()
app.run(debug=options.debug, port=options.port)
if __name__ == "__main__":
port = int(os.getenv("PORT", 5000))
app.run(host="0.0.0.0", port=port)
「requirements.txt」を作成します。
line-bot-sdk
flask
作り終わったらコミットします。
$ git init
$ git add .
$ git commit -m "create new"
#デプロイ
Herokuに「heroku-line-bot」アプリケーションを作成します。
すでに同じ名前が使われていたら適当な名前に変更して下さい。
Channel基本設定の「Channel Secret」と「アクセストークン」をHerokuの環境変数に設定します。
https://developers.line.me/console/
Herokuにpushします。
$ heroku login
$ heroku create heroku-line-bot
$ heroku config:set LINE_CHANNEL_SECRET="<Channel Secret>"
$ heroku config:set LINE_CHANNEL_ACCESS_TOKEN="<アクセストークン>"
$ git push heroku master
#Webhook登録
Channel基本設定のWebhook URLにHerokuにデプロイしたアプリケーションのURL
「https://heroku-line-bot.herokuapp.com/callback
」を登録します。
※アプリケーションの名前を変更していたらURLも変わるので注意して下さい。
https://developers.line.me/console/
#動作確認
Channel基本設定のQRコードを読み込んで友だち登録したらメッセージを送ります。
送ったメッセージが返ってきたら成功です。
https://developers.line.me/console/
うまくいかなかったらログを確認してみましょう。
$ heroku logs --tail
Herokuのアプリケーションを削除するときは次のようにします。
$ heroku apps:destroy --app heroku-line-bot --confirm heroku-line-bot
#参考
以下のサイトを参考にさせていただきました。
LINE Messaging API + Python + Heroku でLINE Botを作る
http://cppx.hatenablog.com/entry/2017/10/31/165128