logo
Développement
Rechercher
Mode Webhook

Mode Webhook

L'Agent GPTBots prend actuellement en charge trois modes de réponse aux messages : blocking, streaming et webhook. Lorsque les développeurs utilisent le mode webhook pour recevoir les messages de réponse, les réponses IA ainsi que les réponses humaines seront soumises à l'URL webhook spécifiée.

Mode de réponse Types de messages pris en charge
blocking Réponses IA
streaming Réponses IA
webhook Réponses humaines, Réponses IA

L'API d'envoi de messages transmet les messages de réponse au webhook

Méthode de requête

POST

Endpoint

Veuillez configurer votre adresse de réception des messages sur la page Agent - Intégration - API - webhook.

Authentification

Deux méthodes d'authentification sont prises en charge : l'authentification Basic et l'authentification Bearer. Les développeurs peuvent choisir la méthode appropriée et la configurer sur la page Agent - Intégration - API - webhook.

  • Lors de l'intégration d'une adresse webhook, si le développeur renseigne uniquement le webhook username, GPTBots utilise par défaut l'authentification Bearer lors de l'envoi de requêtes vers l'URL webhook du développeur, avec pour valeur le webhook username.
  • Lors de l'intégration d'une adresse webhook, si le développeur renseigne à la fois le webhook username et le webhook secret, GPTBots utilise l'authentification Basic, avec pour nom d'utilisateur le webhook username et pour mot de passe le webhook secret.

Exemple de requête

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": "Nom du composant", "content": { "text": "Bonjour, puis-je vous aider ?", "audio": [ { "audio": "http://gptbots.ai/example.mp3", "transcript": "Le contenu transcrit de l'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, //invite + réponse "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": "Nom du composant",
            "content": {
                "text": "Bonjour, puis-je vous aider ?",
                "audio": [
                    {
                        "audio": "http://gptbots.ai/example.mp3",
                        "transcript": "Le contenu transcrit de l'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,  //invite + réponse
            "text_input_credits": 0.0,
            "text_output_credits": 0.0,
            "audio_input_credits": 0.0,
            "audio_output_credits": 0.0
        }
    }
}'

                    
Ce bloc de code dans la fenêtre flottante

Corps de la requête

Champ Type Description
user_id string ID utilisateur lié par le développeur ; null lorsqu'aucun utilisateur n'est lié.
anonymous_id string ID de l'utilisateur anonyme (appareil).
conversation_id string Identifiant unique de la conversation.
message_id string Identifiant unique d'un message spécifique dans une conversation.
create_time long Horodatage de la génération du message.
output Tableau JSON Contenu de la réponse de l'Agent IA.
from_component_branch string Branche FlowAgent.
from_component_name string Nom du composant amont dans FlowAgent.
content object Contenu du message de réponse de l'Agent IA, comprend actuellement les types de messages text et audio.
usage object Consommation d'utilisation.
tokens Tableau JSON Nombre total de tokens consommés par l'Agent dans cette conversation.
total_tokens integer Nombre total de tokens consommés pour l'entrée + la sortie dans cette conversation.
prompt_tokens integer Nombre total de tokens consommés pour l'entrée dans cette conversation.
completion_tokens integer Nombre total de tokens consommés pour la sortie dans cette conversation.
prompt_tokens_details object Détail de la consommation de tokens pour l'entrée dans cette conversation.
completion_tokens_details object Détail de la consommation de tokens pour la sortie dans cette conversation.
credits object Nombre total de crédits consommés par l'Agent dans cette conversation.
text_input_credits double Crédits consommés pour les messages texte en entrée dans cette conversation.
text_output_credits double Crédits consommés pour les messages texte en sortie dans cette conversation.
audio_input_credits double Crédits consommés pour les messages audio en entrée dans cette conversation.
audio_output_credits double Crédits consommés pour les messages audio en sortie dans cette conversation.

Spécification de la réponse

Après que le service webhook du développeur a reçu le message avec succès, il doit retourner le code de statut HTTP 200 ainsi qu'un indicateur de succès au format JSON dans le corps de la réponse.

{ "code": 200, "msg": "succès" }
                      
                      {
  "code": 200,
  "msg": "succès"
}

                    
Ce bloc de code dans la fenêtre flottante

Détection de l'état du service Webhook de GPTBots

GPTBots fournit une interface de vérification de l'état (health-check) permettant de détecter l'état de son propre service webhook. Les développeurs peuvent l'appeler pour vérifier si le service webhook GPTBots est disponible. Si elle retourne le code de statut HTTP 200 et que le corps de la réponse correspond à l'indicateur de service normal en texte brut (par exemple service is normal), le service webhook GPTBots est disponible. Cette interface ne nécessite aucune authentification et retourne du texte brut.

Méthode de requête

GET

Endpoint

https://api.gptbots.ai/v1/webhook/service/health

Exemple de requête

curl -X GET 'https://api.gptbots.ai/v1/webhook/service/health'
                      
                      curl -X GET 'https://api.gptbots.ai/v1/webhook/service/health'

                    
Ce bloc de code dans la fenêtre flottante

Réponse

Lorsque le service GPTBots est disponible, il retourne le code de statut HTTP 200 et un indicateur de service normal en texte brut.

service is normal
                      
                      service is normal

                    
Ce bloc de code dans la fenêtre flottante

Recommandation d'évaluation de la disponibilité

L'appelant n'a besoin que du code de statut HTTP comme critère :

Situation Décision
Retourne 200 et le corps est service is normal Le service GPTBots est disponible
Retourne un code différent de 200 (par exemple 5xx) / délai de requête dépassé / échec de connexion Le service GPTBots est indisponible

Définissez un délai de requête raisonnable (par exemple 3 à 5 secondes) et interrogez à une fréquence fixe (QPM : 3). Cette interface ne nécessite aucune authentification ; aucune clé API n'est requise.