Python request.Session()的替代JavaScript

时间:2018-01-08 14:12:13

标签: javascript session

我最近为聊天机器人开发了一个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()

目前我无法存储会话信息,因此使用不同的生成密钥重复初始问题(见下文)。

enter image description here

这是使用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调用有效,但每次聊天路由开始新会话时都没有会话。

1 个答案:

答案 0 :(得分:0)

解决这个问题的方法是提供html。而不是在本地打开html我添加了一个服务静态html的路由。

@app.route("/")
def index():
    return render_template('index.html')

javascript被加载到html中,一切运行良好。