LINE WORKS Bot を使った一問一答形式の対話アプリ構築
この記事では、LINE WORKS Bot API を使用して、一問一答形式の対話アプリを構築する方法を解説します。Google Colab を活用して簡単にセットアップできる手順をご紹介します。
以下の URL で Google Colab を使って簡単に試せます。
Google Colab で試す
必要な準備
1. LINE WORKS Developer Console の設定
-
Bot ID の取得: Bot を作成し、
Bot ID
を取得します。 -
認証情報の確認:
Client ID
,Client Secret
,Bot Secret
を確認します。 -
Callback URL設定: スクリプト実行後に Bot の
Callback URL
を設定します。
2. Google Colab 環境の準備
- Google Colab のノートブックを開き、以下のスクリプトを実行します。
スクリプト
以下は、一問一答形式の対話アプリの構築に必要な Google Colab スクリプトです。各質問や認証情報は、パラメータとして指定可能です。
# 必要なライブラリのインストール(既にインストール済みならスキップされます)
!pip install requests flask
# Cloudflareトンネルツールをダウンロード、設定(既にダウンロード済みならスキップ)
!wget -N https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
!chmod +x cloudflared-linux-amd64
from flask import Flask, request, jsonify
import threading
import subprocess
import requests
import asyncio
# 認証情報の設定(Google Colab のパラメータ形式で入力)
ACCESS_TOKEN = "YOUR_ACCESS_TOKEN" # @param {type:"string"}
BOT_ID = 2000001 # @param {type:"integer"}
QUESTIONS = [
"質問1: 最初の質問内容はこちら", # @param {type:"string"}
"質問2: 次の質問内容はこちら", # @param {type:"string"}
"質問3: 三番目の質問内容はこちら", # @param {type:"string"}
"質問4: 四番目の質問内容はこちら", # @param {type:"string"}
"質問5: 最後の質問内容はこちら" # @param {type:"string"}
]
# ユーザーごとの進行状況と回答を管理
user_progress = {}
user_responses = {}
def get_next_question(user_id, user_response=None):
if user_response is not None:
user_responses.setdefault(user_id, []).append(user_response)
question_index = user_progress.get(user_id, 0)
if question_index < len(QUESTIONS):
next_question = QUESTIONS[question_index]
user_progress[user_id] = question_index + 1
return next_question
else:
responses = "
".join(f"回答{idx + 1}: {response}" for idx, response in enumerate(user_responses[user_id]))
user_progress.pop(user_id, None)
user_responses.pop(user_id, None)
return f"質問は全て終了しました!
あなたの回答:
{responses}"
def send_message(user_id, message):
url = f"https://www.worksapis.com/v1.0/bots/{BOT_ID}/users/{user_id}/messages"
headers = {"Authorization": f"Bearer {ACCESS_TOKEN}", "Content-Type": "application/json"}
body = {"content": {"type": "text", "text": message}}
requests.post(url, headers=headers, json=body)
async def handle_message(event):
user_id = event["source"]["userId"]
user_message = event["content"]["text"]
response_message = get_next_question(user_id, user_message)
if response_message:
send_message(user_id, response_message)
app = Flask(__name__)
@app.route('/callback', methods=['POST'])
def callback():
event = request.json
asyncio.run(handle_message(event))
return jsonify({'status': 'ok'}), 200
def run():
app.run(host='0.0.0.0', port=5000)
thread = threading.Thread(target=run)
thread.start()
!./cloudflared-linux-amd64 tunnel --url http://127.0.0.1:5000
実行結果
-
起動成功時:
Your quick Tunnel has been created! Visit it at: https://example-tunnel.trycloudflare.com/callback
-
Bot の動作例:
- ユーザーがメッセージを送信すると、質問が進行します。
- 質問がすべて完了すると、回答がまとめて返されます。
まとめ
このスクリプトを使用すれば、一問一答形式の対話アプリを簡単に構築できます。LINE WORKS Bot を活用して、カスタマイズ可能な質問フローを実現しましょう!