Edited at

HerokuでLINE BOT(python)を動かしてみた

More than 1 year has passed since last update.

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を友だち登録してメッセージを送るとそのままメッセージが返ってくるサンプルです。

b.png


環境

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」を作成します。


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__":」以下の行を次のように変更します。


app_with_handler.py(抜粋)

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)



main.py(抜粋)

if __name__ == "__main__":

port = int(os.getenv("PORT", 5000))
app.run(host="0.0.0.0", port=port)

「requirements.txt」を作成します。


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