LINEサンプルボット(Python)をローカルで動かしてみた(2021年版)

2018年にはじめて、LINE Botを動かしてみました。

PythonでLINE Botを動かしてみた

それ以降できていなかったですが、もう一度、理解を深めたくなり、LINE Developersのサンプルボットを動かしてみました。公式サイトでは、Java言語でHerokuにデプロイする方法ですが、ここでは、Python言語の公式サンプルコードを、お手軽にローカルで動かします。

環境

  • OS:macOS Big Sur
  • 言語:Python3系(3.4以上推奨)
  • Python仮想環境: Pipenv
  • サーバー:ローカル(ローカル環境で実行しているアプリケーションを外部公開できるngrokを利用)

LINE Official Account Mangerでボット用のチャネルを作成する必要がありますが、詳細は下記参照ください。

参考 Messaging APIを始めようLINE Developers

インストール

ngrokインストール

ngrokとは、ローカル環境で実行しているアプリケーションを外部公開できるサービスです。LINE Messaging APIで使用するWebhook URLをローカルサーバーに指定して、ローカルで開発するのに便利です。

ユーザーがLINE上で、メッセージ送信したときに、LINEプラットフォームからWebhook URL(ボットサーバー)にHTTPS POSTリクエストが送信されますが、その先をローカルサーバーに指定し、ローカルのアプリケーションで処理を実行し、レスポンスを返します。

インストールは、以下コマンドです。

$ brew install ngrok

Pipenvインストール

Python仮想環境には、conda env、pyenv、venvなどありますが、ここではPipenvを利用します。Pipenvは、プロジェクト毎のパッケージ管理や仮想環境の構築を簡単に自動で行ってくれるツールです。

インストールは、以下コマンドです。

$ pip install pipenv

サンプルボットを動かす

プロジェクトフォルダを作成し、移動します(ここではデスクトップに作成します)。

$ cd ~/Desktop
$ mkdir line-bot
$ cd line-bot

公式のGitリポジトリを取得します(Gitコードをローカルにコピーします)。

$ git clone https://github.com/line/line-bot-sdk-python.git

プロジェクトフォルダ直下に、line-bot-sdk-pythonというフォルダができます。今回は、オウム返しのサンプルボットを動かすので、コードが格納されているフォルダに移動します。ここでは、動かすことが目的なので、コードは割愛します。

$ cd line-bot-sdk-python/examples/flask-echo

Pipenvを使ってPython仮想環境(Python3系)を作成します。

$ pipenv --python 3

自動でPython仮想環境が作成され、Pipfileというファイルができます。後は、公式のGetting startedを参考にコマンドを実行していきます。

requirements.txtからPythonパッケージをインストールします。

$ pipenv install -r requirements.txt

環境変数を設定します。

$ export LINE_CHANNEL_SECRET='YOUR_LINE_CHANNEL_SECRET'
$ export LINE_CHANNEL_ACCESS_TOKEN='YOUR_LINE_CHANNEL_ACCESS_TOKEN'

YOUR_LINE_CHANNEL_SECRETYOUR_LINE_CHANNEL_ACCESS_TOKENは、LINE Official Account Mangerで作成したチャネルに記載された「Channel secret」と「Channel access token」です。

毎回、確認してコマンドを実行するのが大変なので、.envファイルを作成して、pipenv runしたときに自動で環境変数を読み込むようにします。

LINE_CHANNEL_SECRET='YOUR_LINE_CHANNEL_SECRET'
LINE_CHANNEL_ACCESS_TOKEN='YOUR_LINE_CHANNEL_ACCESS_TOKEN'

アプリケーションを起動します。

$ pipenv run python app.py

別のターミナルから、同じローカルのポート番号でngrokを起動します。

$ ngrok http 8000

ngrokを起動すると、以下画面が表示されます。

上記の赤枠のURLを、下記の公式アカウントのWebhook URLに入力します(/callbackがないと、エラーになります)。

スマホからLINEで友達追加して、メッセージを送ると、オウム返しします。

さいごに

Webhook URLに/callbackを記入し忘れ、404エラーになりましたが、それ以外はスムーズにでき、1時間かからずできました。

これをベースに、Messaging APIのドキュメントを、試して理解を深めていきたいと思います。