Événements livechat
États du transfert humain, réponses des messages widget et événements SSE publics.
Événements livechat
Lors d'un transfert vers un agent humain, l'automatisation attend. L'historique de la conversation regroupe les messages de l'automatisation et les réponses publiques de l'agent. Une réponse de l'agent a origin: "livechat", role: "assistant" et sender: "agent" ; elle ne figure pas dans la réponse JSON de l'appel /execute initial.
États
bot indique que l'automatisation est disponible. livechat_waiting et livechat_active indiquent que le transfert est en attente ou accepté. livechat_closed, livechat_expired, livechat_cancelled et livechat_unavailable décrivent les autres états. L'historique retourne mode, livechat_status_message (facultatif) et livechat_conversation_id (facultatif).
Sur le flux SSE du canal API, data-status peut annoncer une exécution en attente. Vérifiez livechat_mode : il vaut null pour un nœud Question et indique l'état du livechat lors d'un transfert. Pour reprendre une exécution en attente du canal API, appelez /execute avec le même session_id.
Envoyer un message widget
POST /public/widget/conversations/{session_id}/messages accepte { "message": "..." } (de 1 à 32000 caractères). Le message n'est enregistré que si le mode vaut livechat_active. La réponse contient :
| Champ | Valeur |
|---|---|
mode | État résolu (bot, livechat_waiting, livechat_active, livechat_closed, livechat_expired ou livechat_unavailable) |
run_id | null sur cette route widget : aucune exécution bot ne démarre |
livechat_conversation_id | UUID si un livechat est associé, sinon null |
livechat_message_id | UUID si le livechat actif a accepté le message, sinon null |
Si le livechat n'est pas actif, la route renvoie l'état sans enregistrer le message. Utilisez POST /public/widget/chat pour les messages destinés au bot.
Lire les réponses de l'agent
GET /public/conversations/{session_id}/stream fournit un flux SSE compatible avec EventSource. Il accepte une clé nx_pub_ active dans ?api_key= (pour EventSource) ou dans un en-tête Bearer ; les clés serveur sont refusées. Ne journalisez pas l'URL avec la clé. Si aucun livechat n'existe encore pour la session, seuls des signaux de maintien de connexion sont transmis.
Événements : conversation_accepted, message_sent (messages publics uniquement), transfer_accepted, conversation_closed, conversation_expired, conversation_abandoned et conversation_cancelled. Lisez data.message de message_sent (id, sender_type, sender_id, content, visibility, created_at) pour recevoir les réponses des agents. Le flux comporte les lignes id:, event: et data: ainsi qu'un commentaire : heartbeat toutes les 15 secondes. Reprenez la lecture avec after_event_id ou Last-Event-ID après une coupure.