Gatilho de inatividade

Saiba como configurar gatilhos de inatividade, com diretrizes sobre configuração, suporte de canal, limitações e solução de problemas.

Visão geral

O gatilho de inatividade, também chamado OnInactivity ou O usuário está inativo por algum tempo, é um gatilho do sistema em Copilot Studio que dispara automaticamente um tópico quando um usuário não envia nenhuma mensagem por uma duração especificada. Ele executa o lado do servidor, de modo que o agente avalia o temporizador e executa o tópico mesmo que o cliente do usuário esteja ocioso.

Os casos de uso comuns incluem:

  • Enviar um lembrete perguntando se o usuário ainda está lá
  • Libere a capacidade dos agentes fechando automaticamente conversas ociosas
  • Coletar comentários (por exemplo, uma pesquisa de satisfação do cliente) antes do término de uma sessão
  • Limpar o status de sessão para conversas abandonadas

Como funciona o gatilho de inatividade

Esta seção explica como Copilot Studio avalia gatilhos de inatividade, agenda temporizadores e executa tópicos quando uma conversa está ociosa.

Visão geral da arquitetura

  1. O usuário envia uma mensagem.

  2. O runtime avalia todos os gatilhos OnInactivity .

  3. Os grupos de runtime organizam os gatilhos por duração e selecionam um por camada de duração. O menor número de prioridade vence; a data de criação mais antiga desempata.

  4. O tempo de execução ordena os gatilhos selecionados por duração, do mais curto para o mais longo.

  5. O runtime arma um temporizador para o próximo gatilho em Barramento de Serviço do Azure. Apenas um temporizador está ativo por vez.

  6. O usuário está inativo pela duração configurada.

  7. O temporizador é acionado e o evento de inatividade é enviado para o runtime.

  8. O runtime corresponde e executa o tópico de inatividade.

  9. O runtime calcula o tempo restante para o próximo gatilho e arma um novo temporizador.

Principais comportamentos

  • O temporizador é reiniciado a cada mensagem do usuário.

    Sempre que um usuário envia uma mensagem, o sistema reavalia todos os gatilhos de inatividade e configura o próximo, priorizando o de menor duração. Apenas um temporizador está ativo a qualquer momento.

  • Há suporte para vários gatilhos.

    Você pode ter vários gatilhos OnInactivity em durações diferentes (por exemplo, 5 minutos e 10 minutos). O sistema os processa em ordem crescente de duração. Apenas um gatilho é selecionado por camada de duração. Se dois gatilhos tiverem a mesma duração, o gatilho com o número inferior Priority será acionado. Se ainda houver um empate, o gatilho criado anteriormente prevalecerá. O sistema descarta outros gatilhos com a mesma duração.

  • Os gatilhos são enfileirados, não paralelos.

    Apenas um temporizador está ativo por vez. Após a execução do gatilho atual, o runtime calcula o tempo restante para o próximo gatilho e define um novo temporizador para cobrir a diferença. O efeito líquido é que os gatilhos são acionados nos deslocamentos corretos em relação ao ponto de inatividade original, embora um pequeno desvio possa ocorrer se a execução do gatilho demorar um tempo significativo.

  • Execução em segundo plano.

    O evento de inatividade é um gatilho em segundo plano. Ele não requer a interação do usuário para ser acionado.

  • Gravação de transcrição.

    O sistema registra eventos de inatividade em transcrições de conversa. Um novo registro de transcrição é criado após 30 minutos de inatividade.

Linha do tempo de exemplo (vários gatilhos)

Hora Evento
0:00 O usuário envia a última mensagem
5:00 Disparador A (300 s) entra em ação, enviando um aviso.
10:00 Gatilho B (600 s) é acionado, finaliza a conversa

Se o usuário enviar uma mensagem às 4:30, ambos os temporizadores são redefinidos. O Gatilho A é acionado às 9:30, e o Gatilho B é acionado às 14:30.

