El SDK web sin encabezado proporciona eventos que puedes escuchar para controlar acciones o actualizaciones específicas dentro de tu aplicación. Puedes agregar y quitar objetos de escucha de eventos con los métodos .on y .off.
const handleReady = () => {
console.log("**** client is ready")
}
client.on("ready", handleReady)
// client.off("ready", handleReady)
Eventos generales
Los siguientes son eventos generales del SDK
ready
Se emite cuando el cliente está listo para la comunicación.
client.on("ready", () => {
})
authenticated
Se emite cuando el cliente se autenticó con el token del usuario.
client.on("authenticated", () => {
})
Eventos de chat
Los siguientes son eventos específicos de la sesión de chat.
chat.ongoing
Se emite cuando hay un chat en curso.
client.on("chat.ongoing", (chat) => {
console.log(chat)
})
chat.updated
Se emite cuando se actualiza la instancia de chat.
client.on("chat.updated", (chat) => {
// the `chat` property on `client` has updated
console.log(chat)
})
chat.message
Se emite cuando hay un mensaje nuevo.
client.on("chat.message", message => {
console.log(message)
})
Tipo de mensaje:
interface MessageResponse {
$index: number;
$sid: string;
$timestamp: Date;
$userType: string;
$userId: number;
type: string;
content?: string;
event?: string;
file?: File;
// extra parameters
}
chat.memberJoined
Se emite cuando un miembro nuevo se une a la conversación.
client.on("chat.memberJoined", (identity) => {
console.log(identity)
})
chat.memberLeft
Se emite cuando un miembro abandona la conversación.
client.on("chat.memberLeft", (identity) => {
console.log(identity)
})
chat.typingStarted
Se emite cuando un miembro comienza a escribir.
client.on("chat.typingStarted", (identity) => {
console.log(identity)
})
chat.typingEnded
Se emite cuando un miembro deja de escribir.
client.on("chat.typingEnded", (identity) => {
console.log(identity)
})
chat.connected
Se emite cuando el chat se conecta con el proveedor de conversaciones.
client.on("chat.connected", () => {
console.log("connected")
})
En casos excepcionales, puede haber problemas de latencia que provoquen que se envíe un mensaje en un chat antes de que el SDK se una a él. Cuando esto ocurre, puedes usar fetchMessages para obtener todos los mensajes existentes en una conversación después de que se conectó un chat. Consulta el siguiente código de ejemplo:
client.on("chat.connected", async () = {
const messages = await
client.fetchMessages()
})
chat.disconnected
Se emite cuando el chat se desconecta del proveedor de conversación.
client.on("chat.disconnected", () => {
console.log("disconnected")
})
chat.dismissed
Se emite cuando el estado del chat cambia a dismissed.
client.on("chat.dismissed", () => {
console.log("dismissed")
})
chat.timeout
Se emite cuando finaliza el chat, y el motivo es timeout.
client.on("chat.timeout", () => {
console.log("timeout")
})
chat.ended
Se emite cuando finaliza el chat.
client.on("chat.ended", () => {
console.log("ended")
})
chat.destroyed
Se emite cuando se llama a destroyChat.
client.on("chat.destroyed", () => {
console.log("destroyed")
})
Registro de chat
Los siguientes son eventos de registro de chat.
checkIn
Confirma la presencia del usuario final en la fila.
Firma del método
checkIn(): Promise<CheckInResponse>
Valor que se devuelve
Muestra un objeto 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',
}
Ejemplo
try {
const response = await client.checkIn()
} catch (error) {
// handle error
}
exitCheckIn
Quita al usuario de la fila de registro.
Firma del método
exitCheckIn(): Promise<CheckInResponse>
Valor que se devuelve
Muestra un objeto 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',
}
notifyCheckInState
Notifica al backend el estado de visibilidad del diálogo de confirmación.
Firma del método
notifyCheckInState(data: CheckInVisibilityStateRequest): Promise<void>
Interfaces
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
Coloca al usuario nuevamente en la fila después de que no se pudo confirmar el registro.
Firma del método
rejoinChat(): Promise<CheckInResponse>
Valor que se devuelve
Muestra un objeto 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',
}
Ejemplo
try {
const response = await client.rejoinChat()
} catch (error) {
// handle error
trackCheckInEvent
Envía indicadores al backend cuando la IU activa eventos de registro. Se usa cuando se muestra el diálogo de registro al usuario final.
Firma del método
trackCheckInEvent(): Promise<void>
Ejemplo
try {
await client.trackCheckInEvent()
} catch (error) {
// handle error
Eventos de exploración conjunta
Los siguientes son eventos específicos de la función de exploración conjunta:
cobrowse.request
Se emite cuando un usuario final o un agente solicitan iniciar una sesión de navegación conjunta.
client.on("cobrowse.request", { from } => {
console.log("request by", from)
})
cobrowse.loaded
Se emite cuando se carga una sesión de exploración conjunta.
client.on("cobrowse.loaded", session => {
console.log("cobrowse session", session)
})
cobrowse.updated
Se emite cuando se actualiza una sesión de navegación conjunta.
client.on("cobrowse.updated", session => {
console.log("cobrowse session", session)
})
cobrowse.ended
Se emite cuando finaliza una sesión de navegación conjunta.
client.on("cobrowse.ended", session => {
console.log("cobrowse session", session)
})