LoginSignup
67
65

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-01-20

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

67
65
0

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
67
65