Pular para o conteúdo

Tempo da sessão e avisos de fim

Como a Kontato gerencia o tempo da chamada: avisos em 3 marcos (5min, 1min, 15s), sincronizados em real-time com a hora_fim do agendamento. Trial 15min cumulativos. Lobby NÃO consome tempo.

5 minAtualizado em 06/05/2026

A sala de vídeo da Kontato tem gestão de tempo automática baseada na hora_fim do agendamento. Você não precisa cronometrar nada — o sistema avisa nos momentos certos e (em alguns cenários) encerra automaticamente.

Os 3 marcos de aviso

A partir do momento que você entra na sala, o sistema agenda 3 toasts/banners conforme a hora_fim do agendamento:

QuandoComponente visualCorDuração
5 minutos antesToast top-right🟡 Amarelo8 segundos
1 minuto antesToast top-right🟠 Laranja8 segundos
15 segundos antesBanner fixo no topo🔴 Vermelho pulsanteaté zerar

O que cada um diz

  • T-5min (amarelo): "A chamada termina em 5 minutos." — relax, dá tempo de fechar tópico
  • T-1min (laranja): "A chamada termina em 1 minuto." — alerta, hora de despedir
  • T-15s (vermelho banner): "Encerrando em 15… 14… 13…" — countdown ao vivo, banner não some até 00

Quem vê?

Ambos dono e cliente veem todos os toasts (isOwner é apenas pra renderizar controles inline de extensão que ficam dentro do toast — só dono pode estender).

Estendendo a chamada

Quando aparece o toast T-5min ou T-1min, só o dono vê os botões inline:

  • +5 min
  • +10 min

Click → agendamentos.hora_fim é atualizado no banco → todos os clientes conectados (incluindo cliente remoto) recebem a nova hora_fim via Supabase Realtime → toasts são re-agendados automaticamente pra nova janela.

Sync em tempo real: cliente vê o aviso desaparecer e a chamada continuar normalmente quando o dono estende. Cliente NÃO vê quanto tempo a mais foi adicionado — só sabe que o aviso sumiu.

Lobby NÃO consome tempo

Tempo no lobby (cliente esperando autorização do dono) não conta pra nenhum cronômetro:

  • ❌ Não conta pro trial (15min cumulativos do negócio)
  • ❌ Não dispara toasts T-5min/T-1min (toasts só aparecem após joined-meeting)
  • ❌ Não conta no consumo do add-on (R$ 0,30/min)

Cronômetro começa do primeiro joined-meeting ao último leave-meeting.

Útil pra cenários onde o cliente entra cedo: ele pode esperar 10 minutos no lobby sem custo nem desperdício de trial.

Trial vs add-on — limites diferentes

Trial (15 min cumulativos por negócio)

  • Todo negócio tem 15 minutos gratuitos cumulativos de vídeo (TRIAL_LIMITE_SEGUNDOS = 900)
  • Soma TODAS as sessões — não é por chamada
  • Quando atinge 15min totais, a próxima chamada NÃO conecta (mostra TrialEsgotadoView com CTA pra ativar add-on)
  • Se o trial esgota mid-call (ex: tinha 14min42s cumulativos, entra numa chamada e ao chegar em 18s totais bate 15min), a sessão é encerrada automaticamente — substitui a tela da PesquisaQualidade por TrialEsgotadoView

Add-on de vídeo (R$ 0,30/min pós-pago)

  • Sem limite individual de chamada — você pode ter chamada de 3 horas se quiser
  • Cobrança pós-paga: cada chamada vira um item na fatura mensal
  • Arredondado pra cima por minuto fracionado (chamada de 1m30s = 2min cobrados)
  • Toasts T-5min/T-1min/T-15s continuam funcionando (baseados na hora_fim do agendamento, não no add-on)

E se a chamada estourar a hora_fim?

A hora_fim do agendamento não força encerramento automaticamente. A Kontato apenas:

  1. Mostra o banner T-15s pulsante até zerar
  2. Banner zerado → continua no overlay mostrando Encerrando em 0…
  3. NÃO desconecta a sala automaticamente — quem encerra é dono ou cliente clicando "Sair"

Decisão de design: queremos que dono tenha controle final mesmo se chamada estourou — pra fechar com elegância em vez de cortar abruptamente.

Se add-on está ativo e a chamada vai até as 14:35 mesmo com hora_fim=14:30, os 5 minutos extras são cobrados normalmente no add-on.

Edge cases

Relógio do cliente vs servidor

O cálculo do tempo restante usa Date.now() do navegador do user. Se o relógio do user está descalibrado (ex: 5 minutos atrasado), os toasts saem 5 minutos atrasados pra ele.

Em prática isso é raro — celulares modernos sincronizam NTP. Mas vale lembrar em PCs corporativos sem sync.

Chamada cai e volta

Se o cliente perde conexão (banda ruim) e volta:

  • useTempoSessao re-monta no remount
  • agendamentos.hora_fim atual via Realtime
  • Re-agenda os 3 toasts conforme tempo restante
  • Se o user voltou DEPOIS do T-5min mas antes do T-1min → toast T-5min não aparece (já passou); T-1min vai aparecer normal

Múltiplas extensões

Dono clica "+5min" 3 vezes seguidas → hora_fim atualiza 3 vezes → toasts re-agendam 3 vezes. Sem bug — sistema lida com cada update individualmente.

Hora_fim mal-formada

Em casos raros (DB corrompido, edge case), se hora_fim vem como string inválida, o hook usa fallback +1h a partir de agora — chamada não trava, toasts ainda funcionam (com horário aproximado).

Cliente vê o contador?

NÃO. Não há cronômetro HH:MM:SS persistente na sala (decisão de design — cronômetro causa ansiedade). Cliente só vê:

  • Os mesmos toasts que o dono vê
  • O banner T-15s pulsante
  • O horário de fim previsto no header (ex: "Atendimento até 14:30") — atualiza em real-time se dono estender

Customização (futuro, não MVP)

Hoje os 3 marcos (5min, 1min, 15s) são fixos. Roadmap futuro pode incluir:

  • Dono escolher os marcos (ex: T-10min em vez de T-5min)
  • Aviso só visual sem som vs com bipe sonoro
  • Auto-encerramento ao bater hora_fim (opt-in)

Por enquanto, padrão fixo serve 95% dos casos sem complexidade adicional.

Próximos artigos

Esse artigo foi útil?

Ainda não usa a Kontato?

Trial grátis · sem cartão de crédito · cancele quando quiser.

Criar conta grátis