Tengo una aplicación Python Flask que intenta usar IBM Watson Assistant. A continuación se muestra un fragmento de código que invoca la función API del mensaje. ¿Cómo imprimo la respuesta devuelta?

import json, _watson, requests, jsonify
import watson_developer_cloud
from flask import Flask, render_template
from flask_socketio import SocketIO, send


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


@socketio.on('message')
def handleMessage(msg):
    print("Message: "+msg)
    msg = _watson.conversacion(msg)
    send(msg, broadcast=False)

def conversacion(mensaje):
    response = assistant.message(workspace_id='1bef94fd-be51-4996-956c-73f9d0f08c41', input={'text': mensaje})
    mens = (json.dumps(response, indent=2))
    msj = json.loads(mens)
    # print(json.dumps(response, indent=2))
    print(msj["output"]["text"][0])  # mensaje de respuesta
    rewa = (msj["output"]["text"][0])
    return rewa


if __name__=='__main__':
    socketio.run(app)
-1
Jlcastr 16 oct. 2018 a las 07:27

2 respuestas

La mejor respuesta

Tu código no muestra cómo configuraste el Python SDK con las credenciales de IBM Watson Assistant. La función de mensaje con su entrada y salida está documentada aquí en la referencia de API. Si usa json.dumps en el objeto de mensaje devuelto, puede ver el estructura de resultado (respuesta).

La estructura del resultado depende de la versión de API que configura durante la inicialización del SDK (no se muestra en su código). Solo puede tener texto como una matriz o, con las últimas versiones de API, puede contener imágenes, opciones para elegir y más. Todo se devuelve en una estructura JSON bajo el elemento salida (que se muestra en su código).

1
data_henrik 16 oct. 2018 a las 07:09

Publique su respuesta devuelta en otra página

@app.route(/returned_answer/<mensaje>)
def conversacion(mensaje):
        response = assistant.message(workspace_id='1bef94fd-be51-4996-956c-73f9d0f08c41', input={'text': mensaje})
        mens = (json.dumps(response, indent=2))
        msj = json.loads(mens)
        # print(json.dumps(response, indent=2))
        print(msj["output"]["text"][0])  # mensaje de respuesta
        rewa = (msj["output"]["text"][0])
        return rewa

Asigne a sus mensajes de entrada una etiqueta de mensaje y, en su página de índice, escriba el código html para incrustar los mensajes de respuesta / devueltos en la página de índice

  <button onclick="window.location.href = ('/returned_answer/'+document.getElementById('message_id').value)  
1
Quantum Dreamer 10 jul. 2019 a las 19:40