Configurar o gatilho de inatividade

Esta seção mostra como Copilot Studio inicia, redefine e executa temporizadores de inatividade para que você possa prever o que acontece quando uma conversa fica ociosa.

Criar um tópico de disparador de inatividade

  1. Em Copilot Studio, vá para Topics>Adicionar um tópico>A partir do zero.

  2. Selecione a frase de gatilho. Em vez de uma frase, selecione "Após um período de inatividade".

  3. Defina a propriedade Duração de inatividade. No modo de entrada manual , escolha uma predefinição na lista suspensa (15 minutos, 30 minutos, 45 minutos ou 1 hora). Para inserir um valor personalizado em segundos ou uma fórmula do Power Fx (por exemplo, Global.TimeoutSeconds), alterne o seletor de modo para Fórmula e digite o valor diretamente.

  4. Projete o fluxo do tópico (envie uma mensagem, faça uma pergunta, encerre a conversa e assim por diante).

  5. Salve e publique seu agente.

Referência de duração

Tempo limite desejado Valor (segundos)
30 segundos 30
2 minutos 120
5 minutos 300
10 minutos 600
1 hora 3600

Importante

A propriedade usa segundos, não minutos ou milissegundos. Um valor de 60000 significa cerca de 16,7 horas, não 60 segundos.

Exemplo: gatilho de aviso único

[OnInactivity - 600 segundos]

Mensagem: "Você ainda está lá? Responda para continuar."

Tópico final

Exemplo: aviso de 5 minutos e fechamento automático de 10 minutos

Esse padrão é o mais comum. Crie dois tópicos de inatividade:

Tópico 1: Aviso de inatividade (5 minutos)

  • Gatilho: após um período de inatividade
  • durationInSeconds: 300
  • Ações: Enviar uma mensagem: "Você ainda está lá? Essa conversa será encerrada em 5 minutos se não houver resposta."

Tópico 2: Autoclose (10 minutos)

  • Gatilho: após um período de inatividade
  • durationInSeconds: 600
  • Actions:
    1. Set Global.DeactivateInactivity = true (variável de proteção – consulte As Práticas Recomendadas)
    2. Envie uma mensagem: "Esta conversa é encerrada devido à inatividade.".
    3. Encerrar a conversa

Exemplo: coleção de comentários

  • Gatilho: após um período de inatividade
  • duraçãoEmSegundos: 120
  • Actions:
    1. Pergunte: "Antes de ir, você classificaria sua experiência? (1-5)"
    2. Armazenar a resposta
    3. Encerrar a conversa

Adicionar uma condição ao gatilho

Adicione um nó condição logo após o gatilho para que ele seja executado apenas em determinadas situações:

  • Acione somente em um canal específico: =Activity.ChannelId = "msteams"
  • Acione somente se uma variável de proteção não estiver definida: =Global.DeactivateInactivity = false

Se você tiver vários gatilhos com nós Question, use um tópico compartilhado para evitar problemas de empilhamento de diálogos.

  1. Crie um tópico compartilhado chamado HandleInactivity:

    • Adicionar uma variável Global.InactivityStage global (Texto)
    • Verifique seu valor:
      • "warning" → enviar uma mensagem de aviso com um nó de pergunta ("Continuar?" / "Fim?")
      • "close" → Enviar uma mensagem de encerramento e encerrar conversa
  2. Primeiro gatilho OnInactivity (300 segundos):

    • Defina Global.InactivityStage = "warning"
    • Redirecionar para HandleInactivity
  3. Segundo disparador OnInactivity (600 segundos)

    • Defina Global.InactivityStage = "close"
    • Redirecionar para HandleInactivity

Essa abordagem impede que nós de pergunta empilham e criem loops de prompt.

Configuração específica do canal

Matriz de suporte de canal

