herokuとflaskを使ってラインbot初期設定メモ

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
タイトルとURLをコピーしました