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 lewebhook username. - Lors de l'intégration d'une adresse webhook, si le développeur renseigne à la fois le
webhook usernameet lewebhook secret, GPTBots utilise l'authentification Basic, avec pour nom d'utilisateur lewebhook usernameet pour mot de passe lewebhook 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
}
}
}'
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
200ainsi qu'un indicateur de succès au format JSON dans le corps de la réponse.
{
"code": 200,
"msg": "succès"
}
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'
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
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.
