Méthodes de l'API du SDK Web headless

Cette page liste les méthodes d'API disponibles pour le SDK Web headless.

Entreprise et menus

Méthodes de gestion des valeurs et des menus de l'entreprise.

Méthodes

Le SDK headless fournit différentes méthodes pouvant être appelées sur l'instance cliente.

Voici quelques exemples :

Entreprise et menus

Nom de la méthode Description
getCompany Récupère les informations configurées sur l'entreprise.
getMenus Répertoriez tous les menus disponibles pour un locataire donné.
getWaitTimes Obtenez les temps d'attente actuels pour différents canaux dans un menu.

getCompany

Récupère les informations configurées sur l'entreprise pour l'instance authentifiée, y compris le nom de l'entreprise, les langues acceptées et les paramètres des fonctionnalités. Cette méthode définit également l'identifiant d'instance interne (OPTIONS.tenant) comme effet secondaire. C'est pourquoi il s'agit généralement du premier appel effectué après la construction d'un client.

Signature de la méthode

getCompany(): Promise<CompanyResponse>

Valeur renvoyée

Renvoie un objet CompanyResponse.

Interfaces

interface CompanyResponse {
  name: string;
  subdomain: string;
  support_email: string;
  languages: LanguageOption[];
  action_tracking: boolean;
  email_transcripts: boolean;
  message_preview: boolean;
  email_enhancement: boolean;
  display_history: boolean;
  use_recording: boolean;
  use_web: boolean;
  cobrowse_domain?: string;
}

Exemple d'utilisation

try {
  const company = await client.getCompany()
} catch (error) {
  // handle error
}

getMenus

Cette méthode permet de lister tous les éléments de menu disponibles pour l'instance. Le champ MenuResponse.direct indique aux appelants si le résultat provient d'une touche d'accès direct (direct.key: true) ou d'un accès direct au niveau de l'utilisateur (direct.user: true). Ces deux éléments ont une incidence sur la façon dont les menus doivent être présentés.

Signature de la méthode

getMenus(key?: string, lang?: string): Promise<MenuResponse>

Valeur renvoyée

Renvoie un objet MenuResponse.

Interfaces

interface MenuResponse {
  menus: MenuItem[];
  direct: {
    key: boolean;
    user: boolean;
    key_id: number | null;
  };
}
interface MenuItem {
  id: number;
  name?: string;
  enabled: boolean;
  redirection?: {
    option: string;
    data: string;
  };
  children?: MenuItem[];
  channels: MenuChannel[];
  deflection?: {
    enabled: boolean;
    type: string;
  };
  hidden: boolean;
}

Exemple d'utilisation

try {
  const data: MenuResponse = await client.getMenus("direct_menu_key")
  console.log(data.menus)
  console.log(data.direct)
} catch (error) {
  // handle error
}

getWaitTimes

Récupère le temps d'attente estimé (en secondes) pour les canaux de chat et d'appel vocal d'un menu donné.

Signature de la méthode

getWaitTimes(menuId: number | string, lang?: string): Promise<WaitTimeResponse | null>

Valeur renvoyée

Renvoie un objet WaitTimeResponse ou null.

Interfaces

interface WaitTimeResponse {
  chat: number;
  voice_call: number;
}

Exemple d'utilisation

try {
  const data = await client.getWaitTimes(123)
} catch (error) {
  // handle error
}

Appels

Nom Description
createCall Créez un appel instantané ou planifié.
loadCall Obtenez des informations à partir d'un ID d'appel donné.
cancelCall Annule l'appel avec l'ID d'appel indiqué.
getTimeSlots Obtenez les créneaux horaires disponibles pour les appels programmés pour un menu donné.
fetchTimeSlotAvailability Vérifiez si des créneaux horaires sont disponibles pour un menu donné.

createCall

Crée un appel pour le menu donné. Il peut s'agir d'un appel instantané ou planifié, selon que le champ scheduled_at est fourni ou non. Le type d'appel (web_instant_call ou web_scheduled_call) est déterminé automatiquement en fonction de la présence de scheduled_at. reschedule_call_id est envoyé au niveau supérieur de la requête, séparément du corps de l'appel. Le menu_id de la réponse est normalisé à partir du selected_menu.id de l'API.

Signature de la méthode

createCall(menuId: number | string, data: CallRequest): Promise<CallResponse>

Valeur renvoyée

Renvoie un objet CallResponse.

Interfaces

interface CallRequest {
  phone_number: string;
  lang?: string;
  scheduled_at?: string;
  ticket_id?: string;
  email?: string;
  recording_permission?: "recording_permission_not_asked" | "recording_permission_granted" | "recording_permission_denied";
  custom_data?: {
    signed?: string;
    unsigned?: Record<string, any>;
  };
  reschedule_call_id?: number;
}

Exemple d'utilisation

try {
 const call = await client.createCall(123, { phone_number: '+12345678' })
} catch (error) {
 // handle error
}

loadCall

La méthode loadCall récupère des informations sur un appel spécifique, identifié par son ID.

Signature de la méthode

loadCall(callId: number | string): Promise<CallResponse>

Valeur renvoyée

Renvoie un objet CallResponse.

Interfaces

interface CallResponse {
 id: number;
 lang: string;
 menu_id: number;
 status: string;
 type: string;
 scheduled_at?: string;
 recording_permitted: boolean;
 survey_enabled: boolean;
 created_at: string;
 menus: {
   id: number;
   name: string;
 }[];
}