Canal Nível de suporte Notes
Site de demonstração Suporte total Melhor canal para testar gatilhos de inatividade.
Site personalizado (Direct Line) Suporte total Funciona da mesma forma que o site de demonstração.
Equipes da Microsoft Supported Funciona, mas veja as diretrizes específicas do Teams na próxima seção. Os tokens de autenticação podem expirar durante longos períodos de inatividade.
Dynamics 365 Atendimento ao Cliente Suporte total Requer passos adicionais para fechar conversas do Dynamics 365 Customer Service. Saiba mais em configuração do Dynamics 365 Customer Service.
Microsoft 365 Copilot O gatilho é ativado, mas as mensagens não são entregues Esse cenário é uma limitação conhecida. O gatilho é executado no servidor, mas a interface do usuário do Microsoft 365 Copilot não exibe mensagens proativas dos agentes. Sem solução alternativa.
Painel de teste Sem suporte Esse cenário é por design. Os temporizadores estão desativados para a identificação do canal do Studio. Use o site de demonstração ou um canal publicado para testar.
DirectEngine Sem suporte Esse cenário é por design. Os temporizadores estão desabilitados para a ID do canal DirectEngine (ambiente de design/teste).
Telefonia/IVR Sem suporte Para canais de voz, utilize o gatilho OnSilence.

Configuração do Teams

O Teams usa um modelo de conversa única persistente. A conversa realmente nunca "termina" da perspectiva do Microsoft Teams. Esse modelo significa que os gatilhos de inatividade continuam reativando mesmo depois que o usuário considera a conversa concluída.

Padrão recomendado do Teams:

  1. Criar uma variável Global.IsConversationClosed global (booliano, padrão: false).

  2. No início do tópico de inatividade, verifique: If Global.IsConversationClosed = true → Tópico final (saia imediatamente).

  3. Quando a conversa terminar logicamente (o usuário diz "adeus", a satisfação do cliente é concluída e assim por diante), defina Global.IsConversationClosed = true.

  4. O gatilho de inatividade ainda pode ser acionado, mas ele sai imediatamente sem mostrar uma mensagem.

configuração de Dynamics 365 Customer Service

  • As conversas são encerradas automaticamente após 30 minutos de inatividade por padrão.
  • Chamar apenas o EndConversation não fecha a sessão do Dynamics 365 Customer Service. A capacidade do agente não é liberada.
  • Para fechar totalmente a conversa, configure a variável de contexto CloseOmnichannelConversation para true usando um fluxo do Power Automate e, em seguida, utilize um nó Transfer to Agent.

Limitações conhecidas

Referência rápida: o que pode interromper o temporizador de inatividade?

Recurso ou ação Efeito em temporizadores de inatividade
Encerrar a conversa Limpa permanentemente todos os temporizadores
O usuário envia uma mensagem Redefine todos os temporizadores para zero (por design)
Condição de gatilho com variável não inicializada Temporizador é silenciosamente ignorado - nunca é ativado.
Duração excede 7 dias (604.800 segundos) O temporizador é silenciosamente ignorado
Limpar variáveis globais em um tópico de inatividade o agente perde o contexto da conversa
Transferir para o representante de atendimento ao cliente O temporizador permanece ativo e pode ser acionado durante a conversa do representante do atendimento ao cliente

O painel de teste não dá suporte a gatilhos de inatividade

O painel de teste Copilot Studio não dispara gatilhos de inatividade. Essa limitação é por design. Publique seu agente e teste em um canal ao vivo (site de demonstração, Teams e assim por diante).

Microsoft 365 Copilot não exibe mensagens de inatividade

O gatilho executa no lado do servidor, mas qualquer resultado (mensagens, cartões) não é entregue ao usuário na experiência do Microsoft 365 Copilot. Não há nenhuma solução alternativa. Consulte as limitações conhecidas do Teams.

Orquestração de IA generativa

Os gatilhos de inatividade são implementados como gatilhos de tópico de orquestração clássica e usam um pipeline de eventos baseado em temporizador separado. Quando a orquestração de IA generativa é ativada, o roteamento de tópicos não depende mais do reconhecimento de gatilho clássico, portanto, os tópicos de inatividade podem não ser disparados de forma confiável em todas as configurações. Se o tratamento de inatividade for necessário, a orquestração clássica é a configuração recomendada e totalmente validada.

Agentes conectados: não há suporte para a inatividade do agente filho

Nas configurações de agente conectado, os gatilhos de inatividade em agentes filho não funcionam, retornando "Resposta inválida do agente conectado". Coloque toda a lógica de inatividade no agente pai.

Duração máxima: 7 dias (604.800 segundos)

Os bots publicados ignoram silenciosamente os gatilhos com durações superiores a 604.800 segundos. Nenhum erro é exibido. No modo de design, um erro pode aparecer. Não há um mínimo imposto – durações curtas (menos de 15 segundos) podem se comportar de forma imprevisível devido à latência da infraestrutura do temporizador.

A conversa final limpa os temporizadores de inatividade

Quando você chama Encerrar conversa em um tópico, o comando interrompe permanentemente todos os temporizadores de inatividade ativos para essa conversa. Os temporizadores são completamente apagados; eles não são redefinidos ou pausados. A operação descarta quaisquer eventos de inatividade pendentes que já estão agendados.

Se você quiser encerrar o fluxo de um tópico sem interromper os temporizadores de inatividade, use uma das ações alternativas:

Ação (em Copilot Studio) Efeito em temporizadores de inatividade
Encerrar a conversa Limpa todos os temporizadores; temporizadores param permanentemente
Encerrar tópico atual (EndDialog) Não afeta os temporizadores; os temporizadores continuam em execução
Cancelar todos os tópicos (CancelAllDialogs) Não afeta os temporizadores; os temporizadores continuam em execução

Dica

Se o tópico precisar fechar o fluxo atual, mas você ainda quiser que o temporizador de inatividade seja acionado mais tarde (por exemplo, um tópico de pesquisa do JIRA que é concluído, mas a conversa ainda deve expirar), use Encerrar tópico atual em vez de Encerrar conversa.

Usar uma variável de proteção para evitar o disparo repetido continua sendo uma prática defensiva recomendada.

Disparo ocorre após a escalada do agente

Depois que o sistema transfere uma conversa para um representante de atendimento ao cliente, o gatilho de inatividade permanecerá ativo. Ele pode disparar durante a conversa com o agente humano e enviar mensagens ao agente inesperadamente. Sempre chame EndConversation antes da transferência ou use uma variável de proteção.

Mensagens de gatilho podem aparecer em transcrições após o término da conversa

Mesmo após o fechamento de uma conversa, o gatilho ainda pode ser acionado e suas mensagens são gravadas na transcrição. Essa condição não afeta a experiência do usuário, mas pode aparecer na análise.

Telefone, voz e canais IVR

O gatilho de inatividade não está disponível para canais de telefone e voz. Em vez disso, use o gatilho OnSilence .

Configurações incorretas comuns

Use esta seção para identificar e corrigir problemas comuns de configuração que podem impedir que gatilhos de inatividade funcionem conforme o esperado.

Encerrar a conversa no tópico relacionado à inatividade (risco de loop)

Problema: Ao chamar Encerrar conversa em um tópico de inatividade, você limpa todos os temporizadores de inatividade. No entanto, em canais com conversas persistentes (especialmente o Teams), a conversa subjacente permanece ativa. Em algumas configurações, o gatilho ainda pode disparar novamente, causando mensagens repetidas de "sessão encerrada".

Solução (recomendada como prática defensiva): Use uma variável de proteção:

  1. Criar Global.DeactivateInactivity (booliano, padrão: false).

  2. Na parte superior de cada tópico de inatividade, adicione uma condição: somente prossiga se Global.DeactivateInactivity = false.

  3. Defina Global.DeactivateInactivity = trueantes de chamar EndConversation.

Note

O padrão de variável de proteção é especialmente importante para os canais do Teams, em que o modelo de conversa persistente significa que a conversa nunca termina verdadeiramente.

Duração configurada para o valor incorreto

Problema:durationInSeconds é em segundos. Um valor de 60000 é aproximadamente 16,7 horas, não 60 segundos.

Solução: Verifique os valores duas vezes na tabela de referência na Seção 3.

Nós de pergunta em múltiplos tópicos de inatividade (empilhamento de prompts)

Problema: Se múltiplos gatilhos tiverem um nó Question cada, o nó Question do segundo gatilho interrompe o primeiro. Quando o usuário responde, o primeiro nó Pergunta é reativado e solicitado novamente, criando um loop.

Solução: Use o padrão de tópico compartilhado. Consolide a lógica do nó Question em um único tópico ou verifique se apenas um gatilho tem um nó Question .

Limpar variáveis globais no tópico de inatividade

Problema: Se o tópico de inatividade limpar variáveis globais, o agente perderá todo o contexto da conversa e aparecerá sem resposta quando o usuário retornar.

Solução: Apenas redefinir variáveis específicas de inatividade, não todo o estado da conversa.

Não bloquear os gatilhos de inatividade no Teams

Problema: No Teams, o modelo de conversação persistente significa que os gatilhos são disparados indefinidamente. Os usuários recebem mensagens repetidas "você ainda está lá?" horas ou dias depois.

Solução: Sempre use o padrão de variável de controle para o Microsoft Teams.

Não chamar closeOmnichannelConversation

Problem: Para agentes Dynamics 365 Customer Service, chamar EndConversation sozinho não fecha a sessão de Dynamics 365 Customer Service. As conversas se acumulam na fila do agente.

Solução: Defina CloseOmnichannelConversation como true usando o Power Automate no seu tópico de inatividade.

Duração dinâmica de uma variável não inicializada

Problema: O uso de uma expressão power fx como =Environment.InactivityTimeout para a duração funciona, mas se a variável não for inicializada ou nula, o gatilho será excluído silenciosamente.

Solução: Verifique se todas as variáveis usadas em condições de gatilho e expressões de duração têm valores padrão válidos.

Esperando que os gatilhos funcionem após o escalonamento de agentes

Problema: Depois que o sistema é transferido para um representante de atendimento ao cliente, o gatilho é acionado na conversa original do agente e envia mensagens durante a sessão do agente humano.

Solução: Encerre a conversa do agente no momento do escalonamento ou use uma variável de proteção Global.IsEscalated = true e verifique-a no início do tópico de inatividade.

Solucionar problemas quando o gatilho de inatividade não estiver funcionando

Use esta árvore de decisão para diagnosticar o problema:

  1. Onde você está testando?

    • Se você estiver usando o painel de teste, pare. O painel de teste não dá suporte a gatilhos de inatividade. Publicar e testar em um canal ao vivo.
  2. Qual canal você está usando?

    • Microsoft 365 Copilot? Este canal tem uma limitação conhecida. Dispare incêndios, mas as mensagens não são entregues. Sem solução alternativa.
    • Telefonia/IVR? Não há suporte para este canal. Em vez disso, use o gatilho OnSilence .
  3. A orquestração de IA Generativa está habilitada?

    • Os gatilhos de inatividade usam um pipeline de temporizador separado dos processos de roteamento baseados em reconhecimento. No entanto, seu comportamento com orquestração de IA generativa não é totalmente validado. Se o gerenciamento de inatividade for crítico, a configuração recomendada é a orquestração clássica.
  4. Sua durationInSeconds é maior que 604.800?

    • Se sim, o gatilho será ignorado silenciosamente. Reduza para 604.800 ou inferior.
  5. O agente é um agente filho em uma configuração do "Connected Agent"?

    • Se sim, não há suporte para gatilhos de inatividade do subagente. Mova a lógica para o agente pai.
  6. Você tem vários gatilhos de inatividade?

    • Eles disparam em ordem de duração (a mais curta primeiro). Verifique se você está esperando o suficiente. Qualquer mensagem do usuário redefine todos os temporizadores.
  7. O gatilho tem uma condição que faz referência a uma variável não inicializada?

    • Se uma condição fizer referência a uma variável ainda não definida, o gatilho será excluído silenciosamente. Verifique se todas as variáveis de condição têm valores padrão.
  8. O agente foi republicado após o início da conversa?

    • Uma republicação pode redefinir o temporizador de inatividade para sessões ativas. Inicie uma nova conversa e teste novamente.

