O SDK da Web headless fornece eventos que você pode detectar para lidar com ações ou atualizações específicas no seu aplicativo.
const handleReady = () => {
console.log("**** client is ready")
}
client.on("ready", handleReady)
// client.off("ready", handleReady)
Eventos gerais
Confira a seguir os eventos gerais do SDK
ready
Emitido quando o cliente está pronto para comunicação.
client.on("ready", () => {
})
authenticated
Emitido quando o cliente é autenticado com o token do usuário.
client.on("authenticated", () => {
})
Todos os eventos disponíveis
O SDK oferece vários eventos que você pode detectar para processar ações ou atualizações específicas no seu aplicativo.
É possível adicionar e remover listeners de eventos usando os métodos .on e .off.
const handleReady = () => {
console.log(" client is ready")
}
client.on("ready", handleReady)
// client.off("ready", handleReady)
Confira uma lista completa de todos os eventos disponíveis:
Eventos globais
| Nome do evento | Descrição |
|---|---|
ready |
Emitido quando o cliente está pronto para comunicação |
Eventos descontinuados
O SDK continua emitindo os eventos a seguir para compatibilidade com versões anteriores. Não as use em novas integrações.
| Nome do evento | Descrição | Orientação |
|---|---|---|
authenticated |
Emitido quando o cliente é autenticado com o token do usuário | Descontinuado e programado para remoção. As integrações atuais podem continuar recebendo o valor até a remoção. |
chat.connected |
Emitido quando o chat é conectado ao provedor. | Obsoleto. Use chat.connectedMessages, que também fornece o payload de mensagens inicial. |
Eventos do Chat
| Nome do evento | Descrição |
|---|---|
chat.ongoing |
Emitido quando há uma conversa em andamento. |
chat.updated |
Emitido quando a instância de chat é atualizada. |
chat.message |
Emitido quando há uma nova mensagem. |
chat.memberJoined |
Emitido quando um novo membro entra na conversa. |
chat.memberLeft |
Emitido quando um participante sai da conversa. |
chat.typingStarted |
Emitido quando um participante começa a digitar. |
chat.typingEnded |
Emitido quando um membro para de digitar. |
chat.connectedMessages |
Emitido quando o SDK é conectado a uma conversa com o provedor. |
chat.disconnected |
Emitido quando o chat é desconectado do provedor. |
chat.dismissed |
Emitido quando o status do chat é alterado para dismissed. |
chat.timeout |
Emitido quando o chat é encerrado devido a um "tempo limite". |
chat.ended |
Emitido quando o chat é encerrado. |
chat.destroyed |
Enviado quando destroyChat é chamado. |
chat.checkInRequested |
Emitido quando o chat pode ser verificado. |
chat.checkInTimedOut |
Emitido quando o tempo limite da confirmação do chat é atingido |
Eventos de navegação conjunta
| Nome do evento | Descrição |
|---|---|
cobrowse.request |
Emitido quando o usuário final ou o agente solicita a navegação conjunta |
cobrowse.loaded |
Emitido quando a sessão de navegação conjunta é carregada |
cobrowse.updated |
Emitido quando a sessão de navegação conjunta é atualizada |
cobrowse.ended |
Emitido quando a sessão de navegação conjunta é encerrada |
Exemplos de uso
client.on("ready", () => {
// Client is ready
})
client.on("chat.message", message => {
console.log(message)
})
client.on("chat.connectedMessages", async ({ chat, messages }) => {
// Handle chat and messages
})
client.on("cobrowse.request", ({ from }) => {
console.log("Cobrowse requested by", from)
})
Configuração de dados personalizados
A opção custom_data permite transmitir dados arbitrários de par de chave-valor para o SDK da Web.
Uso
É possível fornecer dados personalizados como um objeto (não assinado) ou uma string (assinada) ao criar uma conversa:
interface ChatRequest {
lang?: string;
trigger_id?: string;
ticket_id?: string;
email?: string;
greeting?: string;
cobrowsable?: boolean;
custom_data?: {
signed?: string;
unsigned?: Record<string, any>;
};
}
Exemplo
Veja o exemplo a seguir:
const custom_data = {
unsigned: {
version: {
label: 'Version',
value: '1.0.0'
}
},
signed: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // JWT or other signed payload
}
try {
const chat: Chat = await client.createChat(123, { custom_data })
} catch (error) {
// handle error
}
Transferência de chatbot externo
Em alguns casos, talvez você queira manter o histórico e as interações
de outros provedores de chat. Para isso, use o custom_data object.
Veja o exemplo a seguir:
cconst custom_data = {
unsigned: {
external_chat_transfer: {
greeting_override: "Please hold while we connect you with a human agent.",
agent: {
name: "Agent Name",
avatar: "https://ujet.s3.amazonaws.com/default-virtual-agent-avatar-1.png"
},
transcript: [
{
sender: "agent",
timestamp: "2021-03-15 12:00:00Z",
content: [
{
type: "text",
text: "Hello! How can I help you today?"
},
{
type: "buttons",
buttons: [
{
label: "Create New Order",
selected: false
},
{
label: "Check Order Status",
selected: true
},
{
label: "Check Account Balance",
selected: false
},
]
}
]
},
{
sender: "end_user",
timestamp: "2021-03-15 12:00:15Z",
content: [
{
type: "text",
text: "Check Order Status"
}
]
},
{
sender: "agent",
timestamp: "2021-03-15 12:00:16Z",
content: [
{
type: "text",
text: "I can help you with that, what's your order number?"
}
]
},
{
sender: "end_user",
timestamp: "2021-03-15 12:00:20Z",
content: [
{
type: "media",
media: {
type: "image",
url: "https://ujet.s3.amazonaws.com/default-virtual-agent-avatar-1.png"
}
}
]
}
]
}
},
signed: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // JWT or other signed payload
}
try {
const chat: Chat = await client.createChat(123, { custom_data })
} catch (error) {
// handle error
}