Pythonを使ったlinebotの作り方(オウム返し)
Table of Contents
ぜひ読んでほしい方
・pythonを使ったlinebotの作り方の基本を学びたい方
・herokuのアカウントを持っている方(持っていないかたは、先にお作り下さい。)
https://devcenter.heroku.com/articles/heroku-cli#download-and-install
line botの大まかな仕組み
line botの大まかな仕組みは、以下の図の通りです。
このページでの大まかな流れとしては、はじめに「heroku」にあたる部分を作り、次に「MessagingAPI」、その次にそれらを紐づけ、最後に「python」のプログラムを作るといった、4段階で解説していきます。
herokuにアプリケーションを作成
まず、herokuにログインします。
1 |
heroku login --interactive |
次に、herokuに新規アプリケーションを作成します。
1 |
heroku create 任意のアプリケーション名 |
Messaging API 登録
https://developers.line.me/console/のサイトからMessagingAPIのアカウントを作成し、アプリを作成するためのチャネルを登録します。
Messaging APIとherokuをつなげる
Messaging API でチャネルを登録したら、MessagingAPIとherokuを結びつける作業をします。
チャネルを登録したら、それぞれ[チャネル基本設定]と[Messaging API]から、チャネルシークレットとチャネルアクセストークンを取得します。
これらを、以下のコマンドを実行し、herokuに登録します。
1 2 |
heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="アクセストークンの欄の文字列" --app アプリケーション名 heroku config:set YOUR_CHANNEL_SECRET="Channel Secretの欄の文字列" --app アプリケーション名 |
上記コードの「アプリケーション名」には、herokuにアプリケーションを作成したときに決めたアプリケーション名と同じものを使います。
pythonコードを作成・herokuへデプロイ
いよいよ、pythonコード作成になります。
オウム返しのlinebotを作るには、メインのpythonコードファイル「main.py」の他に、設定のためのコードが3つ必要であり、全部で4つファイルを作成する必要があります。
「main.py」のコードは以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
from flask import Flask, request, abort import os from linebot import ( LineBotApi, WebhookHandler ) from linebot.exceptions import ( InvalidSignatureError ) from linebot.models import ( MessageEvent, TextMessage, TextSendMessage, ) app = Flask(__name__) line_bot_api = LineBotApi("MessagingAPIのチャネルアクセストークン") handler = WebhookHandler("MessagingAPIのチャネルシークレット") @app.route("/callback", methods=['POST']) def callback(): signature = request.headers['X-Line-Signature'] body = request.get_data(as_text=True) app.logger.info("Request body: " + body) try: handler.handle(body, signature) except InvalidSignatureError: abort(400) return 'OK' @handler.add(MessageEvent, message=TextMessage) def handle_message(event): line_bot_api.reply_message( event.reply_token, TextSendMessage(text=event.message.text)) #ここでオウム返しのメッセージを返します。 if __name__ == "__main__": port = int(os.getenv("PORT", 5000)) app.run(host="0.0.0.0", port=port) |
続いて「runtime.txt」のコードは以下の通り(1行だけです)。「runtime.txt」にはpythonのバージョンを記載します。
1 |
python-3.9.1#ご自分のバージョンに合わせて変えて下さい。 |
「requirements.txt」のコードは以下の通り。「requirements.txt」にはherokuでインストールするモジュールをバージョンとともに記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
astroid==2.4.2 beautifulsoup4==4.9.3 certifi==2020.12.5 chardet==4.0.0 chromedriver-binary==89.0.4389.23.0 click==8.0.1 colorama==0.4.4 cycler==0.10.0 et-xmlfile==1.0.1 Flask==2.0.1 future==0.18.2 graphviz==0.16 idna==2.10 isort==5.7.0 itsdangerous==2.0.1 jdcal==1.4.1 Jinja2==3.0.1 kiwisolver==1.3.1 lazy-object-proxy==1.4.3 line-bot-sdk==1.19.0 lxml==4.6.2 MarkupSafe==2.0.1 matplotlib==3.3.4 mccabe==0.6.1 numpy==1.20.1 opencv-python==4.5.1.48 openpyxl==3.0.6 Pillow==8.1.0 pylint==2.6.0 pyparsing==2.4.7 python-dateutil==2.8.1 regex==2021.4.4 requests==2.25.1 six==1.15.0 soupsieve==2.1 toml==0.10.2 urljoin==1.0.0 urllib3==1.26.2 Werkzeug==2.0.1 wrapt==1.12.1 |
最後に「Procfile」のコードは以下の通り。プログラムの実行を定義するためのファイルです。なお、珍しいと思いますが拡張子はありません。
1 |
web: python main.py |
ここまでで、一通りプログラムファイルは完成しました。ここからは、今作成したプログラムファイルをherokuへデプロイしていきます。この記事の初めに挙げた図のうち、「python」と「heroku」をつなげる作業に当たります。
herokuにデプロイするには、以下のコマンドを実行します。
1 2 3 4 5 |
cd ファイルがあるディレクトリ git init git add . git commit -m "make it better" git push heroku master |
これでファイルのデプロイが完了し、botが完成しました。あとは、 https://developers.line.me/console/ のサイトから、linebotをQRコードで友達追加して、動くかどうか遊んでみてください。
“Pythonを使ったlinebotの作り方(オウム返し)” に対して1件のコメントがあります。
コメントは受け付けていません。