Aller au contenu principal
Version: 3.2.1

Envoi de Messages

Le SDK fournit des méthodes pour envoyer différents types de requêtes IA via la connexion WebSocket. Chaque méthode correspond à un type d'action spécifique.

Méthodes Disponibles

  • interaction(params) - Gérer les interactions client
  • reception(params) - Gérer la réception initiale du client
  • elevate(params) - Escalader vers un agent humain
  • adjust(params) - Ajuster le comportement de l'IA
  • summarize(params) - Générer des résumés
  • translate(params) - Traduire du contenu
  • recommend(params) - Obtenir des recommandations
  • insights(params) - Générer des insights
  • customerInteraction(params) - ⚠️ Obsolète (utilisez interaction à la place)

Exemple: Envoi d'un Message d'Interaction

remarque

La méthode customerInteraction est obsolète. Veuillez utiliser la méthode interaction pour les nouvelles implémentations.

const interactionParams = {
headers: {
timestamp: "2024-01-15T10:30:00.000Z"
},
session: {
sessionId: "a1b2c3e6-e5f6-7890-1234-56789abcdef0",
channel: {
browser: "Safari 17.0",
deviceInfo: "iOS/18.2, iPhone15,3",
deviceType: "mobile",
language: "fr-FR",
location: "48.8566,2.3522",
medium: "chat",
section: "support_page"
},
interface: {
appVersion: "2.1.0",
category: "crm",
language: "fr-FR",
name: "mon_app_support",
type: "custom_components"
}
},
request: {
requestId: "a1b2c3d4-e5f6-7890-1234-56789ab2345",
attributes: {
variant: "A"
},
connections: {
threadId: "9e8d7c6b-5a49-3827-1605-948372615abc"
},
context: {
organizationId: "f7e8d9c0-b1a2-3456-7890-123456789abc",
tenantId: "a1b2c3d4-e5f6-7890-1234-56789abcdef0"
},
settings: {
disableSearch: false,
disableStream: false,
disableSources: false,
disableTools: false,
disableBrowsing: false,
maxResponseLength: 2000,
overrideOutputLanguage: "fr-FR",
overrideInterfaceLanguage: "fr-FR",
overrideChannelMedium: "voice"
},
scope: {
resources: {
links: [
{
id: "20382320302",
type: "payment_link",
url: "https://checkout.stripe.com/pay/cs_test...",
label: "Terminer le paiement",
html: false,
expiresAt: "2025-08-06T00:00:00Z"
}
],
codes: [
{
id: "328123-123812312-13023f08asdxjfw0e",
type: "order_number",
value: "CMD-12345",
label: "Numéro de commande"
}
]
},
conversations: [
{
conversationId: "",
participants: [
{
participantId: "2c4f8a9b-1d3e-5f70-8293-456789012def",
displayName: "Jean Dupont",
role: "user"
},
{
participantId: "5b8c9d0e-2f4a-6b1c-9d8e-123456789xyz",
displayName: "Sophie Martin",
role: "operator"
}
],
messages: [
{
content: "Bonjour, pouvez-vous m'aider ?",
participantId: "2c4f8a9b-1d3e-5f70-8293-456789012def",
timestamp: "2024-01-15T10:30:00.000Z"
},
{
content: "Bonjour ! Je serais ravie de vous aider aujourd'hui. Que puis-je faire pour vous ?",
participantId: "5b8c9d0e-2f4a-6b1c-9d8e-123456789xyz",
timestamp: "2024-01-15T10:30:15.000Z"
}
],
metadata: {}
}
],
interactions: [
{
content: "Ticket de support T12345 créé pour l'utilisateur Jean Dupont",
id: "1",
name: "ticket_created",
role: "system",
timestamp: "2024-01-15T10:29:45.000Z"
}
]
}
}
};

const response = await client.interaction(interactionParams);
console.log('Réponse:', response.data);

Structure du Payload

Le SDK gère une structure de payload par défaut qui encapsule les informations de session, les détails utilisateur, les informations agent, les requêtes, et plus encore. Lors de l'envoi d'un message, vous fournissez un objet params qui est fusionné avec le payload par défaut pour former le payload final envoyé via le WebSocket.

En-têtes de l'Enveloppe

Chaque message sortant est encapsulé dans une enveloppe avec un objet headers. Le SDK auto-renseigne les en-têtes suivants:

const headers = {
correlationId: "3b8c9d0e-2f4a-6b1c-9d8e-123456789xyz", // Auto-généré (uuid v7)
action: "interaction", // "adjust", "elevate", etc.
schemaRef: "optave.message.v{<major>}",
sdkVersion: "3.2.1",
identifier: "message",
traceId: "234c9d0e-2f4a-6b1c-9d8e-123456789xyz", // Auto-généré (uuid v7)
idempotencyKey: "774c9d0e-2f4a-6b1c-9d8e-123456789xyz", // Auto-généré (uuid v7)
timestamp: "2024-01-15T10:30:00.000Z", // heure de l'événement côté client
issuedAt: "2024-01-15T10:31:00.000Z",
networkLatencyMs: 120
};

Aperçu du Payload par Défaut

  • sessionId: Identifiant personnalisé qui dure le temps d'une session de chat ou d'un appel
  • session: Contient les données liées à la session incluant:
    • channel: Informations de canal (medium, section, langue, localisation, détails appareil, navigateur)
    • interface: Détails d'interface (version app, type, catégorie, nom, langue)
    • network: Informations réseau (mesures de latence, déplacées vers les en-têtes - networkLatencyMs)
  • request: Contient la structure principale de requête avec:
    • requestId: Identifiant unique de la requête
    • attributes: Attributs optionnels comme les informations de variant
    • connections: Détails de connexion tels que threadId (doit rester unique pour toutes les requêtes liées au même ticket/cas/conversation)
    • context: Généré par Optave, inclut tenantId et organizationId
    • settings: Options de configuration pour le comportement de réponse (flags de désactivation, limites de longueur, overrides de langue)
    • scope: Contient:
      • resources: Données de ressources comme les liens et codes
      • conversations: Tableau de messages de conversation avec détails des participants
      • interactions: Tableau d'interactions système et événements