Eventos del SDK web sin interfaz gráfica

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