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)
})