我最近为聊天机器人开发了一个Python API,并使用快速python脚本进行了演示:
s = request.Session()
user_response = None
while True:
chat_response = s.get(url='http://localhost:5000/chat', json={'user_input': user_response}).json()
if chat_response['is_end']:
break
if 'text' in response_json:
print '\t' + response_json['text']
user_response = raw_input()
当调用聊天路线时,我设置了一个唯一的会话密钥
if 'session_id' not in session:
session['session_id'] = chat_utils.id_generator()
这在命令行上运行良好,会话ID用于跟踪服务器上的会话。但是我试图在JavaScript前端实现这一点。是否有相当于
的行s = request.Session()
目前我无法存储会话信息,因此使用不同的生成密钥重复初始问题(见下文)。
这是使用BotUI
生成的使用以下代码调用API:
function chat(){
botui.action.text({
delay: 1000,
action: {
placeholder: 'User response here'
}
}).then(function (res) {
sendxhr(res, textResponse)
});
}
function sendxhr(user_input, formatter){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://localhost:5000/chat');
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("user_input", user_input);
xhr.onload = function () {
var res = JSON.parse(xhr.responseText)
console.log(res)
formatter(res.text)
}
xhr.send();
}
API调用有效,但每次聊天路由开始新会话时都没有会话。
答案 0 :(得分:0)
解决这个问题的方法是提供html。而不是在本地打开html我添加了一个服务静态html的路由。
@app.route("/")
def index():
return render_template('index.html')
javascript被加载到html中,一切运行良好。