VolundOS

Fila de mensagens por conversa

Mandar mensagem com o agente ocupado é recusado por padrão, mas dá para enfileirar de forma explícita: ela é enviada automaticamente quando ele terminar.

Atualizado em 10 de agosto de 2026

Fila de mensagens por conversa

Recusa e fila não são contraditórias

Mandar mensagem enquanto o agente trabalha: a plataforma recusa ou enfileira? As duas coisas — e não é contradição. Enviar uma mensagem nova durante uma execução em andamento é recusado por padrão, sem gravar nada; enfileirar é uma ação explícita e opcional, disponível pelo botão "Enfileirar" na conversa ou por um caminho programático.

A mensagem só é gravada depois que a conversa garante o turno para ela — isso evita que duas tentativas concorrentes de enviar a mesma mensagem (aba antiga reaberta, duplo envio, atraso de rede) gravem a mensagem duas vezes, ou deixem no histórico uma mensagem que nunca seria processada.

Camada funcional

Quando o agente está ocupado, dá para deixar a próxima mensagem na fila. Ela é enviada automaticamente quando ele terminar, na ordem em que entrou. Enquanto espera, o item pode ser editado ou cancelado.

Quem pode enfileirar

Pelo painel, o caminho é o botão na conversa. Programaticamente, também dá para enfileirar por API, por delegação entre agentes ou por gatilho — sempre como escolha explícita de quem chama; o enfileiramento em si não verifica se a conversa está ocupada.

Como o despacho funciona

O próximo item da fila é despachado assim que a conversa termina o turno atual, e também logo depois de um novo enfileiramento, caso a conversa já esteja livre nesse momento.

  1. Só age se a conversa estiver livre. A fila fica congelada enquanto a conversa está trabalhando, esperando aprovação ou esperando uma credencial — mensagem enfileirada não atropela uma aprovação pendente.
  2. Pega o item pendente mais antigo, na ordem exata em que entrou (fila FIFO).
  3. Reserva a conversa e o item de forma atômica, para que duas tentativas de despacho simultâneas nunca rodem o mesmo item nem processem duas mensagens ao mesmo tempo.
  4. Grava a mensagem do usuário e dispara a execução pelo mesmo caminho de uma mensagem enviada normalmente pela conversa.

Ao terminar essa execução, o próximo item da fila é despachado da mesma forma — a fila se encadeia sozinha, sem depender de um processo dedicado rodando em segundo plano.

Capacidades preservadas

A mensagem enfileirada roda com o mesmo conjunto de ferramentas que teria se fosse enviada na hora: a fila preserva as capacidades do canal original (painel, delegação entre agentes, gatilho ou API). Sem isso, enfileirar mudaria silenciosamente o que o agente pode fazer.

Onde fazer isso

  • Ver os itens pendentes na fila de uma conversa: painel e API.
  • Enfileirar uma mensagem: botão "Enfileirar" no painel, ou API.
  • Editar o texto de um item ainda pendente: painel e API.
  • Cancelar um item pendente: painel e API.

Cada item guardado na fila registra a conversa, o agente, o conteúdo da mensagem, os anexos, quem a enfileirou, de onde veio o pedido, o status e a posição na fila.

Rodapé de uma conversa com o agente trabalhando: uma mensagem na fila logo acima do campo de escrita, com o texto do que vai ser enviado e o X que cancela o item

Limites e modos de falha conhecidos

  • Mensagem vazia é rejeitada: sem texto e sem anexo não entra na fila.
  • Corrida com o despacho na edição: se o item for despachado exatamente no meio de uma tentativa de editá-lo, a edição não encontra mais o item para atualizar. Editar um item da fila é uma janela de oportunidade, não uma garantia.
  • Só funciona no motor de execução atual. Um agente ainda no motor de execução anterior deixa o item na fila sem despachar.
  • A fila ficar congelada enquanto a conversa espera uma aprovação ou uma credencial é comportamento desejado — mas também significa que um pedido de aprovação esquecido trava a fila inteira daquela conversa.

On this page