Hi
I am trying to create a simple GUI using the flask framework. I am using rasa_sdk and using my custom actions in it. Everything works fine from command line with my new stories.md and nlu.md. Now, I want to replace that command line with a simple GUI to mimic a chat application. I have read blogs and of course the RASA community, but, I am not able to do it.
Below are the commands I am using to train and test the model.
python -m rasa_nlu.train -c nlu_config.yml --data data/nlu_new.md -o models --fixed_model_name nlu --project rasbot --verbose
python -m rasa_core.train -d domain.yml -s data/stories_new.md --nlu_threshold 0.5 --core_threshold 0.4 --fallback_action_name action_not_defined -o models/rasbot/dialogue --epochs 200
python -m rasa_core_sdk.endpoint --actions actions&
and
python -m rasa_core.run -d models/rasbot/dialogue -u models/rasbot/nlu --port 5002 --credentials credentials.yml as suggested here
In my project folder I have a sub-folder named “gui”, which has main.py in it and another sub-folder named templates. Below is how my main.py looks:
from flask import Flask, render_template, request, jsonify
import requests
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'vnkdjnfjknfl1232#'
socketio = SocketIO(app)
@app.route('/', methods = ['GET'])
def loadPage():
return render_template("session.html")
@app.route('/chat',methods = ['POST', 'GET'])
def session():
try:
msg = request.form['user_input']
print(type(msg))
response = requests.post('http://localhost:5002/parse', params={'q':msg})
response = response.json()
entities = response.get("entities")
topresponse = response["topScoringIntent"]
intent = topresponse.get("intent")
print("Intent {}, Entities {}".format(intent,entities))
if intent == 'greet':
return jsonify({"status":"success","response":"YAYYYYYYYYYYYYYY!"})
except Exception as e:
print(e)
return jsonify({"status":"success","response":"Sorry no matching intent..."})
if __name__ == '__main__':
app.run(debug=True)
My request/response sequence is as follows: I build both rasa nlu and rasa core before following the below steps.
-
I run “python main.py” which starts the server and @localhost:5000 I can see my xyz.html page loaded.
-
Then, I try to make a post request using the above code from **“main.py(pasted above)”**to localhost:5002 where my rasa core server is running by entering “Hi bot” and submit from my html page. I get the following error: .
My questions are:
- Is it the right way to do, to connect GUI to rasa sdk?
- Am I forming the URL the right way?
- What should be the requests form (post or get) to chat with the bot?
- Is it the right way to send a message “Hi” from GUI which first goes to localhost:5000 and from there I make a GET/POST request to localhost:5002 to rasa core server?
Thanks