logo
Desarrollo
Buscar
Modo webhook

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 el webhook username.
  • Al integrar una dirección de webhook, si el desarrollador completa tanto el webhook username como el webhook secret, GPTBots utiliza la autenticación Basic, siendo el nombre de usuario el webhook username y la contraseña el webhook 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 } } }'
                      
                      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
        }
    }
}'

                    
Este bloque de código en una ventana flotante

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 200 y un indicador de éxito en formato JSON en el cuerpo de la respuesta.

{ "code": 200, "msg": "success" }
                      
                      {
  "code": 200,
  "msg": "success"
}

                    
Este bloque de código en una ventana flotante

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'
                      
                      curl -X GET 'https://api.gptbots.ai/v1/webhook/service/health'

                    
Este bloque de código en una ventana flotante

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
                      
                      service is normal

                    
Este bloque de código en una ventana flotante

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.