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.
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.
- 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.
- Pega o item pendente mais antigo, na ordem exata em que entrou (fila FIFO).
- 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.
- 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.
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.
Execução e interrupção
Enviar mensagem inicia uma execução. O passo a passo aparece ao vivo. Se o agente estiver ocupado ou esperando algo, a plataforma diz isso em vez de aceitar em silêncio…
Modelo da conversa (substituição por conversa)
Cada conversa pode rodar num modelo diferente do modelo padrão do agente, sem alterar a configuração do agente. Dá para escolher na criação da conversa ou trocar depois…