Help us understand the problem. What is going on with this article?

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

akabei
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした