Interaflow

Produto

Comunicação e softphone

Front-end dedicado ao Atendente: lista de Conversas, chat, info do contato e softphone integrado. Voz roda no navegador via WebRTC sobre a credencial automática do Atendente.

Atualizado em

O que é

A tela de Comunicação (também chamada de tela de atendimento) é a interface imersiva onde o Atendente humano executa o atendimento. Diferente do dashboard normal, ela ocupa a tela inteira (sem sidebar) e organiza tudo o que o Atendente precisa em três painéis:

┌─────────────────┬───────────────┬──────────────────────┐
│  Conversas      │     Chat      │  Info do Contato +   │
│  ativas + Grupos│               │  Discador / softphone│
└─────────────────┴───────────────┴──────────────────────┘

A tela cobre tanto texto (chat de Conversas e Grupos de WhatsApp) quanto voz (chamadas via softphone WebRTC), na mesma janela.

Painel de Conversas

O painel da esquerda lista o trabalho do Atendente em duas seções:

  • Conversas ativas — atribuídas a este Atendente, ordenadas por recência. A lista é atualizada por polling (5 s) e por WebSocket em tempo real (/api/v1/ws/agent) — quando uma Conversa é atribuída pela Fila, ela aparece imediatamente.
  • Grupos — grupos de WhatsApp dos quais o Atendente faz parte (quando aplicável). Ver Grupos de WhatsApp.

Selecionar uma Conversa ou um Grupo abre o painel central. As duas seleções são mutuamente exclusivas — escolher um Grupo limpa a Conversa selecionada e vice-versa.

Painel central — chat

Mostra a conversa selecionada com:

  • Histórico de mensagens — texto, mídia, sistema. Mídia (imagem, áudio, documento) abre em lightbox para visualização.
  • Composer — campo de texto para responder. Suporta:
    • Picker de Mensagens pré-prontas — busca por título ou atalho /cpf, /saudacao.
    • Anexar Material — abre a biblioteca de Materiais da Operação.
    • Enviar mídia — upload direto pelo composer.
  • Botão de transferir — abre diálogo para passar a Conversa para outro Atendente ou outra Fila (ver Transferências adiante).
  • Botão de encerrar — fecha a Conversa quando o atendimento estiver concluído.

Painel direito — info do contato + softphone

Combina três blocos:

  • Cadastro do contato — nome, telefone, e-mail, dados do mailing quando a Conversa veio de Campanha Outbound.
  • Discador — botão de discagem manual (quando o Atendente está vinculado a Campanha Outbound ativa) e painel de preview dialer (quando o modo da Campanha é preview).
  • Softphone — controles WebRTC para chamadas de voz.

Softphone WebRTC

O softphone é o cliente SIP embarcado no navegador. Funciona em cima da credencial de Voz do Atendente (criada automaticamente — ver Voz no perfil do usuário) e se conecta ao Asterisk via WebSocket seguro (WSS).

Status do softphone

StatusSignificado
disconnectedCliente não tentou ou não conseguiu se registrar.
connectingEm negociação com o servidor SIP.
registeredPronto para receber e fazer chamadas.
errorFalha de registro — credencial inválida, rede bloqueada, certificado.

Estados de chamada

CallStateSignificado
idleSem chamada ativa.
ringingChamada entrante tocando, aguardando atender.
in_callChamada em andamento.
on_holdChamada em espera.

Controles disponíveis

  • Atender uma chamada entrante.
  • Desligar.
  • Mute / unmute do microfone.
  • Hold / unhold — coloca a chamada em espera (toca música de espera para o outro lado se configurada).
  • Transferir — passa a chamada para outro número/ramal. Detalhes em Transferências.
  • DTMF — teclado para enviar dígitos durante a chamada (digitar opção de URA do parceiro, autenticar em sistemas externos).
  • Indicador de volume do microfone.

Como o softphone obtém credenciais

A senha SIP nunca é renderizada no DOM ou em logs. O fluxo:

  1. Ao abrir a tela, o cliente WebRTC pede o segredo de registro a um endpoint autenticado.
  2. O backend devolve o segredo cifrado in-memory para o cliente, regista o uso em audit log.
  3. O cliente registra-se no Asterisk via WSS.

