herokuを使ってラインの無料ボットを作ったので作業をメモしておく
手順
- lineで公式アカウント作成
- チャンネルとトークン発行
- herokuのアカウント作成
- プロジェクト用ディレクトリの作成
- 作成したディレクトリに移動
- herokuにログイン
heroku login
- pythonの必要なライブラリをインストールする
pip install flask
pip install gunicorn
pip install line-bot-sdk
pip freeze > requirements.txt
- app.py, Procfileの作成
- app.pyには以下のように記述
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__)
YOUR_CHANNEL_ACCESS_TOKEN = "xxxxxxx"
YOUR_CHANNEL_SECRET = "xxxxxx"
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)
@app.route("/")
def hello_world():
return "hello world!"
@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"))
# app.run(host="0.0.0.0", port=port)
- Procfileには以下のように記述
web: gunicorn app:app
- git でherokuに送る
git add
git commit -m "first commit"
git push heroku master
- lineでweb hookの設定
- Messaging API →Webhook URL
- urlに「https://<あなたのアプリ名>.herokuapp.com/callback」
- 検証ボタン(ここで正しく表示されればok)
参考文献
- https://github.com/keras-team/keras-io
- https://yuki.world/heroku-h14-error/
- https://developers.line.biz/ja/docs/messaging-api/building-sample-bot-with-heroku/#deploy-the-echo-sample-bot