知人がLINE Botを開発しているので便乗して勉強し始めた.備忘録的なもの.
とりあえず,最初に最も簡単なオウム返しのBotを作成する.
作成に当たり,Qiitaのこちらの記事をとても参考にさせていただいた.ここに謝意を示す.
開発環境
- OS: Windows 10 64bit
- 言語: Python 3.8.0
- IDE: PyCharm
- Paas: Heroku
行ったこと
- LINE Developersのアカウントの作成
- Pythonのセットアップ
- 送信したメッセージと同一のメッセージを返すbotをPythonで実装
- Herokuアカウントの作成とデプロイ
LINE Developersのアカウント作成
公式サイトから登録する.基本的には参考サイトの通りに登録する.
注意点としては,botのあいさつメッセージと応答メッセージを切り,Webhookはオンにする必要がある.
Pythonのセットアップ
Pythonのインストールはここでは割愛.
用いるパッケージは以下の二つ
Flask==1.1.1
line-bot-sdk==1.14.0
pipを用いるときは,
$ pip3 install flask
$ pip3 install line-bot-sdk
で,
PyCharmを用いるときはここを参照.
Pythonを用いて実装
サンプルコードがGitHubにあるが,少々いじる(コードはここと同じ)
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
import os
app = Flask(__name__)
#環境変数取得
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)
@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
# handle webhook 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__":
# app.run()
port = int(os.getenv("PORT", 5000))
app.run(host="0.0.0.0", port=port)
Herokuアカウントの作成とデプロイ
公式サイトからアカウントを作成する.指示に従うのみなので大丈夫.
コマンドライン上でHerokuを動かすため,ここからHeroku CLIをダウンロードする.
コマンドプロンプトを起動し,Herokuを起動する.
$ heroku login
これで,ブラウザが立ち上がりログインできる.
次に,アプリを作成する.
$ heroku create <アプリの名前>
続いて,環境変数の設定(各変数はLINE Developersから見ることが可能)
$ heroku config:set YOUR_CHANNEL_SECRET="Channel Secretの欄の文字列" --app <アプリの名前>
$ heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="アクセストークンの欄の文字列" --app <アプリの名前>
設定ファイルを作成.
python-3.8.0
を【runtime.txt】に書いて保存
Flask==1.1.1
line-bot-sdk==1.14.0
を【requirements.txt】に書いて保存
web: python main.py
を【Procfile】に書いて保存
次に,Herokuにデプロイ
$ git init
$ git add .
$ git commit -m "new commit"
$ git push heroku master
最後に,Webhookの設定をここから行う.Webhook送信を【利用する】にする.
Webhook URLは【https://<アプリの名前>.herokuapp.com/callback】にする.
設定の画面にQRコードがあるのでbotを友達に追加し,メッセージを送ってみる.
送ったメッセージと同じメッセージが来たらOK!