Pular para o conteúdo

Gravação

Toda chamada pode ser gravada — automaticamente ou via botão REC manual. Retenção padrão 30 dias. Cliente nunca vê que está sendo gravado durante a chamada (só viu o termo no início). Acesso via detalhe do agendamento ou histórico geral.

5 minAtualizado em 06/05/2026

A gravação é uma feature exclusiva do dono — você grava, você assiste, você baixa. Cliente nunca tem acesso à gravação ou ao link dela. Retenção padrão: 30 dias após o encerramento da chamada.

⚠️ Pra gravar legalmente, o cliente precisa ter aceitado o termo de consentimento na FASE 2.5 da jornada dele (ver Configuração global de vídeo pra detalhes do termo).

2 modos de gravar

Modo 1 — Auto-start

Configurar em Configurações → Vídeo atendimento → toggle "Gravação automática" = ON.

Quando você entra na sala, gravação começa assim que o callObject conecta. Sem clique, sem decisão. Útil pra:

  • Médico/terapeuta que quer registro de TODOS os atendimentos
  • Advogado com obrigação de manter ata da consulta
  • Aulas que precisam ser sempre arquivadas

Modo 2 — Manual via botão REC

Mesmo com auto-start desligado, você pode iniciar gravação a qualquer momento clicando o botão REC na ControlBar (atalho R) — apenas dono vê esse botão.

  • Click 1: começa a gravar (badge REC pulsante aparece no header)
  • Click 2: para de gravar (badge some)
  • Pode iniciar/parar quantas vezes quiser na mesma chamada
  • Cada segmento gravado vira um arquivo separado no Daily

Útil pra:

  • Decidir gravar só uma parte específica (ex: cliente concorda em registrar quando o assunto fica formal)
  • Esquecer de ligar auto-start mas mudar de ideia no meio
  • Pausar gravação durante uma "pausa pessoal" do cliente

Cliente nunca vê o REC

Privacidade total (RN-V02 + RN-V06):

  • Cliente não vê o botão REC (não existe na ControlBar dele)
  • Cliente não vê o badge REC pulsante (filtrado no render)
  • Cliente recebeu o termo no início da jornada (FASE 2.5) — esse é o aviso prévio. Durante a chamada, sem feedback visual

Se você tem auto-start desligado e o cliente diz "não quero ser gravado" no meio da chamada, simplesmente não clique REC. Ou se já estava gravando, click pra parar — sem precisar explicar pra ele.

Onde acessar a gravação

A gravação demora ~30 segundos pra ficar disponível depois do encerramento (Daily processa o arquivo). Depois aparece em dois lugares:

1. No detalhe do agendamento (/agenda → click no card)

Bloco "Gravação" com:

  • Botão ▶ Assistir (abre PlayerModal completo)
  • Botão ⬇ Baixar MP4 (download direto)
  • Countdown: "Expira em XX dias" (cor verde > 14d, amarela 7-14d, laranja 3-7d, vermelha ≤3d)

2. Histórico geral (/configuracoes/video/historico)

Lista cronológica de TODAS as gravações:

  • Filtros: Disponíveis / Expirando ≤7d / Expiradas / Todas
  • Busca por cliente ou agenda (debounce 300ms)
  • Click numa linha → abre o mesmo PlayerModal

Player completo

O PlayerModal abre quando você clica "Assistir". Recursos:

  • ⏯️ Play/pause (Space ou K)
  • ⏭️ Seek: progress bar scrubbable com hover preview de tempo
  • 🖼️ Picture-in-Picture (PiP nativo do navegador — F)
  • 🖥️ Fullscreen com auto-hide de controles + dica "Esc para sair"
  • Velocidade 0.5x / 1x / 1.5x / 2x
  • 💬 Captions (transcrição como legenda) — toggle via botão CC ou tecla C
  • ⌨️ Atalhos: Space/K play, F fullscreen, M mute, J/L -10s/+10s, ←/→ -5s/+5s, ↑/↓ volume, C captions