A rotação é manual — admin clica “Regenerar senha” no perfil do User; a próxima conexão pega o novo segredo.

Discagem manual

O botão de discagem manual no painel direito abre um teclado e um campo de número. Ao clicar discar, a plataforma:

  1. Verifica se o Atendente tem ao menos uma Campanha Outbound ativa atribuída. Sem isso, o botão não aparece.
  2. Cria uma Conversa do tipo discar vinculada à Campanha (vide cascata D4 para escolher a rota de saída).
  3. Inicia a chamada via softphone WebRTC.

Sem Campanha Outbound atribuída, o Atendente não tem caller ID nem trunk para usar — discagem manual é desabilitada por desenho.

Preview dialer

Quando a Campanha Outbound é do modo preview, o painel direito exibe a ficha do contato antes de a chamada ser iniciada. Atendente:

  1. Vê os dados do contato (nome, motivo da chamada, histórico, dados do mailing).
  2. Decide entre discar agora ou pular (devolve o contato para a fila de discagem).
  3. Confirma a discagem; a chamada acontece via softphone WebRTC.

Os modos progressive, predictive e power discam sem ficha prévia; o Atendente recebe a chamada já conectada.

Transferências

O diálogo de transferência cobre:

  • Para outro Atendente específico.
  • Para outra Fila (a Conversa volta a queued, distribuída pela estratégia da Fila destino).
  • Para outro número externo (chamada de voz transferida via Asterisk).

Em chamadas de voz, a transferência pode ser fria (transfere e desliga) ou assistida (Atendente fala com o destinatário antes, depois conecta as pontas).

Status do Atendente

Toggle visível no topo da tela permite ao Atendente alternar entre:

  • Disponível — recebe distribuição de novas Conversas.
  • Pausa — não recebe novas; precisa selecionar motivo (almoço, banheiro, treinamento). A duração da pausa é registrada para o supervisor.
  • Offline — desconecta do registro de presença (e do softphone).

Requisitos técnicos

HTTPS obrigatório para WebRTC

A captura de microfone via getUserMedia() exige contexto seguro. Em produção isso é automático (HTTPS pelo CDN/proxy). Em desenvolvimento via LAN, lembre que npm run dev:https (ou equivalente) é necessário — localhost:3000 funciona, mas https://192.168.x.x:3000 é o caminho real para testar voz no celular ou em outra máquina.

Permissão de microfone

O navegador pede permissão na primeira abertura. Bloquear é equivalente a deixar o softphone sem entrada de áudio.

Rede

WebRTC usa DTLS-SRTP para criptografar mídia e ICE para contornar NAT. Redes corporativas com bloqueio agressivo de UDP podem precisar de TURN configurado — fale com a infra.

Boas práticas

  • Mantenha a Comunicação aberta durante o turno. É a tela desenhada para o trabalho do Atendente — o dashboard normal não recebe distribuição de Conversas.
  • Use o picker de Mensagens em vez de digitar tudo do zero. Reduz TMA e padroniza tom.
  • Atenção ao status. Sair sem mudar para “Pausa” ou “Offline” pode resultar em Conversas distribuídas para alguém que não está na cadeira.
  • Refaça a permissão de microfone se o softphone ficar mudo após uma atualização do navegador.

Limites conhecidos

  • WebRTC-only. Não há suporte primário para hardphone físico ou softphone de terceiro (D11). O softphone embarcado é o consumidor oficial das credenciais de Voz.
  • Conferência avançada com mais de 3 partes não está exposta na UI — encaminhe para conferência fora da plataforma quando necessário.
  • Sem integração nativa com headset multimídia (botões físicos de atender/desligar do headset). Use os botões da UI.

Erros comuns

  • Microfone bloqueado. Sem permissão, softphone fica mudo. Cheque o ícone de cadeado do navegador.
  • Status “error” após registro. Tipicamente: rede corporativa bloqueando WSS para o servidor de voz, ou credencial regenerada por admin. Reabra a tela após confirmar a credencial.
  • Botão de discagem manual sumido. Falta Campanha Outbound ativa atribuída ao Atendente.
  • HTTP em vez de HTTPS na LAN. Microfone não captura, softphone não registra. Sempre HTTPS para voz.

Ver também