Exemple d'utilisation

try {
 const call = await client.loadCall(1234)
} catch (error) {
 // handle error
}

cancelCall

Annule un appel existant en fonction de son ID. Généralement utilisé pour annuler un appel planifié qui n'a pas encore été passé.

Signature de la méthode

cancelCall(callId: number | string): Promise<CallResponse>

Valeur renvoyée

Renvoie un objet CallResponse.

Interfaces

interface CallResponse {
 id: number;
 lang: string;
 menu_id: number;
 status: string;
 type: string;
 scheduled_at?: string;
 recording_permitted: boolean;
 survey_enabled: boolean;
 created_at: string;
 menus: {
   id: number;
   name: string;
 }[];
}

Exemple d'utilisation

try {
 const response = await client.cancelCall(1234)
} catch (error) {
 // handle error
}

getTimeSlots

Récupère les créneaux horaires disponibles pour les appels programmés dans un menu donné. Lorsqu'il est appelé avec un objet d'options GetTimeSlotsRequest, il permet de reprogrammer un appel existant à l'aide de rescheduleCallId. La signature de chaîne lang obsolète reste compatible et est acheminée vers le même point de terminaison avec uniquement lang renseigné. Renvoie un tableau de chaînes de créneaux horaires.

Signature de la méthode

getTimeSlots(menuId: number | string, options?: GetTimeSlotsRequest): Promise<string[]>

Valeur renvoyée

Renvoie un tableau de chaînes (créneaux horaires).

Interfaces

interface GetTimeSlotsRequest {
 lang?: string;
 rescheduleCallId?: number;          // ID of an existing call being rescheduled
}

Exemple d'utilisation

// New options-based signature (recommended)
try {
 const slots = await client.getTimeSlots(123, {
   lang: 'en',
   rescheduleCallId: 98765, // optional: pass when rescheduling an existing call
 })
} catch (error) {
 // handle error
}
// Deprecated signature (still supported)
try {
 const slots = await client.getTimeSlots(123, 'en')
} catch (error) {
 // handle error
}

fetchTimeSlotAvailability

Cette méthode vérifie si des créneaux horaires sont disponibles pour un menu donné, sans récupérer la liste complète des créneaux horaires. Il est utile pour afficher de manière conditionnelle les options de planification dans l'UI.

Champ d'application

fetchTimeSlotAvailability ne s'applique qu'aux rendez-vous pour un appel vocal planifié (rappel). Il ne renvoie pas d'informations sur les canaux de chat, d'e-mail ou d'appel instantané. Le menu fourni doit être configuré pour accepter les appels vocaux programmés, avec des horaires d'ouverture définis et au moins un agent en file d'attente pour ce menu.

