Webhooks¶
Recevez des événements des dialogues Hotline sous forme de requêtes POST au format JSON pour l'intégration avec vos systèmes.
Fonctionnalité payante
L'utilisation des Webhooks et de l'API REST n'est disponible que pour les utilisateurs premium Hotline. Pour acheter la version payante du système, contactez notre service d'assistance.
Capacités¶
Le module Webhooks permet de :
- Suivre les événements du système — création, fermeture et réouverture de dialogues, réception et envoi de messages.
- Traiter les commandes personnalisées — aussi bien les commandes standard
/mark,/info, que vos propres/invoice,/useret toutes autres. - Retourner des réponses aux sujets — les résultats d'exécution des commandes peuvent être affichés directement dans les sujets clients.
Configuration¶
Les Webhooks sont configurés via le bot de configuration @hotlinetg_bot dans le paramètre de connexion WEBHOOKS.
Format de configuration : objet JSON où les clés sont les URL de vos scripts et les valeurs sont des tableaux d'événements à suivre :
Exemple de Configuration JSON¶
{
"https://someapiserver.com/webhooks/test-hook1": [
"dialog_created",
"dialog_reopened",
"dialog_closed",
"message_received",
"message_sent",
"message_intercepted"
],
"https://someapiserver.com/webhooks/test-hook2": [
"/mark", "/info",
"/invoice", "/client"
]
}
Adresses multiples
Vous pouvez spécifier plusieurs URL pour différents ensembles d'événements — par exemple, une pour recevoir des événements sur les messages et dialogues, et une autre pour traiter vos commandes.
Événements Système¶
Notifications automatiques sur les événements de dialogue. Envoyées sans attendre de réponse de votre serveur.
Événements de Dialogue Disponibles¶
| Événement | Description |
|---|---|
dialog_created |
Création d'un nouveau dialogue dans le système. Souvent utilisé pour compter les nouveaux dialogues, envoyer des messages de bienvenue, obtenir des informations supplémentaires sur les clients ou créer un enregistrement dans la base de données clients. |
dialog_reopened |
Réouverture du dialogue après fermeture. Utile pour suivre les contacts répétés. |
dialog_closed |
Fermeture du dialogue par l'opérateur ou automatiquement. Utilisé pour finaliser les tickets, envoyer des enquêtes ou calculer les métriques de fermeture. |
Événements de Message Disponibles¶
| Événement | Description |
|---|---|
message_received |
Réception de tout message entrant du client. Utilisé pour l'enregistrement et l'analyse du contenu, par exemple pour entraîner les modèles d'IA. |
message_sent |
Envoi de message au client. Utile pour le contrôle de la qualité des réponses et le calcul du temps de réaction de l'opérateur. |
message_intercepted |
Message sortant vers le client depuis une session parallèle (par exemple, depuis une autre session de compte). Utilisé pour la synchronisation des données entre systèmes. |
Scénarios d'Utilisation¶
- Envoi de messages automatiques par temporisation après le début du dialogue
- Surveillance du temps de réponse de l'opérateur aux demandes
- Vérification de la conformité des messages à la politique de l'entreprise
- Collecte de données pour l'analyse externe
- Enregistrement des dialogues pour l'entraînement des modèles d'IA
- Duplication des messages vers la base de données d'entreprise
Exemple de Requête : Réouverture de Dialogue¶
{
"event_type": "dialog_reopened",
"timestamp": "2025-10-09 00:24:55",
"instance_id": "13209946874612345",
"data": {
"chat_id": -1002146012345,
"thread_id": 5602541568,
"topic_id": 5343,
"topic_link": "https://t.me/c/2146012345/5343",
"user_id": 5339212345,
"frontend_chat_id": 5339212345,
"frontend_topic_id": null,
"frontend_topic_link": null,
"frontend_user_id": 6406751371,
"chat_type": "private",
"title": "Some User Name",
"department": "default"
},
"api_key": "pQTngMZLh0NmAh"
}
Exemple de Requête : Message Envoyé¶
{
"event_type": "message_sent",
"timestamp": "2025-10-09 00:21:57",
"instance_id": "132099468746812345",
"data": {
"backend_chat_id": -1002146012345,
"backend_thread_id": 5602541568,
"backend_message_id": 6171918336,
"sender_user_id": 5339212345,
"frontend_user_id": 640675123,
"frontend_message_id": 3260022784,
"text": "message test",
"content_type": "messageText",
"department": "default",
"backend_reply_message_id": 0
},
"api_key": "pQTngMZLh0NmAh"
}
Commandes Personnalisées¶
Événements sur les appels de commandes par les opérateurs. Votre serveur peut enregistrer l'événement correspondant et retourner une réponse qui sera affichée dans le sujet du dialogue.
- Spécifiez les commandes système standard dans la configuration JSON :
/info,/mark,/close - Définissez vos propres commandes :
/invoice,/client,/order - Retournez le résultat d'exécution sous forme de texte ou JSON si nécessaire
Scénarios d'Utilisation¶
- Extension de
/infoavec des informations supplémentaires sur les clients provenant d'un autre CRM - Enregistrement des changements de statut via
/markpour l'analyse - Création de facture avec la commande
/invoiceavec retour de lien - Obtention des données client depuis la base de données par
/user - Automatisation des processus métier par déclencheur de commande
Exemple de Requête : Commande /mark¶
{
"event_type": "/mark",
"timestamp": "2025-10-08 20:41:20",
"instance_id": "132099468746812345",
"data": {
"command_data": "deal",
"chat_id": -1002146012345,
"topic_id": 5,
"topic_link": "https://t.me/c/2146012345/5",
"message_id": 5850,
"reply_message_id": null,
"sender_user_id": 123456,
"user_id": 7890123,
"frontend_chat_id": 7890123,
"frontend_thread_id": null
},
"api_key": "pQTngMZLh0NmAh"
}
Format de Réponse¶
Votre serveur peut retourner le résultat sous forme de texte brut ou JSON avec des nœuds message ou error.
Exécution réussie :
{
"message": "Transaction créée : http://internal.domain.com/crm/deals/76238",
"status": "ok"
}
Erreur d'exécution :
{
"error": "Utilisateur 12345678 introuvable dans notre base de données"
}
Réponse texte :
Vous pouvez retourner simplement du texte avec support Markdown v2 :
✅ Facture №12345 créée
Total : 1500
Lien : https://intranet.example.com/invoice/12345
Les autres nœuds JSON sont ignorés
En cas de réponse JSON, Hotline ne traite que les nœuds message et error.
Sécurité¶
Toutes les requêtes de Hotline contiennent le champ api_key de la connexion correspondante pour la vérification de l'expéditeur.
- Vérifiez
api_keyde votre côté - Configurez le filtrage par adresse IP du serveur proxy Hotline
- Utilisez HTTPS pour l'URL des Webhooks
Scénarios Pratiques¶
-
Intégration CRM
Créez automatiquement des prospects au début du dialogue, mettez à jour les statuts de transaction via
/mark, chargez les informations complètes sur les clients par/user -
Analyses Avancées
Collectez tous les messages et événements dans votre système d'analyse pour une analyse détaillée du travail des opérateurs et de la qualité du service
-
Assistants IA
Enregistrez les dialogues dans la base de données pour l'entraînement de l'IA, créez des commandes comme
/hintpour générer des réponses basées sur le contexte -
Automatisation de Documents
Générez des factures, contrats, propositions commerciales par commande avec remplissage automatique des données client
-
Contrôle Qualité
Suivez le temps de réponse de l'opérateur, vérifiez les messages pour les mots interdits, recevez des alertes pour les longues périodes sans réponse
-
Sauvegarde
Enregistrez tous les dialogues dans votre propre base de données pour l'archivage ou la migration vers d'autres systèmes
Conseils de Débogage¶
- Utilisez des services pour tester les Webhooks : postman.com, requestbin.com
- Enregistrez toutes les requêtes entrantes sur votre serveur
- Retournez le statut de réponse HTTP correct (devrait être
200 OK) - Surveillez le délai d'expiration — la réponse devrait arriver rapidement (recommandé jusqu'à 3 secondes)
- Gérez les erreurs avec élégance et retournez des messages compréhensibles
Utilisez des connexions de test
Pour le débogage, créez une connexion de test pour faciliter le contrôle du flux d'événements entrants et déboguer les événements avec différentes propriétés.
Limitations¶
- Délai d'expiration de réponse de commande — recommandé pas plus de 3 secondes
- Taille de réponse — jusqu'à 4096 caractères (limitation Telegram)
- Tentatives de nouvelle tentative — si votre serveur n'est pas disponible, la requête peut être réessayée
- Limites de taux — avec un flux d'événements important, considérez les capacités de votre serveur
Support¶
Pour toute question sur la configuration des webhooks, la connexion d'abonnement payant, contactez le service d'assistance @hotlinetg_support