Mensajes con Chatbot
La API de Neoagent te permite generar una respuesta de IA basada en la pregunta del usuario enviando una solicitud POST al endpoint /chat/Chat/ClientAsk.
Tiempo de lectura
~5-6 minutos
Endpoint
URL de la Solicitud: https://app.neoagent.co/chat/Chat/ClientAsk
Método: POST
Headers requeridos
La solicitud API debe incluir los siguientes encabezados:
Authorization: <Your-Secret-Key>- cadena, obligatorio - La clave secreta para autenticar la solicitud APIContent-Type: application/json- cadena, obligatorio - El tipo de contenido del payload de la solicitud
Cuerpo de la Solicitud
El cuerpo de la solicitud debe contener los siguientes parámetros:
{
// integer, obligatorio - El ID de sesión obtenido de la API Crear Sesión de Chat
"sessionID": 123,
// string, obligatorio - La pregunta o mensaje del usuario. Si chatAskType es [Image,Audio,Video], content puede estar vacío.
"content": "hello",
// string, opcional - Los valores opcionales son: Text, Audio, Image, Video. Este campo puede dejarse nulo, con el valor predeterminado Text.
"chatAskType": null,
// boolean, opcional - Si transmitir en streaming los progresos parciales. Predeterminado false.
"stream": false,
// List(integer), opcional - Es un array de enteros, válido solo cuando chatAskType está configurado en [Image,Video,Audio]. En modo imagen se admiten múltiples imágenes, mientras que en modo [video,Audio] se permite solo un único [video,audio].
"fileIds": null
}
Parámetros
sessionID- integer, obligatorio - El ID de sesión obtenido de la API Crear Sesión de Chatcontent- string, obligatorio - La pregunta o mensaje del usuario. Si chatAskType es [Image,Audio,Video], content puede estar vacíostream- boolean, opcional - Si transmitir en streaming los progresos parciales. Predeterminado falsechatAskType- string, opcional - Los valores opcionales son: Text, Audio, Image, Video. Predeterminado TextfileIds- List(integer), opcional - Es un array de enteros, válido solo cuando chatAskType está configurado en [Image,Video,Audio]. En modo imagen, se admiten múltiples imágenes, mientras que en modo [video,Audio], se permite un solo [video,audio]. El audio solo se admite en formato WAV. El video se admite solo en formato [MP4,MKV,AVI,FLV,MPEG]. La imagen se admite solo en formato [PNG (.png),JPEG (.jpeg y .jpg),WEBP (.webp),GIF no animada (.gif)]. Límites de tamaño: hasta 20 MB por imagen; hasta 100 MB por video;
Soporte de Archivos Multimedia
Cuando chatAskType está configurado en contenidos multimedia:
Formatos Admitidos:
- Imágenes: PNG, JPEG, WEBP, GIF (no animadas)
- Video: MP4, MKV, AVI, FLV, MPEG
- Audio: WAV
Límites de Tamaño:
- Imágenes: Hasta 20MB por imagen
- Video: Hasta 100MB por video
- Audio: Límite estándar
Reglas:
- Imágenes: Soporta archivos múltiples
- Video/Audio: Solo un único archivo por solicitud
Ejemplos de Solicitud
- JavaScript (Fetch API)
- Python (Requests)
- cURL
- HTTP Raw
const res = await fetch('https://app.neoagent.co/chat/Chat/ClientAsk', {
method: 'POST',
headers: {
"Authorization": "<Your-Secret-Key>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"sessionID": 123,
"content": "hello",
"stream": false
})
});
const data = await res.json();
console.log(data);
import requests
import json
url = 'https://app.neoagent.co/chat/Chat/ClientAsk'
headers = {
"Authorization": "<Your-Secret-Key>",
"Content-Type": "application/json"
}
data = {
"sessionID": 123,
"content": "hello",
"stream": False
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)
curl 'https://app.neoagent.co/chat/Chat/ClientAsk' \
-X POST \
-H 'Authorization: <Your-Secret-Key>' \
-H 'Content-Type: application/json' \
-d '{"sessionID":123,"content":"hello","stream":false}'
POST /chat/Chat/ClientAsk HTTP/1.1
Host: app.neoagent.co
Authorization: <Your-Secret-Key>
Content-Type: application/json
{
"sessionID": 123,
"content": "hello",
"stream": false
}
Ejemplo con Imagen
// Primero carga la imagen usando la API de carga de archivos
const uploadResponse = await uploadFile(imageFile);
const fileId = uploadResponse.Data.fileId;
// Luego envía la solicitud con la imagen
const res = await fetch('https://app.neoagent.co/chat/Chat/ClientAsk', {
method: 'POST',
headers: {
"Authorization": "<Your-Secret-Key>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"sessionID": 123,
"content": "Analiza esta imagen",
"chatAskType": "Image",
"fileIds": [fileId]
})
});
Respuesta
Formato Estándar (sin streaming)
La respuesta de la API será un objeto JSON con la siguiente estructura:
{
"Data": {
"messageid": 375561,
"content": "¡Hola! ¿Cómo puedo asistirte hoy?",
"totalToken": 4337,
"noAnswer": false
},
// string - Versión de la API
"Version": "1.0.0",
// boolean - Estado de éxito de la operación
"Success": true,
// integer - Código de estado HTTP
"Code": 200,
// string - Mensaje de error si lo hay
"Message": ""
}
Campos de la Respuesta:
messageid- ID único del mensaje de respuestacontent- El contenido de la respuesta generada por la IAtotalToken- Número de tokens utilizados para generar la respuestanoAnswer- Indica si la IA no logró proporcionar una respuesta
Formato Streaming
Cuando stream: true, la respuesta será en formato Server-Sent Events:
Encabezado de la Respuesta:
Content-Type: text/event-stream
Cuerpo de la Respuesta:
// Partes incrementales de la respuesta
{"content":"\n"}
{"content":"¡Hola"}
{"content":"!"}
{"content":" ¿Cómo"}
{"content":" puedo"}
{"content":" asistirte"}
{"content":" hoy"}
{"content":"?"}
// Mensaje final con metadatos
{"QuestionID":10495005,"AnswerID":10495006,"Answer":"\n¡Hola! ¿Cómo puedo asistirte?","TotalToken":4994}
Ventajas del Streaming:
- ✅ Respuesta en tiempo real
- ✅ Mejor experiencia de usuario para respuestas largas
- ✅ Posibilidad de mostrar progresos
Manejo de Errores
Si la solicitud falla, debes:
- Verificar el código de estado HTTP para errores a nivel de red
- Examinar los campos
CodeyMessageen la respuesta para errores a nivel de negocio - El campo
Messagecontendrá información detallada sobre el error
Posibles Errores
| Código | Descripción |
|---|---|
| 400 | Parámetros faltantes o no válidos |
| 401 | Clave API no válida |
| 404 | Sesión no encontrada |
| 429 | Límite de tasa superado |
| 500 | Error interno del servidor |
Ejemplo de Respuesta con Error
{
"Data": null,
"Version": "1.0.0",
"Success": false,
"Code": 404,
"Message": "Sesión no encontrada"
}