Cas d'utilisation types :

  • Afficher de manière conditionnelle un appel à l'action Planifier un rappel uniquement lorsque des créneaux sont disponibles.

  • Redirection vers un flux de déviation (par exemple, e-mail, message en dehors des heures d'ouverture) lorsqu'aucun créneau n'est disponible, sans payer le coût d'un appel getTimeSlots complet.

  • Effectuer un contrôle préliminaire d'une action de reprogrammation avant d'appeler getTimeSlots avec un rescheduleCallId.

Signature de la méthode

fetchTimeSlotAvailability(menuId: number | string, lang?: string): Promise<boolean>

Valeur renvoyée

Renvoie true si des créneaux horaires sont disponibles, ou false si ce n'est pas le cas.

Exemple d'utilisation

try {
 const isAvailable = await client.fetchTimeSlotAvailability(123, 'en')
 if (isAvailable) {
   // Show scheduling UI
 }
} catch (error) {
 // handle error
}

Discussions

Nom Description
createChat Crée une discussion.
loadChat Récupère le chat avec l'ID de chat donné.
loadOngoingChat Tente de charger une discussion en cours.
resumeChat Reprend une discussion ignorée avec l'ID de discussion donné.
finishChat Définissez l'état du chat actuel sur "terminé".
destroyChat Appelle finishChat et détruit le chat actuel
fetchMessages Récupère les messages précédents. Renvoie [] en cas d'échec.
sendTextMessage Envoie un message.
sendFileMessage Envoie un message de fichier. Renvoie -1 en cas d'échec de l'importation.
sendPreviewMessage Envoie un message d'aperçu.
getChatDeflection Récupère la configuration de déviation du chat.
sendChatTranscripts Envoie la transcription du chat aux adresses e-mail indiquées.
downloadChatTranscript Télécharge la transcription du chat.
getPdfStatus Récupère l'état du PDF d'une transcription.
getChatSurvey Récupère les questions de l'enquête par chat.
sendChatSurvey Envoyer les commentaires des utilisateurs issus de l'enquête.
sendChatRate Envoyer des commentaires d'utilisateurs sur le chat.
escalateChat Transfère un chat d'un agent virtuel à un agent humain.
trackChatEscalation Effectue le suivi de l'événement d'escalade de chat.
trackChatEndUserEvent Effectue le suivi d'un événement d'utilisateur final.
getChatHistory Récupère l'historique d'un chat donné.

Point de contact par chat

La fonctionnalité d'enregistrement demande à un client de confirmer qu'il est prêt avant de le mettre en relation avec un agent. Cette section décrit les méthodes du SDK Web sans interface graphique permettant de mettre en œuvre cette expérience. Pour savoir ce qu'est l'enregistrement, comment l'activer et le configurer (temps d'attente, délai avant expiration, position dans la file d'attente, comportement de réintégration) et comment créer des rapports, consultez Enregistrement pour le chat.

Nom Description
checkIn Envoie un signal au serveur pour confirmer la présence de l'utilisateur dans la file d'attente.
exitCheckIn Supprime l'utilisateur de la file d'attente d'enregistrement.
notifyCheckInState Informe le backend de l'état de visibilité de la fenêtre modale d'enregistrement.
rejoinChat Replace l'utilisateur dans la file d'attente s'il ne confirme pas l'enregistrement.
trackCheckInEvent Signale au backend quand des événements d'enregistrement ont été déclenchés par l'UI.

checkIn

Envoie un signal de confirmation au serveur indiquant que le client est présent et prêt à être mis en relation avec un agent pendant la période d'enregistrement. Met à jour le check_in_status du chat localement après que le serveur a confirmé la réception. Utilisez-le en réponse à l'événement chat.checkInRequested.

Signature de la méthode

checkIn(): Promise<CheckInResponse>

Valeur renvoyée

Renvoie un objet CheckInResponse.

Interfaces

interface CheckInResponse {
 chat_id: number;
 check_in_status: CheckInStatus;
 check_in_at?: string;
}
enum CheckInStatus {
 CONFIRMED = 'confirmed',
 EXITED = 'exited',
 PENDING = 'pending',
 REQUESTED = 'requested',
 SKIPPED = 'skipped',
 TIMED_OUT = 'timed_out',
}

Exemple d'utilisation

try {
 const response = await client.checkIn()
} catch (error) {
 // handle error
}

exitCheckIn

Indique au serveur que le client a choisi de quitter la file d'attente d'enregistrement. Met à jour check_in_status localement. Après avoir appelé cette méthode, le client ne recevra pas de connexion d'agent pour le cycle d'enregistrement en cours.

Signature de la méthode

exitCheckIn(): Promise<CheckInResponse>

Valeur renvoyée

Renvoie un objet CheckInResponse.

Interfaces

interface CheckInResponse {
 chat_id: number;
 check_in_status: CheckInStatus;
 check_in_at?: string;
}
enum CheckInStatus {
 CONFIRMED = 'confirmed',
 EXITED = 'exited',
 PENDING = 'pending',
 REQUESTED = 'requested',
 SKIPPED = 'skipped',
 TIMED_OUT = 'timed_out',
}

Exemple d'utilisation

try {
 const response = await client.exitCheckIn()
} catch (error) {
 // handle error
}

notifyCheckInState

Informe le serveur de l'état de visibilité actuel de la fenêtre modale d'enregistrement (si le widget est réduit ou si l'onglet du navigateur est inactif). Le serveur l'utilise pour prendre des décisions concernant le moment de l'enregistrement. Doit être appelée chaque fois que la visibilité du widget ou le focus de l'onglet change alors que l'événement chat.checkInRequested est actif.

Signature de la méthode

notifyCheckInState(data: CheckInVisibilityStateRequest): Promise<void>

Interfaces

interface CheckInVisibilityStateRequest {
 widget_minimized?: boolean;
 tab_inactive?: boolean;
}

Exemple d'utilisation

try {
 const visibilityState = {
   widget_minimized: true,
   tab_inactive: false,
 }
 await client.notifyCheckInState(visibilityState)
} catch (error) {
 // handle error
}

rejoinChat

Remet le client dans la file d'attente s'il n'a pas confirmé son enregistrement dans le délai imparti. Met à jour check_in_status localement. Utilisez-le en réponse à l'événement chat.checkInTimedOut si le client souhaite toujours se connecter.

Signature de la méthode

rejoinChat(): Promise<CheckInResponse>

Valeur de retour : renvoie un objet CheckInResponse.

Interfaces

interface CheckInResponse {
 chat_id: number;
 check_in_status: CheckInStatus;
 check_in_at?: string;
}
enum CheckInStatus {
 CONFIRMED = 'confirmed',
 EXITED = 'exited',
 PENDING = 'pending',
 REQUESTED = 'requested',
 SKIPPED = 'skipped',
 TIMED_OUT = 'timed_out',
}

Exemple d'utilisation

try {
 const response = await client.rejoinChat()
} catch (error) {
 // handle error
}

trackCheckInEvent

Indique au serveur que la fenêtre modale d'enregistrement a été présentée au client. Appelez cette méthode une fois, immédiatement après avoir présenté l'interface utilisateur d'enregistrement en réponse à chat.checkInRequested. Le serveur l'utilise pour l'analyse opérationnelle des taux de présentation des enregistrements. L'appel est attendu en interne et renvoie un Promise<void> qui peut être rejeté. Encapsulez-le donc dans try/catch (comme dans l'exemple suivant).

Signature de la méthode

trackCheckInEvent(): Promise<void>

Exemple d'utilisation

try {
 await client.trackCheckInEvent()
} catch (error) {
 // handle error
}

getMessageAttachment

Récupère une pièce jointe éligible associée à un message de chat spécifique. Ne récupère que si le message a été envoyé par un utilisateur non final ($userType !== 'end_user') et qu'il s'agit d'un type de pièce jointe compatible (photo, vidéo, audio, document). Renvoie null pour tout message qui ne remplit pas les deux conditions, et pas seulement pour les messages sans media_id. Enregistre le fichier récupéré dans le cache multimédia local du chat après la récupération.

Signature de la méthode

getMessageAttachment(message: MessageResponse): Promise<File | null>

Valeur renvoyée

Renvoie un objet File s'il est trouvé, ou la valeur "null" si ce n'est pas le cas.

Exemple d'utilisation

try {
 const file = await client.getMessageAttachment(message)
} catch (error) {
 // handle error
}

createChat

Crée une session de chat pour le menu donné. Vous pouvez éventuellement spécifier la langue, un message d'accueil, un ID de déclencheur, un ID de ticket et des données personnalisées à envoyer avec le chat.

Après l'appel d'API initial, la méthode interroge le serveur jusqu'à ce qu'un provider_channel_id soit disponible, ou que la discussion soit annulée ou terminée. Si un canal de fournisseur devient disponible, la méthode lance la connexion au fournisseur en temps réel. La connexion peut encore être en cours d'établissement lorsque la promesse est résolue. Écoutez l'événement chat.connectedMessages pour savoir quand la connexion et la récupération initiale des messages sont terminées.

Signature de la méthode

createChat(menuId: number | string, data: ChatRequest): Promise<Chat>

Valeur renvoyée

Renvoie une instance Chat.

Interfaces

interface ChatRequest {
  lang?: string;
  trigger_id?: string;
  ticket_id?: string;
  email?: string;
  greeting?: string;
  cobrowsable?: boolean;
  custom_data?: {
    signed?: string;
    unsigned?: Record<string, any>;
  };
}

Exemple d'utilisation

try {
 const chat = await client.createChat(123, { lang: 'en' })
} catch (error) {
 // handle error
}

loadChat

Récupère une session de chat existante à l'aide de son ID.

Si le chat chargé n'est plus en cours, la méthode efface l'ID de chat stocké et le nonce de co-navigation de l'espace de stockage local. Il effectue également cette opération en cas d'erreur, de sorte que les appelants n'ont pas besoin de gérer manuellement le nettoyage de l'espace de stockage après un échec de chargement.

Signature de la méthode

loadChat(chatId: number | string): Promise<Chat>

Valeur renvoyée

Renvoie une instance Chat.

Exemple d'utilisation

try {
 const chat = await client.loadChat(1234)
} catch (error) {
 // handle error
}

loadOngoingChat

Tente de charger la session de chat en cours, le cas échéant. Renvoie null si aucune discussion en cours n'est trouvée.

Signature de la méthode

loadOngoingChat(): Promise<Chat | null>

Valeur renvoyée

Renvoie une instance Chat si elle est trouvée, ou une valeur nulle si aucune discussion n'est en cours. Les valeurs de stockage seront effacées si la discussion n'est pas en cours.

Exemple d'utilisation

try {
 const chat = await client.loadOngoingChat()
} catch (error) {
 // handle error
}

resumeChat

Reprend une session de chat précédemment fermée à l'aide de son ID, ce qui permet au client de poursuivre la conversation.

Si le client contient déjà une référence à une discussion avec le même ID, la méthode court-circuite : elle corrige l'état sur queued sur l'instance existante au lieu d'en récupérer une nouvelle. Si les ID ne correspondent pas, une nouvelle instance Chat est créée et enregistrée.

Signature de la méthode

resumeChat(chatId: number | string): Promise<Chat>

Valeur renvoyée

Renvoie une instance Chat.

Exemple d'utilisation

try {
 const chat = await client.resumeChat(1234)
} catch (error) {
 // handle error
}

finishChat

Définit l'état de la session de chat actuelle sur "terminée". Cela met fin au chat du côté du client.

Si le chat est à la fois connecté au fournisseur en temps réel et à l'état "terminé" après l'appel PATCH, la méthode se déconnecte également du fournisseur. Les appelants n'ont pas besoin d'appeler destroyChat si l'objectif est simplement de mettre fin au chat de manière appropriée.

Signature de la méthode

finishChat(): Promise<void>

Exemple d'utilisation

try {
 await client.finishChat()
} catch (error) {
 // handle error
}

destroyChat

Termine et détruit la session de chat actuelle, en nettoyant tout l'état interne. Cette méthode appelle finishChat en interne, puis supprime l'instance de chat. Avant de terminer la discussion, la méthode la désactive (supprime les événements entrants en temps réel) pour éviter de traiter les messages pendant la suppression. Efface l'ID du traceur interne une fois le chat détruit.

Signature de la méthode

destroyChat(): Promise<void>

Exemple d'utilisation

try {
 await client.destroyChat()
} catch (error) {
 // handle error
}

fetchMessages

Récupère l'historique des messages de la session de chat actuelle auprès du fournisseur en temps réel. Doit être appelée une fois que le chat est connecté. Si elle est appelée avant que le chat ne se connecte, elle renvoie un tableau vide au lieu de générer une exception. Récupère automatiquement les URL des documents pour tous les messages de type document et les fusionne dans la réponse. Pour les messages de type server_message, récupère le contenu du message de l'agent virtuel de la tâche et le met en forme de manière intégrée. Renvoie un tableau vide en cas d'échec au lieu de générer une erreur.

Signature de la méthode

fetchMessages(): Promise<MessageResponse[]>

Valeur renvoyée

Renvoie un tableau de MessageResponse. Renvoie un tableau vide en cas d'échec.

Interfaces

interface MessageResponse {
  $index: number;
  $sid: string;
  $timestamp: Date;
  $userType: string;
  $userId: number;
  type: string;
  content?: string;
  event?: string;
  file?: File;
  media_id?: number;
  groupMessageId?: number;
  document?: {
    url: string;
  };
  unredacted?: string;
  buttons?: {
    title: string;
  }[];
  message?: { messages: string[], type };
  signature?: string,
  form?: {
    id: number,
    form_type: string,
    name: string,
    title: string,
    subtitle: string,
    external_form_id: string,
    smart_action_id: number,
    image: string
  }

  // allow extra parameters
  [key: string]: unknown;
}

Exemple d'utilisation

const messages = await client.fetchMessages()

sendTextMessage

Envoie un message dans la session de chat actuelle.

La méthode nettoie le contenu brut avant de l'envoyer et renvoie un résultat anticipé (sans opération) si le résultat est vide. Si le chat se trouve dans un flux d'agent virtuel de tâche (inTask), le message est acheminé via le point de terminaison de l'agent virtuel de tâche au lieu du canal standard. Si la suppression côté serveur est activée, le message est envoyé à l'aide d'un point de terminaison de serveur plutôt que directement par le biais du fournisseur en temps réel.

Signature de la méthode

sendTextMessage(rawContent: string): Promise<void>

Exemple d'utilisation

try {
 await client.sendTextMessage("hello world")
} catch (error) {
 // handle error
}

sendFileMessage

Importe un fichier dans la session de chat actuelle via un processus en trois étapes : obtention d'une URL Cloud Storage présignée auprès du serveur, importation du fichier directement vers cette URL, puis confirmation de l'importation auprès du serveur. La route d'importation est déterminée automatiquement à partir du type MIME du fichier : les images sont envoyées en tant que messages photo et les vidéos en tant que messages vidéo. Les autres types de fichiers sont acheminés en fonction de leur type MIME. Renvoie l'ID du message en cas de réussite, ou -1 en cas d'échec.

Signature de la méthode

sendFileMessage(file: File): Promise<number>

Valeur renvoyée

Renvoie l'ID du message ou -1 si l'importation a échoué. Toutefois, l'envoi de message suivant peut toujours être rejeté (par exemple, ChatEndedError). Par conséquent, encapsulez l'appel dans try/catch en plus de vérifier -1.

Exemple d'utilisation

const input = document.querySelector('input[type="file"]')
const file = input.files[0]
try {
  const id = await client.sendFileMessage(file)
  if (id === -1) {
    // handle upload failure
  }
} catch (error) {
  // handle message-send failure
}

sendPreviewMessage

Envoie un message d'aperçu dans la session de chat actuelle. Les messages d'aperçu sont généralement utilisés pour montrer à l'agent ce que le client est en train de saisir avant l'envoi du message. Si redaction_enabled et agent_incoming_ha_enabled sont tous deux définis sur "true" dans l'état du chat, l'aperçu est envoyé via un point de terminaison de serveur (POST /chats/{id}/redact_messages) plutôt que via le canal du fournisseur en temps réel.

Signature de la méthode

sendPreviewMessage(content: string): Promise<void>

Exemple d'utilisation

try {
 await client.sendPreviewMessage('preview content')
} catch (error) {
 // handle error
}

getChatDeflection

Récupère la configuration de déviation de chat pour la session de chat actuelle, y compris si la déviation est activée, le seuil de temps d'attente et les options de déviation disponibles.

Renvoie null si la déviation n'est pas activée pour le chat (le champ enabled de la réponse du serveur est faux). Les appelants doivent effectuer une vérification de valeur nulle avant de lire la réponse.

Signature de la méthode

getChatDeflection(): Promise<ChatDeflectionResponse | null>

Valeur renvoyée

Renvoie un objet ChatDeflectionResponse ou null si la déviation n'est pas activée pour le chat.

Interfaces

interface ChatDeflectionResponse {
 enabled: boolean;
 threshold: number;
 email: boolean;
 keep_waiting: boolean;
 external_deflection_links: {
   enabled: boolean;
   ids: number[];
 };
}

Exemple d'utilisation

try {
 const deflection = await client.getChatDeflection()
} catch (error) {
 // handle error
}

sendChatTranscripts

Envoie la transcription du chat actuel aux adresses e-mail spécifiées.

Signature de la méthode

sendChatTranscripts(emails: string[]): Promise<void>

Exemple d'utilisation

try {
 await client.sendChatTranscripts([
   "name1@example.com",
   "name2@example.com",
 ])
} catch (error) {
 // handle error
}

downloadChatTranscript

Lance le téléchargement de la transcription de la discussion en cours au format PDF. Renvoie un objet de transcription qui peut être utilisé avec getPdfStatus pour suivre la progression de la génération.

Signature de la méthode

downloadChatTranscript(): Promise<GenerateTranscriptResponse>

Valeur renvoyée

Renvoie l'objet de transcription.

Interfaces

interface GenerateTranscriptResponse {
 status: string;
 chat_transcript_id: number;
}

Exemple d'utilisation

try {
 const resp = await client.downloadChatTranscript()
} catch (error) {
 // handle error
}

getPdfStatus

Vérifie l'état de génération d'un PDF de transcription de chat précédemment demandé. Utilisez l'objet chat_transcript_id renvoyé par downloadChatTranscript pour interroger l'état d'avancement.

Signature de la méthode

getPdfStatus(id: number): Promise<RequestReturn>

Valeur renvoyée

Renvoie l'objet d'état du PDF.

Interfaces

interface RequestReturn {
   //...
   headers,
   data: PdfStatusResponse,
 }


 interface PdfStatusResponse {
   status: string;
   body?: File;
   failed_reason?: string;
 }

Exemple d'utilisation

const response = await client.getPdfStatus(pdfId)
// check header for status
const status = response.headers['x-transcript-status'];
// otherwise use status on data
const data = response.data
console.log(data.status)

getChatSurvey

Récupère les questions de l'enquête post-chat configurées pour la session de chat actuelle. L'enquête est présentée aux clients à la fin d'un chat.

Signature de la méthode

getChatSurvey(): Promise<ChatSurveyResponse | null>

Valeur renvoyée

Renvoie un objet ChatSurveyResponse ou une valeur nulle.

Interfaces

interface QuestionItem {
 id: number;
 type: "csat" | "star" | "free-form" | "scale" | "enumeration";
 display_text: string;
 name?: string;
 is_csat?: boolean;
 position?: number;
 valid_answers?: {
   key: string;
   value: string;
 }[]
}
interface ChatSurveyResponse {
 id?: number;
 lang?: string;
 sign_off_display_text: string;
 questions: QuestionItem[];
}

Exemple d'utilisation

try {
 const data = await client.getChatSurvey()
 if (data) {
   console.log(data.questions)
 }
} catch (error) {
 // handle error
}

sendChatSurvey

Envoie les réponses du client à l'enquête post-chat. Chaque réponse est associée à l'ID de la question.

Signature de la méthode

sendChatSurvey(answers: SurveyAnswers): Promise<void>

Interfaces

interface SurveyAnswers {
 [question_id: string]: number | string;
}

Exemple d'utilisation

try {
 await client.sendChatSurvey({
   123: "a",
   231: "b",
 })
} catch (error) {
 // handle error
}

sendChatRate

Envoie la note et les commentaires facultatifs du client pour la session de chat. Utilisé lorsque le type de commentaires post-chat est une note plutôt qu'une enquête complète.

Signature de la méthode

sendChatRate(data: RateRequest): Promise<void>

Interfaces

interface RateRequest {
 rating: number;
 feedback?: string;
}

Exemple d'utilisation

try {
 await client.sendChatRate({
   rating: 5,
   feedback: "Very good service",
 })
} catch (error) {
 // handle error
}

escalateChat

Transfère le chat en cours d'un agent virtuel à un agent humain.

Signature de la méthode

escalateChat(data?: EscalateRequest): Promise<void>

Interfaces

interface EscalateRequest {
 force_escalate: boolean;
 menu_id: number;
 lang: string;
}

Exemple d'utilisation

try {
 // Escalate to a specific menu in a given language
 await client.escalateChat({
   force_escalate: true,
   menu_id: 123,
   lang: 'en',
 })
} catch (error) {
 // handle error
}
// Or, escalate without arguments to use defaults
try {
 await client.escalateChat()
} catch (error) {
 // handle error
}

trackChatEscalation

Effectue le suivi d'un événement d'escalade de chat, en enregistrant l'ID d'escalade et le canal vers lequel il a été escaladé.

Signature de la méthode

trackChatEscalation(escalationId: number, channel: string): Promise<void>

Exemple d'utilisation

try {
 await client.trackChatEscalation(escalationId, channel)
} catch (error) {
 // handle error
}

trackChatEndUserEvent

Effectue le suivi d'un événement d'utilisateur final personnalisé pendant la session de chat, qui peut être utilisé pour l'analyse ou pour déclencher des workflows de backend. Si l'objet data n'inclut pas end_user_name et qu'un nom est disponible dans le profil utilisateur authentifié, il est renseigné automatiquement avant l'envoi de la requête.

Signature de la méthode

trackChatEndUserEvent(data: ChatEndUserEventRequest): Promise<void>

Valeur renvoyée

Renvoie void.

Interfaces

interface ChatEndUserEventRequest {
  event: {
    name: string;
    payload: Record<string, string>;
  };
  end_user_name?: string;
}

Exemple d'utilisation

try {
 await client.trackChatEndUserEvent({
   event: {
     name: 'add_to_cart',
     payload: {
       product_id: 'sku-1234',
       quantity: '2',
     },
   },
   // end_user_name is auto-populated from the authenticated user
   // profile if omitted
 })
} catch (error) {
 // handle error
}

getChatHistory

Récupère l'historique des discussions du client, y compris le contenu des messages et les métadonnées. Les résultats sont paginés. La page 1 renvoie jusqu'à deux chats, et les pages suivantes renvoient un chat chacune. Cette pagination asymétrique est intentionnelle et permet au premier appel de précharger le contexte de l'historique adjacent.

Signature de la méthode

getChatHistory(page?: number): Promise<ChatHistoryResponse | null>

Valeur renvoyée

Renvoie un objet ChatHistoryResponse ou null.

Interfaces

interface ChatHistoryItem {
 comm_id: number;
 assigned_at: string;
 comm_type: string;
 timezone: string;
 entries: MessageResponse[];
 [key: string]: unknown;
}
interface ChatHistoryResponse {
 chats: ChatHistoryItem[];
 missing_chat_ids: number[];
 pagination: {
   next_page: number;
   per_page: number;
 }
}

Exemple d'utilisation

try {
 const data = await client.getChatHistory(1) // page defaults to 1 if omitted
 console.log(data)
} catch (error) {
 console.log(error)
}

E-mails

Nom Description
createEmail Envoyer un e-mail au canal de messagerie d'un ID de menu donné.
getProhibitedFileTypes Obtenez les types de fichiers interdits pour les pièces jointes d'e-mails.

createEmail

Envoie un e-mail au canal de messagerie associé au menu donné. Le consommateur peut inclure un nom, une adresse e-mail, un corps du message et des pièces jointes facultatives.

Signature de la méthode

createEmail(menuId: number | string, data: EmailRequest): Promise<EmailResponse>

Valeur renvoyée

Renvoie un objet EmailResponse en cas d'échec ou de réussite.

Interfaces

interface EmailRequest {
 name?: string;
 email: string;
 content: string;
 lang?: string;
 files?: File[];
 recaptcha?: string;
}
interface EmailResponse {
 id: number;
 type: string;
 status: string;
 fail_reason: string;
 attachment_count: number;
}

Exemple d'utilisation

try {
 await client.createEmail(123, {
   lang: "en",
   name: "User name",
   email: "name@example.com",
   content: "description of the question",
   files: input.files,
 })
} catch (error) {
 console.log(error.message)
}

getProhibitedFileTypes

Récupère la liste des types de fichiers qui ne sont pas autorisés en tant que pièces jointes d'e-mails, telle que configurée par l'administrateur.

Signature de la méthode

getProhibitedFileTypes(): Promise<FileTypeItem[]>

Valeur renvoyée

Renvoie un tableau de FileTypeItem.

Interfaces

interface FileTypeItem {
 extension: string;
 description: string;
}

Exemple d'utilisation

try {
 const types = await client.getProhibitedFileTypes()
} catch (error) {
 // handle error
}

Partage d'écran

Nom Description
createCobrowseCode Génère un code de co-navigation.
startCobrowse Demandez une session de co-navigation.
restoreCobrowseSession Restaure une session de co-navigation après la réouverture de la fenêtre du navigateur.

createCobrowseCode

Génère un code de session de co-navigation (partage d'écran) unique qui peut être partagé avec un agent pour lancer une session. Initialise le client de co-navigation s'il ne l'a pas encore été. Réutilise tout nonce existant du stockage plutôt que d'en générer un nouveau à chaque appel, de sorte que le même code de session puisse être récupéré lors des chargements de page.

Signature de la méthode

createCobrowseCode(lang?: string, customData?: Record<string, string>): Promise<string>

Valeur renvoyée

Renvoie une chaîne de code de co-navigation ou une chaîne vide ('') en cas d'échec.

Exemple d'utilisation

const code = await client.createCobrowseCode()
// 123456

startCobrowse

Demande le démarrage d'une session de co-navigation (partage d'écran) du côté de l'utilisateur final pendant une discussion active.

Signature de la méthode

startCobrowse(from?: string): Promise<void>

Exemple d'utilisation

try {
 await client.startCobrowse()
} catch (error) {
 // handle error
}

restoreCobrowseSession

Tente de restaurer une session de co-navigation précédemment active après la réouverture de la fenêtre du navigateur ou l'actualisation du widget.

Signature de la méthode

restoreCobrowseSession(): Promise<void>

Valeur renvoyée

Cela renvoie Promise<void>. Cette méthode est une opération sans effet (elle renvoie immédiatement sans erreur) si la co-navigation n'est pas activée dans les options du client ou si aucune session de co-navigation précédente n'existe dans l'espace de stockage.

Exemple d'utilisation

// Safe to call unconditionally - will no-op if cobrowse is not enabled
// or if no previous session exists
await client.restoreCobrowseSession()

Agent virtuel post-session

Nom Description
updatePostSession Définissez l'état de la session de chat en cours après la session.

updatePostSession

Cette méthode permet de mettre à jour l'état de l'agent virtuel après la session pour le chat en cours.

  • Met à jour l'état de l'agent virtuel après la session pour le chat en cours. Utilisez-le pour signaler l'état de préparation, la progression ou l'achèvement d'un flux d'agent virtuel post-session.

  • Renvoie immédiatement une opération sans effet si postSessionStatus est FINISHED ou WAITING (ces transitions sont gérées en interne).

  • Il dispose d'une logique de nouvelle tentative interne spécifiquement pour l'état IN_PROGRESS d'une réponse 400. Les appelants n'ont donc pas besoin d'implémenter leur propre logique de nouvelle tentative dans ce cas.

Signature de la méthode

updatePostSession(postSessionStatus: PostSessionStatus, optInSelection?: boolean): Promise<void>

Interfaces

enum PostSessionStatus {
 READY = 'ready',
 IN_PROGRESS = 'in_progress',
 WAITING = 'waiting',
 FINISHED = 'finished',
}

Exemple d'utilisation

try {
 // Without opt-in selection
 await client.updatePostSession(PostSessionStatus.READY)
 // With opt-in selection
 await client.updatePostSession(PostSessionStatus.READY, true)
} catch (error) {
 // handle error (e.g., show a notification to the user)
}
interface ChatResponse {
 //...
 post_session_required?: boolean;
 post_session_opt_in_required?: boolean;
 post_session_transfer_status?: string;
}
  • post_session_required : post-session requise après un chat.

  • post_session_opt_in_required : indique si l'activation est activée.

  • post_session_transfer_status : l'une des énumérations PostSessionStatus.

Débogage

Nom Description
getLogs Récupère les journaux de débogage internes du SDK.
printLogs Envoie des journaux de débogage internes vers la console du navigateur.

getLogs

Récupère les journaux de débogage internes collectés par le SDK, y compris les journaux au niveau du pont et au niveau racine. Utile pour résoudre les problèmes d'intégration.

Signature de la méthode

getLogs(): Promise<{ bridgeLogs: LogHistoryData[], rootLogs: LogHistoryData[] }>

Valeur renvoyée

Renvoie un objet contenant deux tableaux de LogHistoryData.

Interfaces

interface LogHistoryData {
 date: string;
 channel: string;
 level: string;
 args: any[];
}

Précision

Chaque entrée LogHistoryData capture un seul événement de journal :

  • date : code temporel ISO 8601 de l'événement.

  • channel : module du SDK qui l'a émis (par exemple, client de premier niveau, couche de chat, couche de co-navigation, fournisseur en temps réel).

  • level : niveau de gravité du journal (debug, info, warn ou error).

  • args : arguments bruts capturés par l'appel de journal.

Exemple d'entrée :

{
 "date": "2026-05-08T14:02:13.412Z",
 "channel": "Provider",
 "level": "info",
 "args": ["chat connected", { "chatId": 4421 }]
}

L'ensemble exact des canaux et du contenu des messages peut évoluer entre les versions du SDK. Traitez les journaux comme une aide au débogage, et non comme une cible d'analyse stable. Ne créez pas de logique de production qui dépend de noms de canaux ou de chaînes de message spécifiques.

getLogs renvoie des enregistrements internes au SDK destinés à aider à diagnostiquer les problèmes d'intégration avec le SDK Web headless lui-même. Son principal cas d'utilisation est le diagnostic d'assistance : lorsqu'un utilisateur final signale un problème, votre application peut capturer le résultat de getLogs et l'associer à la demande d'assistance envoyée à CCAI Platform.

Les journaux renvoyés n'incluent pas :

  • La télémétrie de l'application, les événements d'entreprise ou la navigation des utilisateurs de votre page hôte.

  • Défaillances du réseau que le navigateur ne transmet pas au SDK (par exemple, erreurs CORS, de contenu mixte ou de certificat).

  • Traces de requêtes côté serveur ou détails du backend au-delà de l'état HTTP renvoyé au SDK.

getLogs ne remplace pas vos propres outils d'observabilité. Nous vous recommandons d'associer le SDK aux éléments suivants :

  • Un outil de suivi des erreurs/RUM côté navigateur (Sentry, Datadog Browser RUM, New Relic Browser ou équivalent).

  • La journalisation côté serveur sur votre point de terminaison d'authentification (le rappel authenticate que le SDK appelle).

  • Écouteurs au niveau de l'application sur chat.disconnected, chat.timeout et chat.ended si vous devez transférer les signaux du cycle de vie du chat vers votre propre pipeline de télémétrie.

Exemple d'utilisation

try {
 const { bridgeLogs, rootLogs } = await client.getLogs()
 console.log('Bridge logs:', bridgeLogs)
 console.log('Root logs:', rootLogs)
} catch (error) {
 // handle error
}

printLogs

Envoie tous les journaux de débogage internes directement vers la console du navigateur. Il s'agit d'une méthode pratique qui appelle getLogs() en interne et met en forme le résultat.

Signature de la méthode

printLogs(): Promise<void>

Exemple d'utilisation

try {
 await client.printLogs()
} catch (error) {
 // handle error
}

Autres

Nom Description
runTrigger Vérifie si des déclencheurs proactifs doivent être activés.
getAfterHourMessage Obtenez le message pour la déviation en dehors des heures de travail.

runTrigger

Effectue une itération sur les déclencheurs proactifs configurés et appelle le rappel fourni pour tous ceux dont les conditions sont remplies (mots clés d'URL, nombre de visites de la page, durée de séjour, type de visiteur).

Signature de la méthode

runTrigger(cb: (trigger: TriggerItem) => void): Promise<void>

Interfaces

interface TriggerItem {
 id: number;
 menu_id: number;
 messages: TriggerMessage[];
 keywords_included?: string[];
 keywords_included_or?: string[][];
 keywords_excluded?: string[];
 keywords_excluded_or?: string[][];
 lang?: string;
 page_visit_count: number;
 stay_time: number;
 visitor_type: string;
}
interface TriggerMessage {
 lang: string;
 text: string;
}

Exemple d'utilisation

await client.runTrigger((trigger: TriggerItem) => {
 // code to run for given trigger
})

getAfterHourMessage

Renvoie le message de redirection configuré à afficher lorsque le canal demandé est en dehors des horaires d'ouverture.

Signature de la méthode

La signature de la méthode est la suivante :

getAfterHourMessage(lang?: string): Promise<string>

Valeur renvoyée

Renvoie une chaîne contenant un message configuré.

Exemple d'utilisation

try {
 const message: string = await client.getAfterHourMessage()
} catch (error) {
 // handle error
}