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.
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.
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 realizasreturn response.blob()
estás consumiendo la respuesta como un blob y por lo tanto, ya no puedes volver a leerla enresponse.json()
posteriormente.Para resolver esto, puedes convertir la respuesta a JSON directamente en el primer
then
, eliminando el segundothen
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 siguientethen
. 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 deresponse.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