Sync transcrição ↔ vídeo ↔ sentimento

Ao lado do player (desktop) ou abaixo (mobile):

  • Lista de transcrição clicável — click num trecho pula o vídeo pra esse momento
  • Timeline de sentimento — barra horizontal com cores por minuto (positivo verde, neutro cinza, preocupado laranja, etc) — hover mostra contexto, click pula

Retenção 30 dias (padrão)

Por default, a gravação fica 30 dias disponível. Após esse prazo:

Antes de expirarDepois de expirar
✅ Vídeo MP4 acessível❌ Vídeo removido do storage Daily
✅ Player funciona❌ Player não abre mais
✅ Botão Baixar funciona❌ Botão Baixar some
✅ Transcrição visível inline✅ Transcrição preservada (texto sobrevive)
✅ Resumo IA visível✅ Resumo IA preservado
✅ Histórico da chamada visível✅ Histórico preservado

Útil saber: o que importa legalmente (transcrição + resumo) fica preservado. Só o vídeo MP4 propriamente dito é removido pra liberar storage.

Ajustar retenção

Em Configurações → Vídeo atendimento → campo "Retenção da gravação":

  • 7 dias
  • 30 dias (padrão)
  • 60 dias
  • 90 dias

Não há opção "infinito" — Daily.co cobra storage e a Kontato controla isso pra você. Pra arquivo permanente, baixe o MP4 antes de expirar.

Como baixar (arquivo permanente)

  1. Vá no detalhe do agendamento ou histórico
  2. Click ⬇ Baixar MP4
  3. Navegador faz download (mesma URL que o player usa, sem CORS)
  4. Salve onde quiser (Drive, NAS, HD externo)

URL da gravação expira em 1 hora (assinada pela AWS S3 onde Daily hospeda). Se você abrir o link antigo depois de 1h, dá 403. Por isso o sistema regenera o link a cada acesso.

Endpoint "reprocessar" — recovery one-shot

Se uma gravação ficar órfã (existe no Daily mas o link não foi salvo na Kontato), há um endpoint pra reprocessar manualmente:

POST /api/video/sessao/{sessaoId}/reprocessar

(Requer auth de dono do negócio. Implementado em v0.27.32)

Faz:

  1. Busca a gravação no Daily REST
  2. Regenera URL assinada
  3. Salva em video_sessoes.gravacao_url
  4. Dispara transcrição Whisper + resumo IA em background

Use quando o card mostra "Processando gravação..." infinito (não acontece mais hoje, mas existe se precisar).

Causas históricas de "Processando..." infinito (corrigidas)

Em v0.27.30 corrigimos 2 causas raiz que faziam gravação ficar órfã:

  1. gravacao_ativa=false no DB: quando dono iniciava gravação manualmente, o flag não era atualizado. Cron de polling filtrava gravacao_ativa=true e ignorava a sessão. Fix: endpoint marcar-gravando chamado pelo RecordingControl quando isRecording vira true (idempotente)

  2. Bug no select do cron: relationship inválido negocio_video_config(retencao_gravacao_dias) sem FK declarado fazia supabase-js retornar undefined silenciosamente. Fix: removido o relationship (não era usado de qualquer forma; retenção é hardcoded 30d no cron)

Hoje, gravação aparece em ~30s após encerramento. Se demorar mais que 5 minutos, há problema técnico — abra ticket no suporte da Kira com o ID do agendamento.

Combinando com transcrição e sentimento

A gravação é a fonte das outras 3 features:

  • Transcrição (Whisper) — só funciona em chamadas que foram gravadas
  • Resumo IA (OpenRouter) — gerado em cima da transcrição
  • Sentimento real-time — capturado AO VIVO durante a chamada (não depende da gravação), mas a timeline persiste e é mostrada no replay

Se você não grava, transcrição e resumo não acontecem. Sentimento ao vivo continua funcionando.

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