Modo webhook
Actualmente, el agente de GPTBots admite tres modos de respuesta: blocking, streaming y webhook. Cuando se utiliza el modo webhook para recibir mensajes de respuesta, tanto las respuestas de IA como las respuestas humanas se enviarán a la URL de webhook especificada.
| Modo de respuesta | Tipos de mensajes admitidos |
|---|---|
| blocking | respuestas de IA |
| streaming | respuestas de IA |
| webhook | respuestas humanas, respuestas de IA |
La API de envío de mensajes envía los mensajes de respuesta al webhook
Método de solicitud
POST
Endpoint
Configure su dirección de recepción de mensajes en la página Agent > Integration > API > webhook.
Autenticación
Se admiten dos métodos de autenticación: Basic auth y Bearer auth. Los desarrolladores pueden elegir el método adecuado y configurarlo en la página Agent > Integration > API > webhook.
- Al integrar una dirección de webhook, si el desarrollador completa únicamente el
webhook username, GPTBots utiliza de forma predeterminada la autenticación Bearer al enviar solicitudes a la URL del webhook del desarrollador, siendo el valor elwebhook username. - Al integrar una dirección de webhook, si el desarrollador completa tanto el
webhook usernamecomo elwebhook secret, GPTBots utiliza la autenticación Basic, siendo el nombre de usuario elwebhook usernamey la contraseña elwebhook secret.
Ejemplo de solicitud
curl -X POST 'YOUR_API_URL' \
-H 'Authorization: Bearer ${API Key}' \
-H 'Content-Type: application/json' \
-d '{
"create_time": 1679587005,
"user_id": "65a4ccfc7ce58e728d5897e0",
"anonymous_id": "device_abcdef123456",
"conversation_id": "657303a8a764d47094874bbe",
"message_id": "65a4ccfC7ce58e728d5897e0",
"output": [
{
"from_component_branch": "1",
"from_component_name": "Component Name",
"content": {
"text": "Hi, is there anything I can help you?",
"audio": [
{
"audio": "http://gptbots.ai/example.mp3",
"transcript": "The transcribed content of the audio"
}
]
}
}
],
"usage": {
"tokens": {
"total_tokens": 29,
"prompt_tokens": 19,
"prompt_tokens_details":
{
"audio_tokens": 0,
"text_tokens": 0
},
"completion_tokens": 10,
"completion_tokens_details":
{
"reasoning_tokens": 0,
"audio_tokens": 0,
"text_tokens": 0
}
},
"credits": {
"total_credits": 0.0,
"text_input_credits": 0.0,
"text_output_credits": 0.0,
"audio_input_credits": 0.0,
"audio_output_credits": 0.0
}
}
}'
Cuerpo de la solicitud
| Campo | Tipo | Descripción |
|---|---|---|
| user_id | string | ID de usuario vinculado por el desarrollador; es null cuando no hay ningún usuario vinculado. |
| anonymous_id | string | ID de usuario anónimo (dispositivo). |
| conversation_id | string | Identificador único de la conversación. |
| message_id | string | Identificador único de un mensaje específico dentro de una conversación. |
| create_time | long | Marca de tiempo en la que se generó el mensaje. |
| output | JSON Array | Contenido de la respuesta del agente de IA. |
| from_component_branch | string | Rama de FlowAgent. |
| from_component_name | string | Nombre del componente ascendente en FlowAgent. |
| content | object | Contenido del mensaje de respuesta del agente de IA; actualmente incluye los tipos de mensaje text y audio. |
| usage | object | Consumo. |
| tokens | object | Total de tokens consumidos por el agente en esta conversación. |
| total_tokens | integer | Total de tokens consumidos para entrada + salida en esta conversación. |
| prompt_tokens | integer | Total de tokens consumidos para la entrada en esta conversación. |
| completion_tokens | integer | Total de tokens consumidos para la salida en esta conversación. |
| prompt_tokens_details | object | Detalles del consumo de tokens de la entrada en esta conversación. |
| completion_tokens_details | object | Detalles del consumo de tokens de la salida en esta conversación. |
| credits | object | Total de créditos consumidos por el agente en esta conversación. |
| text_input_credits | double | Créditos consumidos por mensajes de texto de entrada en esta conversación. |
| text_output_credits | double | Créditos consumidos por mensajes de texto de salida en esta conversación. |
| audio_input_credits | double | Créditos consumidos por mensajes de audio de entrada en esta conversación. |
| audio_output_credits | double | Créditos consumidos por mensajes de audio de salida en esta conversación. |
Especificación de la respuesta
Después de que el servicio webhook del desarrollador reciba correctamente el mensaje, debe devolver el código de estado HTTP
200y un indicador de éxito en formato JSON en el cuerpo de la respuesta.
{
"code": 200,
"msg": "success"
}
Detección del estado del servicio Webhook de GPTBots
GPTBots proporciona una interfaz de comprobación de estado (health check) para detectar su propio servicio webhook. Los desarrolladores pueden llamarla para comprobar si el servicio webhook de GPTBots está disponible. Si devuelve el código de estado HTTP 200 y el cuerpo de la respuesta es el indicador de servicio normal en texto plano (por ejemplo, service is normal), el servicio webhook de GPTBots está disponible. Esta interfaz no requiere autenticación y devuelve texto plano.
Método de solicitud
GET
Endpoint
https://api.gptbots.ai/v1/webhook/service/health
Ejemplo de solicitud
curl -X GET 'https://api.gptbots.ai/v1/webhook/service/health'
Respuesta
Cuando el servicio de GPTBots está disponible, devuelve el código de estado HTTP 200 y un indicador de servicio normal en texto plano.
service is normal
Recomendación para evaluar la disponibilidad
El llamador solo necesita el código de estado HTTP como criterio:
| Situación | Decisión |
|---|---|
Devuelve 200 y el cuerpo es service is normal |
El servicio de GPTBots está disponible |
Devuelve un valor distinto de 200 (por ejemplo, 5xx) / tiempo de espera de la solicitud agotado / fallo de conexión |
El servicio de GPTBots no está disponible |
Establezca un tiempo de espera de solicitud razonable (por ejemplo, de 3 a 5 segundos) y realice el sondeo a una frecuencia fija (QPM: 3). Esta interfaz no requiere autenticación; no se necesita ninguna API Key.
