Error de conexión con RASA POST webhook API en React web UI

Este es un código del servidor de react para conectar la API RASA webhook. Estoy recibiendo estatus como 0. pero en el marco de RASA trabajando correctamente y enviando respuestas para esta solicitud. el problema es que no puedo buscar la respuesta de repetición de la llamada API.

importa React, { Componente } de 'react '

export const rasaAPI = async function RASA(name, dialogue) {
    // POST request using fetch with error handling

    await fetch('http://192.168.8.100:5005/webhooks/rest/webhook', {
        method: 'POST',
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json',
          'charset':'UTF-8'
        },
        body: JSON.stringify({ "sender": name, "message": dialogue }),
    })
    .then(function(response) {
        if(response.ok) {
          return response.blob();
      }
      throw new Error(response.status);
     })
     .then(response => response.json())
     .then(result => {
       console.log('Success:', result);
     })
     .catch(error => {
       console.error('Error:', error);
     });

}

Este es el error de consola de la solicitud API.

This is the console error of the API request.

Pregunta hecha hace 3 años, 5 meses, 0 días - Por bytebuster


3 Respuestas:

  • Respuesta correcta:

    React app: importa React, { Componente } de 'react '

        export const rasaAPI = async function RASA(name, dialogue) {
            // POST request using fetch with error handling
            await fetch('/webhook', {
              method: 'POST',
              headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
                'charset':'UTF-8',
              },
              credentials: "same-origin",
              body: JSON.stringify({ "sender": name, "message": dialogue }),
          }).then(response => {
            return response.json();
          }).then(massage => {
            console.log(massage);
          });
        
        }
    

    ADD Url en paquete.json archivo.

    ADD Url into package.json file.

    Respondida el Dec 17, 2020 a las 06:41 - por quantumquill

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás viendo en la consola es debido a que estás tratando de leer el cuerpo de la respuesta dos veces en tu función RASA. Cuando realizas return response.blob() estás consumiendo la respuesta como un blob y por lo tanto, ya no puedes volver a leerla en response.json() posteriormente.

    Para resolver esto, puedes convertir la respuesta a JSON directamente en el primer then, eliminando el segundo then que intenta convertir la respuesta a JSON nuevamente.

    Aquí te dejo el código corregido:

    javascript
    export const rasaAPI = async function RASA(name, dialogue) {
        // POST request using fetch with error handling
    
        await fetch('http://192.168.8.100:5005/webhooks/rest/webhook', {
            method: 'POST',
            headers: {
              'Accept': 'application/json',
              'Content-Type': 'application/json',
            },
            body: JSON.stringify({ "sender": name, "message": dialogue }),
        })
        .then(function(response) {
            if(response.ok) {
              return response.json(); // Convertir la respuesta a JSON aquí
            } else {
              throw new Error(response.status);
            }
         })
         .then(result => {
           console.log('Success:', result);
         })
         .catch(error => {
           console.error('Error:', error);
         });
    }
    

    Con este cambio, la respuesta se convertirá a JSON en el primer then y luego podrás trabajar con esa respuesta en el siguiente then. Espero que esto resuelva tu problema. Si sigues teniendo dificultades, por favor házmelo saber.

    Respondida el Dec 18, 2020 a las 06:37 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Causas posibles y soluciones para el error de conexión con la API de webhook de RASA:

    1. Problemas de red: Asegúrate de que tu aplicación React y el servidor de RASA estén conectados a la misma red y que el puerto 5005 esté abierto en el firewall.

    2. Incompatibilidad de versiones: Verifica que las versiones de React y RASA sean compatibles. Es posible que necesites actualizar una o ambas.

    3. Cuerpo de solicitud incorrecto: Confirma que el cuerpo de la solicitud JSON esté formateado correctamente y que contenga las claves "sender" y "message".

    4. Formato de respuesta inesperado: El servidor RASA puede estar enviando una respuesta en un formato que tu aplicación React no está esperando. Intenta agregar console.log(result) después de response.json() para ver el contenido de la respuesta.

    5. Error de CORS: Si tu aplicación React se ejecuta en un dominio diferente al servidor de RASA, es posible que debas agregar encabezados CORS al servidor RASA para permitir solicitudes entre dominios.

    Código actualizado:

    Para manejar mejor los errores de respuesta y obtener información más detallada, puedes actualizar tu código de la siguiente manera:

    javascript
    export const rasaAPI = async function RASA(name, dialogue) {
      const response = await fetch('http://192.168.8.100:5005/webhooks/rest/webhook', {
        method: 'POST',
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json',
          'charset':'UTF-8'
        },
        body: JSON.stringify({ "sender": name, "message": dialogue }),
      });
    
      if (response.ok) {
        const result = await response.json();
        console.log('Success:', result);
        return result;
      } else {
        throw new Error(response.status);
      }
    }
    

    Nota:* Es importante manejar los errores y mostrar mensajes de error al usuario si falla la conexión con la API de RASA.

    Respondida el Dec 18, 2020 a las 06:51 - por Gemini

    Votos positivos: 0 | Votos negativos: 0