Bot com Chrome anonimo no Docker gravou 1.170 reunioes e entrega resumos em 4,6 minutos
Um autor do Habr criou um bot interno para reunioes como alternativa ao Copilot. Em quatro meses, ele gravou cerca de 1.170 reunioes e 920 horas de fala de 93 organizadores. A mediana entre o fim da gravacao e a entrega de um resumo com tarefas e de 4,6 minutos. O reconhecimento e a diarizacao rodam em servidores proprios, e o audio nao sai do perimetro da empresa. Ha dois fluxos: um bot instalado na equipe para reunioes de canal do Teams e um Chrome anonimo em um container para todo o resto.
Processado por IA de Habr AI; editado por Hamidun News
Os acordos feitos em uma reuniao costumam durar exatamente ate a reuniao seguinte. Ninguem registra uma ata e, uma semana depois, os participantes se lembram de cerca de 10% do que foi dito. O segundo problema e mais recente: a empresa usa agentes de IA, mas eles so conhecem o que foi registrado e indexado. Tudo o que foi decidido por voz simplesmente nao existe para eles. O autor do artigo no Habr decidiu fechar as duas lacunas com um assistente de reunioes proprio e apresentou numeros de producao.
Por que nao usar o Copilot ou a transcricao nativa
O Copilot funciona apenas para quem tem uma assinatura, o que inviabiliza a automacao para todas as equipes sem intervencao manual. Ele tambem nao cobre tenants externos, Telemost, MTS Link ou TrueConf. Alem disso, a empresa queria processar em servidores proprios o audio das reunioes com clientes.
A transcricao nativa do Teams em russo tambem nao atendeu as expectativas do autor. Nas mesmas reunioes, ela produziu 26–37 palavras por minuto, enquanto o ritmo normal de uma conversa profissional fica perto de 100 e o pipeline do autor entregou 99–108. O Teams tambem escreve termos tecnicos de forma fonetica: representa “add button” como “ed batton.” A amostra e pequena, e o autor reconhece que a comparacao serve como referencia, nao como benchmark.
Dois fluxos em vez de um
Uma solucao universal nao foi possivel porque existem dois tipos de reuniao no Teams.
As reunioes de canal —dailies, planejamentos e retrospectivas— sao gravadas automaticamente por politica e armazenadas no SharePoint. Elas nao tem um chat de grupo convencional: a conversa fica em uma thread sob a publicacao raiz do canal, e convidados anonimos nao podem acessa-la. Por isso, um bot e instalado na equipe. Ele le o canal e captura o evento de servico CallRecording com status Success. Em seguida, baixa o MP4, converte-o em WAV de 16 kHz, envia o arquivo para reconhecimento e publica o resumo na thread da reuniao. Isso exige a permissao RSC ChannelMessage.Read.Group, concedida pelo proprietario da equipe sem que um administrador precise liberar acesso para todo o tenant.
Todas as outras reunioes ficam a cargo do “Assistente de Reunioes.” Ele e adicionado ao convite como um participante comum e, no inicio da reuniao, um Chrome anonimo rodando no Docker entra na chamada. A gravacao ocorre somente com consentimento explicito: se o assistente foi convidado e admitido, ele grava; caso contrario, nao. Os fluxos sao fisicamente separados, com registros, aplicativos e permissoes proprios, de modo que o vazamento da chave de um nao compromete o outro.
Armadilhas que vale a pena lembrar
Condicao de corrida na gravacao. Inicialmente, o estado era armazenado em arquivos JSON e, na primeira semana, o listener e um cron de contingencia enviaram a mesma gravacao duas vezes. A solucao foi usar Postgres com INSERT … ON CONFLICT DO NOTHING e SELECT … FOR UPDATE; a operacao claim retorna um de quatro modos: new, retake, attach ou skip.
Becos sem saida com transcricoes. A permissao RSC ChannelMeetingTranscript.Read.Group retornava 403, o SharePoint nao aceitava um token app-only sem certificado e o endpoint onlineMeetings/transcripts da Graph exige uma application access policy para o organizador. Por isso, a base do pipeline passou a ser o MP4 com reconhecimento proprio, enquanto o VTT do Teams funciona como fonte auxiliar.
Nomes dos participantes. O numero de falantes —a dica num_speakers— e os nomes sao extraidos do arquivo VTT. Depois, os segmentos sao associados aos clusters de diarizacao pelo atraso temporal. Em tres reunioes verificadas manualmente, 94–99% dos segmentos receberam o nome correto. Qualquer falha vira “Anonimo”: uma fala atribuida a pessoa errada e pior do que uma fala anonima.
A Graph API tambem nao enxerga o calendario no Exchange on-prem, o que obrigou o uso do EWS. A sessao do publicador baseado em navegador expirava silenciosamente por causa de um cookie de sessao, e o detector de participante ativo capturava apenas um quarto da fala ate a implementacao trocar eventos por consultas de estado.
O que isso significa na pratica
Se voce esta construindo algo parecido, a conclusao e direta. Nao tente cobrir todas as plataformas com uma unica solucao: e mais barato atender reunioes de canal do Teams com um bot instalado na equipe e lidar com o restante por meio da presenca na conversa. Armazene o estado em um banco de dados com bloqueios, nao em arquivos. Adapte os prompts de resumo ao tipo de reuniao —daily, retrospectiva ou planejamento— e carregue-os a cada envio, para que possam ser alterados sem reinicializacao. Acima de tudo, as transcricoes indexadas pela plataforma dao aos agentes memoria das decisoes tomadas por voz. Essa e a base para agentes proativos.
Tambem existem limitacoes. O fluxo 1 nao oferece suporte a canais privados; em reunioes externas, alguem precisa admitir o bot a partir do lobby; e o proprio Teams tem bugs que podem fazer o bot parar de receber atualizacoes do canal (issue #11106 do msteams-docs). Alem disso, os numeros vem de uma unica empresa e nao foram verificados de forma independente, mas quatro meses em producao com 93 organizadores constituem um argumento convincente.
- 8 de nov. de 2026Anthropic acelera em 35% as respostas do Claude em conversas longas
- 8 de nov. de 2026Anthropic lança Message Threads: início da resposta 35% mais rápido em sessões longas
- 8 de nov. de 2026Microsoft e Berkeley lançam o TokenEconomizer: agentes de código ficam de 18% a 31% mais baratos
- 8 de nov. de 2026Microsoft corrigiu 1.411 vulnerabilidades em um mês: a IA encontra falhas mais rápido do que as pessoas conseguem corrigi-las
Perguntas frequentes sobre a notícia
Por que nao usar o Copilot ou a transcricao nativa?
O Copilot funciona apenas para quem tem uma assinatura, o que inviabiliza a automacao para todas as equipes sem intervencao manual. Ele tambem nao cobre tenants externos, Telemost, MTS Link ou TrueConf. Alem disso, a empresa queria processar em servidores proprios o audio das reunioes com clientes. A transcricao nativa do Teams em russo tambem nao atendeu as expectativas do autor.
O que se sabe sobre Dois fluxos em vez de um?
Uma solucao universal nao foi possivel porque existem dois tipos de reuniao no Teams. As reunioes de canal —dailies, planejamentos e retrospectivas— sao gravadas automaticamente por politica e armazenadas no SharePoint. Elas nao tem um chat de grupo convencional: a conversa fica em uma thread sob a publicacao raiz do canal, e convidados anonimos nao podem acessa-la. Por isso, um bot e instalado na equipe. Ele le o canal e captura o evento de servico CallRecording com status Success.
O que se sabe sobre Armadilhas que vale a pena lembrar?
Condicao de corrida na gravacao. Inicialmente, o estado era armazenado em arquivos JSON e, na primeira semana, o listener e um cron de contingencia enviaram a mesma gravacao duas vezes. A solucao foi usar Postgres com INSERT … ON CONFLICT DO NOTHING e SELECT … FOR UPDATE; a operacao claim retorna um de quatro modos: new, retake, attach ou skip. Becos sem saida com transcricoes.
Build & Ship Production AI Agents Without Boilerplate Code
Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.