前提・実現したいこと
ここに質問の内容を詳しく書いてください。
プログラミング初心者です
pythonとscxmlファイルを使い状態遷移型のチャットボットを作成しています。
webアプリにするためにflaskを使い、WEB上に上げたいのですがどこにどう記述すればいいのか全くわかりません。
flaskは一通りは勉強しました。
わかりにくい質問で申し訳ございません。
アドバイスをお願い致します。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
# coding:utf-8 import sys from PySide2 import QtCore, QtScxml import re from flask import Flask, request, render_template # Webサーバインスタンスの生成 # Qtに関するおまじない app = QtCore.QCoreApplication() el = QtCore.QEventLoop() # SCXMLファイルの読み込み sm = QtScxml.QScxmlStateMachine.fromFile('chat.scxml') # 初期状態に遷移 sm.start() el.processEvents() # システムプロンプト print("SYS> 対話を開始") uttdic = {"start":"こんにちは", "ask_name":"お名前をどうぞ", "ask_rename":"{}ですね。", "ask_task":"要件をどうぞ", "ask_retask":"要件は{}ですね。承知しました。"} # 初期状態の取得 current_state = sm.activeStateNames()[0] print("current_state=", current_state) # 初期状態に紐づいたシステム発話の取得と出力 sysutt = uttdic[current_state] print("SYS>", sysutt) # ユーザ入力の処理 while True: text = input("> ") # ユーザ入力を用いて状態遷 if current_state == "start": if re.match(r"こんにちは",text): sm.submitEvent("aisatu") el.processEvents() aisatu = text elif current_state == "ask_name": if re.match(r".*です。", text): sm.submitEvent("name") el.processEvents() text2 = text[:-2] name = text2 elif current_state == "ask_rename": if re.match(r"はい", text): sm.submitEvent("task") el.processEvents() task = text elif current_state == "ask_task": if re.match(r".*", text): sm.submitEvent("retask") el.processEvents() retask = text elif current_state == "ask_retask": if re.match(r"ok", text): sm.submitEvent("task") el.processEvents() # 遷移先の状態を取得 current_state = sm.activeStateNames()[0] print("current_state=", current_state) sysutt = uttdic[current_state] print("SYS>", sysutt.format(text)) if current_state == "ask_retask": break
<?xml version="1.0" encoding="UTF-8"?> <scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="start"> <state id="start"> <transition event="aisatu" target="ask_name"/> </state> <state id="ask_name"> <transition event="name" target="ask_rename"/> </state> <state id="ask_rename"> <transition event="task" target="ask_task"/> </state> <state id="ask_task"> <transition event="retask" target="ask_retask"/> </state> <final id="ask_retask"/> </scxml>
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。