Se o gatilho de inatividade ainda não estiver funcionando, tente as seguintes opções:

  • Verifique as transcrições de conversa para qualquer atividade relacionada ao tópico de inatividade. Se o tópico aparecer, mas o usuário não visualizar a mensagem, o problema será a entrega específica pelo canal.
  • Verifique se o tópico não está desabilitado ou arquivado.
  • Confirme se o tipo de gatilho é "Após um período de inatividade", não um gatilho de frase.

Práticas Recomendadas

  • Sempre teste em um canal publicado. Use o site de demonstração para testes rápidos. Nunca confie em painel de teste.

  • Use uma variável de guarda para evitar loops. Criar Global.DeactivateInactivity (booliano, padrão false). Defina-o para true antes de chamar EndConversation. Verifique-o no início de cada tópico de inatividade.

  • Mantenha as durações razoáveis. Mínimo de ~15 segundos, máximo de 604.800 segundos (7 dias).

  • Verifique suas unidades. A propriedade está especificada em segundos. 5 minutos = 300, não 5.

  • Para Dynamics 365 Customer Service: Sempre emparelhe EndConversation com closeOmnichannelConversation usando o Power Automate.

  • Para cenários de vários gatilhos: deve-se limitar os nós de Pergunta a um único gatilho, ou então utilizar o padrão de tópico compartilhado.

  • Ligue para EndConversation antes de transferir para um representante de atendimento ao cliente para desativar os gatilhos de inatividade.

  • Monitore as transcrições de conversa após a implantação para verificar se as mensagens aparecem nos horários esperados.

perguntas frequentes

Por que o gatilho de inatividade não funciona no painel de teste?

Os temporizadores são desabilitados no painel de teste por design. Publique seu agente e teste em um canal ao vivo.

Posso usar durações dinâmicas (por exemplo, de uma variável)?

Sim. O campo de duração aceita expressões do Power Fx. Você pode usar uma variável de ambiente ou um valor calculado. A expressão é avaliada em tempo de execução quando o temporizador é ativado. Verifique se a variável é inicializada e contém um número válido.

O que acontece se eu publicar uma nova versão do agente enquanto as conversas estiverem ativas?

O runtime captura a nova versão. Se o ID do gatilho for alterado (tópico excluído e recriado), o sistema recorrerá à correspondência por duração. Se nenhum gatilho corresponder por ID ou duração, o evento de inatividade pendente será descartado.

Como faço para parar completamente os gatilhos de inatividade no Teams?

Você não pode pará-los no nível da plataforma. Use o padrão de variável de controle: defina um booleano quando a conversa terminar logicamente e verifique-o no início do tópico de inatividade para sair mais cedo.

O gatilho de inatividade funciona com autenticação?

Sim, mas para longos tempos limite de sessão (por exemplo, 24 horas), o token de autenticação do usuário pode expirar antes que o gatilho seja acionado. Verifique se o agente lida com a reautenticação normalmente.

O que acontece se meu tópico de inatividade acionar um conector que demora muito tempo?

As chamadas do conector têm um limite de tempo limite (padrão de 30 segundos, máximo de 60 segundos). Otimize o conector ou manipule o tempo limite de forma elegante.