Softphone WebRTC Integrado ao Helpdesk (Zendesk)

← voltar ao portfólio

08/2026 – atual · em andamento

Softphone WebRTC que vive dentro do ticket do helpdesk. O atendente disca, atende, transfere e grava sem sair da tela em que já está — e a própria chamada produz o registro: cliente identificado, ticket vinculado, gravação anexada, transcrição e resumo por IA.

JavaScriptZendesk Apps Framework 2.0WebRTCNode.jsWebSocketElectronDocker

O problema

Num atendimento por telefone o operador trabalha em duas telas: o discador de um lado, o helpdesk do outro. Ele atende, ouve o nome do cliente, procura o cadastro à mão, abre o ticket, e no fim digita de memória o que aconteceu. O registro acaba sendo a versão que o operador lembrou — não a que aconteceu.

O que o software faz

Telefonia completa no navegador. Discar com teclado e histórico clicável, atender, recusar, mudo, espera, teclado numérico durante a chamada, transferência cega e assistida, e gravação sob demanda — condicionada à permissão do ramal na central.

Qualidade medida, não sentida. Perda de pacotes e jitter em quatro barras durante a conversa, registradas junto da chamada. Quando o cliente diz que “ficou ruim”, existe número.

O ticket se escreve sozinho. Identificação do cliente pelo telefone em três formatos, criação de contato e organização, vínculo com ticket existente ou criação de um novo, nota de início e de encerramento com status e durações, gravação anexada com player nativo, transcrição e resumo por IA.

Disponível antes do primeiro clique. O registro de telefonia sobe num processo em segundo plano assim que o helpdesk abre. Há eleição de dono entre as abas — o mesmo ramal nunca registra duas vezes — e uma trava que impede o registro quando o microfone está bloqueado.

Erros em português de gente. Vinte códigos de erro do SDK de voz traduzidos para causa e ação, no lugar do código numérico.

Três abordagens para o mesmo problema

Antes da primeira linha, inventariei três implementações de telefonia dentro de helpdesk, capacidade por capacidade — duas anteriores e a que construí.

Capacidade Painel que observa Softphone só no ticket Esta abordagem
Áudio no próprio navegador ❌ discador externo
Funciona sem ticket aberto
Eventos da central em tempo real
Cliente na tela antes do “alô” 🟡
Teclado numérico na chamada
Transferência assistida
Gravação por permissão do ramal
Qualidade medida na tela
Registro antes do primeiro clique
Transcrição e resumo por IA

A tabela decidiu a arquitetura: não trocar uma metade pela outra. O painel que observa já fazia bem a parte de registro; faltava voz. A escolha foi costurar a voz dentro dele — e a lista de capacidades perdidas no caminho ficou vazia.

Como foi construído

Um código, três casas. O mesmo frontend roda embutido no helpdesk, direto no navegador e como aplicativo de mesa. Ele detecta o ambiente sozinho e esconde os controles que não fazem sentido em cada um.

Casca fina. O aplicativo instalado tem 44 KB e não contém a lógica: carrega a aplicação do backend em tempo de execução. Melhoria nova chega ao atendente com um F5 — sem reinstalar e sem passar pelo painel de administração.

Duas fontes de verdade, com fronteira escrita. O SDK de voz manda enquanto a chamada vive; a API da central manda depois que ela termina. Uma camada de correlação costura as duas por número e janela de tempo, com rede de segurança: sem o registro oficial em 45 segundos, a nota sai com os números do navegador — declarando a origem.

O softphone embutido no painel lateral do ticket, dentro do helpdesk
O softphone embutido no painel lateral do ticket: o atendente não troca de janela para falar com o cliente
Primeiro acesso: o softphone pede o ramal do atendente
Primeiro acesso: o atendente informa o ramal uma única vez e o backend valida a permissão dele na central

As telas do discador

Discador com teclado, histórico e ramal registrado
Discador: teclado, histórico e ramal registrado
Chamada entrante com atender e recusar
Chamada entrante: atender ou recusar
Em conversa, com cronômetro, gravação e qualidade
Em conversa: cronômetro, gravação e qualidade medida
Chamada em espera
Em espera
Teclado numérico durante a chamada
Teclado numérico durante a chamada
Transferência cega e assistida
Transferência cega e assistida
Erro traduzido para linguagem do operador
Erro traduzido: o operador lê a causa, não o código

🔒 Código-fonte

Projeto sob acordo de confidencialidade com o cliente. As telas desta página estão descaracterizadas: marca, cores e dados de exemplo foram substituídos. Converso sobre a arquitetura e as decisões em detalhe a convite.

Carlos Alberto — carlosalberto4ti@gmail.com · +55 11 2615-2880