Eventos do SDK da Web sem interface gráfica

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
}