Eventi dell'SDK web headless

L'SDK web headless fornisce eventi a cui puoi rimanere in ascolto per gestire azioni o aggiornamenti specifici all'interno della tua applicazione. Puoi aggiungere e rimuovere i listener di eventi utilizzando i metodi .on e .off.

const handleReady = () => {
  console.log("**** client is ready")
}

client.on("ready", handleReady)

// client.off("ready", handleReady)

Eventi generali

Di seguito sono riportati gli eventi generali per l'SDK

ready

Viene generato quando il client è pronto per la comunicazione.

client.on("ready", () => {
})

authenticated

Viene generato quando il client ha eseguito l'autenticazione con il token dell'utente.

client.on("authenticated", () => {
})

Eventi di chat

Di seguito sono riportati gli eventi specifici della sessione di chat.

chat.ongoing

Viene generato quando è in corso una chat.

client.on("chat.ongoing", (chat) => {
  console.log(chat)
})

chat.updated

Viene generato quando l'istanza della chat è stata aggiornata.

client.on("chat.updated", (chat) => {
  // the `chat` property on `client` has updated
  console.log(chat)
})

chat.message

Viene generato quando è presente un nuovo messaggio.

client.on("chat.message", message => {
  console.log(message)
})

Il tipo di messaggio:

interface MessageResponse {
  $index: number;
  $sid: string;
  $timestamp: Date;
  $userType: string;
  $userId: number;
  type: string;
  content?: string;
  event?: string;
  file?: File;

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

chat.memberJoined

Viene generato quando un nuovo membro partecipa alla conversazione.

client.on("chat.memberJoined", (identity) => {
  console.log(identity)
})

chat.memberLeft

Viene generato quando un membro abbandona la conversazione.

client.on("chat.memberLeft", (identity) => {
  console.log(identity)
})

chat.connected

Viene generato quando la chat è connessa al provider di conversazioni.

client.on("chat.connected", () => {
  console.log("connected")
})

In rari casi, potrebbero verificarsi problemi di latenza che causano l'invio di un messaggio in una chat prima che l'SDK partecipi alla chat. In questo caso, puoi utilizzare fetchMessages per recuperare tutti i messaggi esistenti in una conversazione dopo che una chat è stata connessa. Consulta il seguente esempio di codice:

client.on("chat.connected", async () = {
  const messages = await
client.fetchMessages()
})

chat.disconnected

Viene generato quando la chat è disconnessa dal provider di conversazioni.

client.on("chat.disconnected", () => {
  console.log("disconnected")
})

chat.dismissed

Viene generato quando lo stato della chat viene modificato in dismissed.

client.on("chat.dismissed", () => {
  console.log("dismissed")
})

chat.timeout

Viene generato quando la chat è terminata, con il motivo timeout.

client.on("chat.timeout", () => {
  console.log("timeout")
})

chat.ended

Viene generato quando la chat è terminata.

client.on("chat.ended", () => {
  console.log("ended")
})

chat.destroyed

Viene generato quando viene chiamato destroyChat.

client.on("chat.destroyed", () => {
  console.log("destroyed")
})

chat.checkInRequested

Viene generato quando è possibile eseguire il check-in della chat.

chat.checkInTimedOut

Viene generato quando il check-in della chat è scaduto.

Eventi di digitazione

Quando un agente inizia a digitare, l'adattatore della chat invia un segnale che comporta l'invio dell'evento typingStarted all'SDK web headless. Quando l'agente smette di digitare, viene inviato un segnale dopo tre secondi che comporta l'invio di un evento typingEnded all'SDK web headless. Il timeout di tre secondi non è configurabile.

chat.typingStarted

Viene generato quando un membro inizia a digitare.

client.on("chat.typingStarted", (identity) => {
  console.log(identity)
})

chat.typingEnded

Viene generato quando un membro smette di digitare.

client.on("chat.typingEnded", (identity) => {
  console.log(identity)
})

Eventi di check-in della chat

Di seguito sono riportati gli eventi di check-in della chat.

checkIn

Conferma la presenza dell'utente finale in coda.

Firma del metodo

checkIn(): Promise<CheckInResponse>

Valore restituito

Restituisce un oggetto CheckInResponse.

Interfacce

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',
}

Esempio

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

exitCheckIn

Rimuove l'utente dalla coda di check-in.

Firma del metodo

exitCheckIn(): Promise<CheckInResponse>

Valore restituito

Restituisce un oggetto CheckInResponse.

Interfacce

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',
}

notifyCheckInState

Notifica al backend lo stato di visibilità della finestra di dialogo di check-in.

Firma del metodo

notifyCheckInState(data: CheckInVisibilityStateRequest): Promise<void>

Interfacce

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

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

rejoinChat

Riporta l'utente in coda dopo che non è stato possibile confermare il check-in.

Firma del metodo

rejoinChat(): Promise<CheckInResponse>

Valore restituito

Restituisce un oggetto CheckInResponse.

Interfacce

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',
}

Esempio

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

trackCheckInEvent

Segnala al backend quando gli eventi di check-in sono stati attivati dall'interfaccia utente. Viene utilizzato quando la finestra di dialogo di check-in è stata mostrata all'utente finale.

Firma del metodo

trackCheckInEvent(): Promise<void>

Esempio

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

Eventi di navigazione condivisa

Di seguito sono riportati gli eventi specifici della navigazione condivisa:

cobrowse.request

Viene generato quando un utente finale o un agente richiede di avviare una sessione di navigazione condivisa.

client.on("cobrowse.request", { from } => {
  console.log("request by", from)
})

cobrowse.loaded

Viene generato quando viene caricata una sessione di navigazione condivisa.

client.on("cobrowse.loaded", session => {
  console.log("cobrowse session", session)
})

cobrowse.updated

Viene generato quando una sessione di navigazione condivisa viene aggiornata.

client.on("cobrowse.updated", session => {
  console.log("cobrowse session", session)
})

cobrowse.ended

Viene generato quando una sessione di navigazione condivisa viene terminata.

client.on("cobrowse.ended", session => {
  console.log("cobrowse session", session)
})