超簡単にLINEボットをつくろう!(Python, flask, Vercel)
はじめに
誰でも、簡単にLINEボットをつくれる方法を紹介したいと思います。普段は、Next.jsで開発をしているのですが、Pythonを用いて、簡単にLINEボットをつくれる方法を紹介したいと思います。
今回は、オウム返しをゴールに進めていきます。
事前準備
作成するにあたって、以下の事前準備を行わないといけません。すでに出来ている人は、先に進んでください。
- Cusorのインストール(VScodeやほかのコードエディターでも可)
- Python環境構築
- Githubアカウントの作成
- Vercelアカウントの作成
- gitインストール
- LINE公式アカウントの作成
Cursorのインストール
-
以下のページで、Cursorをダウンロードする。
https://cursor.sh/ -
ダウンロードが完了したら、ダウンロードしたファイルをダブルクリックし、初期設定を行う。
以下のページを参考にしてください。
Pythonの環境構築
-
以下のページで、Pythonをダウンロードする。
https://www.python.org/downloads/ -
ダウンコートが完了したら、ダウンロードしたファイルをダブルクリックし、下記にチェックを入れて、インストールする。
・「Use admin privileges when installing py.exe」
・「Add python.exe to PATH」 -
インストールが、終わったら、「close」ボタンを押す。
-
確認のために、コマンドプロンプトを開き以下のコマンドを実行
python --version
バージョンが表示されたら、インストール成功。
以下のページを参考にしてください。
Githubアカウントの作成
- 以下のページでGithubアカウントを作成する。
https://github.com/
Vercelアカウントの作成
- 以下のページでVercelアカウントを作成する。アカウント作成は、先ほど作ったGithubのユーザー認証を用いてください。
https://vercel.com/
gitインストール
- 以下のページからgitをインストールする。
以下のページを参考にしてください。
LINE公式アカウントの作成
以下のページから公式アカウントを作成してください。
オウム返しBOTの動作
サーバー用のコードを作成
サーバーで動作するコードは、以下の通りです。flaskを使って実装しました。
flaskとは?
flaskとは、簡単なwebアプリケーションを作ることができるpythonのライブラリです。
フォルダ構成
my-bot/
├ api/
│ └ index.py
├ vercel.json
└ requirements.txt
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
LINE_ACCESS_TOKEN = "YOUR_LINE_ACCESS_TOKEN"
LINE_API_URL = "https://api.line.me/v2/bot/message/reply"
@app.route("/")
def hello():
return "<h1>Hellow world!</h1>"
def reply_message(reply_token, text):
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {LINE_ACCESS_TOKEN}"
}
data = {
"replyToken": reply_token,
"messages": [{"type": "text", "text": text}]
}
requests.post(LINE_API_URL, headers=headers, json=data)
@app.route("/webhook", methods=["POST"])
def webhook():
body = request.json
if "events" in body:
for event in body["events"]:
if event["type"] == "message" and event["message"]["type"] == "text":
reply_message(event["replyToken"], event["message"]["text"])
return jsonify({"status": "ok"}), 200
if __name__ == "__main__":
app.run()
YOUR_LINE_ACCESS_TOKENのところは、https://developers.line.biz/ja/, で先ほど作った公式アカウントのものを入れてください。
{
"rewrites": [
{ "source": "/(.*)", "destination": "/api/index" }
]
}
flask
requests
コードをコピペ出来たら、「Source」から、「Publish to Github」で、Githubにリポジトリを作ります。
「ok」を押して、3つのファイルをリポジトリに追加しましょう。
https://vercel.com/, にアクセスし、「Add New」からprojectを選択します。
先ほど作った、my-botを選びます。
何もいじらずに、「Deploy」しましょう
成功したら、このような表示になります。「Continue to Dashboard」でダッシュボードに移動します。
ダッシュボード上の「Domains」を次のLINEの設定で使うので、メモしておきましょう。
https://developers.line.biz/ja/, 上で先ほど作ったwebアプリのurlを設定します。
「Messaging API」タブに移動して、
「Use webhook」にチェックをいれ、Webhook URLには、以下のURLを入力しましょう。
メモしたドメインを使い、https://{メモしたドメイン}/webhook, というurlを設定してください
「Messaging API」チャネルがないという方は、https://manager.line.biz/, で「設定」から「Messaging API」を有効にしましょう。
詳しくは、以下のページを参考にしてください。
実際の動作
終わりに
いかがだったでしょうか?
簡単と銘打ったものの、環境構築から始めた人にとっては、難しかったと思います。
また、内容が理解できないまま、完成してしまうので、達成感を味わいずらいかなと思います。オウム返しから、特定の単語のみに反応するBOTにしたり、常に同じ言葉を返すBOT、計算をしてくれるBOTなど、アレンジをしていくうちに、理解してもらえたらなと思います。
コードに変更を加えた後、変更を適用する場合には、githubにpushしなければいけません。
以下のページを参考に、gitの使い方を学びましょう。
VScodeとCursorは兄弟みたいなものなので、使えるようになると思います。
Discussion