質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

3136閲覧

python flask チャットボットの実装

makoto71012

総合スコア1

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/06/08 14:42

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
プログラミング初心者です
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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FiroProchainezo

2020/06/09 00:24

どの辺にFlaskを使っているんですか? コード上では未使用なように見えます。
guest

回答1

0

直観ですが(エラーメッセージがわからないのですみません)

chat.scxmlが読み込めてないのでは?
試しにfromFileにフルパスを指定して実行してみてください。

または、存在しないファイル名をfromFileに指定して同じエラーが出れば、chat.scxmlが読み込めてないのだと思います。

投稿2020/08/20 14:50

編集2020/08/20 14:52
UNISIA-SE

総合スコア54

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問