Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aprenda a configurar gatilhos de inatividade, com orientações sobre configuração, suporte a canais, limitações e solução de problemas.
Visão geral
O gatilho de inatividade, também chamado de OnInactivity, ou O usuário está inativo por um tempo, é um gatilho de sistema no Copilot Studio que dispara automaticamente um tópico quando o usuário não envia nenhuma mensagem por um período especificado. Ele é executado no servidor, então o agente avalia o temporizador e executa o tópico mesmo que o aplicativo do usuário esteja inativo.
Os casos de uso comuns incluem:
- Enviar um lembrete perguntando se o usuário ainda está lá
- Liberar a capacidade do agente ao fechar automaticamente conversas inativas
- Coletar feedback (p. ex., uma pesquisa de satisfação do cliente) antes do término da sessão
- Limpar o status de sessão para conversas abandonadas
Como funciona o gatilho de inatividade
Esta seção explica como o Copilot Studio avalia gatilhos de inatividade, agenda temporizadores e executa tópicos quando uma conversa está inativa.
Visão geral da arquitetura
O usuário envia uma mensagem.
O runtime avalia todos os gatilhos OnInactivity.
O runtime agrupa os gatilhos por duração e seleciona um por faixa de duração. O menor número de prioridade vence; a data de criação mais antiga desempata.
O runtime ordena os gatilhos selecionados por duração, sendo o mais curto primeiro.
O runtime ativa um temporizador para o próximo gatilho no Barramento de Serviço do Azure. Apenas um temporizador fica ativo de cada vez.
O usuário permanece inativo durante o período configurado.
O temporizador é acionado e o evento de inatividade é enviado para o runtime.
O runtime corresponde e executa o tópico de inatividade.
O runtime calcula o tempo restante para o próximo gatilho e ativa um novo temporizador.
Comportamentos-chave
O temporizador é reiniciado a cada mensagem enviada pelo usuário.
Cada vez que um usuário envia uma mensagem, o sistema reavalia todos os gatilhos de inatividade e prepara o próximo, priorizando o de menor duração. Apenas um temporizador fica ativo de cada vez.
Há suporte para vários gatilhos.
Você pode ter vários gatilhos OnInactivity com diferentes durações (p. ex., 5 minutos e 10 minutos). O sistema processa os gatilhos em ordem crescente de duração. Apenas um gatilho é selecionado por faixa de duração. Se dois gatilhos tiverem a mesma duração, o gatilho com o número
Prioritymais baixo será acionado. Se ainda houver um empate, o gatilho criado anteriormente prevalecerá. O sistema descarta outros gatilhos na mesma duração.Os gatilhos são organizados em fila, não paralelamente.
Apenas um temporizador fica ativo de cada vez. Após a execução do gatilho atual, o runtime calcula o tempo restante para o próximo gatilho e ativa um novo temporizador para essa 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 interação do usuário para disparar.
Registro de transcrições.
O sistema registra eventos de inatividade nas transcrições das conversas. Um novo registro de transcrição é criado após 30 minutos de inatividade.
Exemplo de linha do tempo (vários gatilhos)
| Time | Evento |
|---|---|
| 0:00 | O usuário envia a última mensagem |
| 5:00 | O gatilho A (300 s) entra em ação, enviando um aviso |
| 10:00:00 | O gatilho B (600 s) é acionado, finaliza a conversa |
Se o usuário enviar uma mensagem às 4:30, ambos os temporizadores são reiniciados. O gatilho A é acionado às 9h30, e o gatilho B é acionado às 14h30.
Configure um gatilho de inatividade
Esta seção mostra como o Copilot Studio inicia, reinicia e executa temporizadores de inatividade, para que você possa prever o que acontece quando uma conversa entra em inatividade.
Criar um tópico de gatilho de inatividade
No Copilot Studio, acesse Tópicos>Adicionar um tópico>Em branco.
Selecione a frase de gatilho. Em vez de uma frase, selecione "Após um período de inatividade".
Defina a propriedade Duração da inatividade. No modo de Entrada manual, escolha uma opção predefinida no menu suspenso (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), mude o seletor de modo para Fórmula e digite o valor diretamente.Projete o fluxo do tópico (envie uma mensagem, faça uma pergunta, encerre a conversa e assim por diante).
Salve e publique seu agente.
Referência da 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á aí?” Responda para continuar."
Encerrar Tópico
Exemplo: aviso de 5 minutos e fechamento automático de 10 minutos
Este padrão é o mais comum. Crie dois tópicos de inatividade:
Tópico 1: alerta de inatividade (5 minutos)
- Gatilho: após um período de inatividade
-
durationInSeconds:300 - Ações: enviar uma mensagem: “Você ainda está aí?” Esta conversa será encerrada em 5 minutos caso não haja resposta."
Tópico 2: encerramento automático (10 minutos)
- Gatilho: após um período de inatividade
-
durationInSeconds:600 - Ações:
- Defina
Global.DeactivateInactivity = true(variável de guarda - veja Melhores Práticas) - Envie uma mensagem: “Esta conversa é encerrada por inatividade.”
- Encerrar a conversa
- Defina
Exemplo: coleta de feedback
- Gatilho: após um período de inatividade
- durationInSeconds:
120 - Ações:
- Pergunte: “Antes de sair, gostaria de avaliar sua experiência?” (1-5)"
- Armazene a resposta
- Encerrar a conversa
Adicione 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" - Disparar somente se uma variável de guarda não estiver definida:
=Global.DeactivateInactivity = false
Padrão recomendado para múltiplos gatilhos (tópico compartilhado)
Se você tiver vários gatilhos com nós de Pergunta, use um tópico compartilhado para evitar problemas de empilhamento de diálogos.
Crie um tópico compartilhado chamado
HandleInactivity:- Adicionar uma variável global
Global.InactivityStage(Texto) - Verifique o valor:
-
"warning"→ Enviar uma mensagem de aviso com um nó de Pergunta ("Continuar?" / "Fim?") -
"close"Enviar uma mensagem de encerramento e encerrar a conversa
-
- Adicionar uma variável global
Primeiro gatilho OnInactivity (300 segundos):
- Pôr
Global.InactivityStage = "warning" - Redirecionar para
HandleInactivity
- Pôr
Segundo gatilho OnInactivity (600 segundos):
- Pôr
Global.InactivityStage = "close" - Redirecionar para
HandleInactivity
- Pôr
Essa abordagem impede que nós de Pergunta empilhem e criem loops de prompt.
Configuração específica de canal
Matriz de suporte de canal
| Canal | Nível de suporte | Anotações |
|---|---|---|
| Site de demonstração | Suporte total | Melhor canal para testar gatilhos de inatividade. |
| Site personalizado (Direct Line) | Suporte total | Funciona igual ao site de demonstração. |
| Microsoft Teams | Com suporte | Funciona, mas veja orientações específicas do Teams na próxima seção. Tokens de autenticação podem expirar durante longos períodos de inatividade. |
| Dynamics 365 Customer Service | Suporte total | São necessárias etapas extras para encerrar as conversas do Dynamics 365 Customer Service. Saiba mais em Configuração do Dynamics 365 Customer Service. |
| Microsoft 365 Copilot | O gatilho é acionado, mas as mensagens não são entregues | Este 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 | Incompatível | Este cenário é intencional. Os temporizadores estão desabilitados para a ID do canal do Studio. Use o site de demonstração ou um canal publicado para testar. |
| DirectEngine | Incompatível | Este cenário é intencional. Os temporizadores estão desabilitados para a ID do canal DirectEngine (ambiente de design/teste). |
| Telefonia/IVR | Incompatível | Para canais de voz, use o gatilho OnSilence. |
Configuração do Teams
O Teams utiliza um modelo persistente, de conversa única. A conversa nunca realmente "termina" do ponto de vista do Teams. Esse modelo significa que gatilhos de inatividade continuam sendo disparados mesmo depois que o usuário considera a conversa encerrada.
Padrões recomendados do Teams:
Crie uma variável global
Global.IsConversationClosed(Booliana, padrão:false).No início do seu tópico de inatividade, marque:
If Global.IsConversationClosed = true→ Terminar Tópico (sair imediatamente).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.O gatilho de inatividade ainda pode disparar, mas sai imediatamente sem mostrar uma mensagem.
Configuração do Dynamics 365 Customer Service
- As conversas se encerram automaticamente após 30 minutos de inatividade por padrão.
- Executar apenas o EndConversation não encerra a sessão do Dynamics 365 Customer Service. A capacidade do agente não é liberada.
- Para fechar totalmente a conversa, defina a variável de contexto
CloseOmnichannelConversationcomotrueusando um fluxo do Power Automate e, em seguida, utilize um nó Transferir para agente.
Limitações conhecidas
Referência rápida: O que pode interromper o temporizador de inatividade?
| Recurso ou Ação | Efeito nos 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 | O temporizador é silenciosamente excluído - nunca é ativado |
| A duração ultrapassa 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 do serviço de atendimento ao consumidor | O temporizador permanece ativo e pode disparar durante a conversa com o representante do serviço de atendimento ao consumidor |
O painel de teste não oferece suporte a gatilhos de inatividade
O painel de teste do 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).
O Microsoft 365 Copilot não exibe mensagens de inatividade
O gatilho é executado no servidor, mas qualquer saída (mensagens, cartões) não é enviada ao usuário durante a experiência do Microsoft 365 Copilot. Não há nenhuma solução alternativa. Consulte 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)
Bots publicados ignoram silenciosamente gatilhos com duração maior que 604.800 segundos. Nenhum erro aparece. No modo de design, pode aparecer um erro. Não há um mínimo imposto, durações curtas (menos de cerca de 15 segundos) podem atuar de forma imprevisível devido à latência da infraestrutura do temporizador.
Encerrar conversa elimina temporizadores de inatividade
Quando você chama Encerrar conversa em um tópico, isso interrompe permanentemente todos os temporizadores ativos de inatividade dessa conversa. Os temporizadores são totalmente removidos; eles não são reiniciados nem pausados. A operação descarta quaisquer eventos de inatividade pendentes que já estejam agendados.
Se você quiser encerrar o fluxo de um tópico sem interromper os temporizadores de inatividade, utilize uma das ações alternativas:
| Ação (no Copilot Studio) | Efeito nos temporizadores de inatividade |
|---|---|
| Encerrar a conversa | Limpa todos os temporizadores; os temporizadores são interrompidos permanentemente |
| Encerrar o 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 seu tópico precisar fechar o fluxo atual, mas você ainda quiser que o temporizador de inatividade seja acionado posteriormente (por exemplo, um tópico de busca JIRA que termina, 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.
O disparo ocorre após o escalonamento do agente
Após o sistema transferir a conversa para um representante do serviço de atendimento ao consumidor, o gatilho de inatividade permanece ativo. O gatilho pode disparar durante a conversa com o agente humano e enviar mensagens do agente inesperadamente. Sempre chame EndConversation antes da transferência ou use uma variável de guarda.
Mensagens de gatilho podem aparecer nas transcrições após o término da conversa
Mesmo após o término da conversa, o gatilho ainda pode disparar e suas mensagens são registradas na transcrição. Essa condição não afeta a experiência do usuário, mas pode aparecer em análises.
Canais de telefone, voz e IVR
O gatilho de inatividade não está disponível para canais de telefone e voz. Use o trigger OnSilence em vez disso.
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 como esperado.
Encerrar a conversa no tópico de inatividade (risco de loop)
Problema: Ao chamar Encerrar conversa a partir de um tópico de inatividade, todos os temporizadores de inatividade são eliminados. No entanto, em canais com conversas persistentes (especialmente no 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 guarda:
Crie
Global.DeactivateInactivity(booliano, padrão:false).No topo de cada tópico de inatividade, adicione uma condição: só prossiga se
Global.DeactivateInactivity = false.Defina
Global.DeactivateInactivity = trueantes de chamar EndConversation.
Observação
O padrão de variável de proteção é muito importante para os canais do Teams, em que o modelo de conversa persistente significa que a conversa nunca termina verdadeiramente.
Duração definida para o valor errado
Problema: adurationInSeconds é em segundos. Um valor de 60000 é cerca de 16,7 horas, não 60 segundos.
Solução: confirme seus valores consultando a tabela de referência da Seção 3.
Os nós de pergunta em vários tópicos de inatividade (empilhamento de prompts)
Problema: se vários gatilhos tiverem um nó de Pergunta, o nó de Pergunta do segundo gatilho interrompe o primeiro. Quando o usuário responde, o primeiro nó de Pergunta é reativado e solicitado novamente, criando um loop.
Solução: use o padrão de tópico compartilhado. Consolide a lógica do nó de Pergunta em um único tópico ou garanta que apenas um gatilho tenha um nó de Pergunta.
Limpar variáveis globais no tópico de inatividade
Problema: se o tópico de inatividade limpar variáveis globais, o agente perde todo o contexto da conversa e fica não responsivo quando o usuário retorna.
Solução: apenas redefina variáveis específicas da inatividade, não todo o estado da conversa.
Não bloquear os gatilhos de inatividade no Teams
Problema: no Teams, o modelo de conversa persistente significa que os gatilhos disparam indefinidamente. Os usuários recebem mensagens do tipo “você ainda está aí?” repetidamente, horas ou dias depois.
Solução: sempre use o padrão de bloquear variável do Teams.
Não ligar para closeOmnichannelConversation
Problema: para agentes do Dynamics 365 Customer Service, chamar apenas o EndConversation não encerra a sessão do Dynamics 365 Customer Service. Conversas se acumulam na fila dos agentes.
Solução: defina CloseOmnichannelConversation como true por meio do Power Automate em seu tópico de inatividade.
Duração dinâmica a partir de uma variável não inicializada
Problema: usar uma expressão Power Fx como =Environment.InactivityTimeout para definir a duração funciona, mas se a variável estiver não inicializada ou nula, o gatilho é ignorado sem aviso.
Solução: certifique-se de que todas as variáveis usadas nas condições de gatilho e nas expressões de duração tenham valores padrão válidos.
Esperar que os gatilhos funcionem após a escalada do agente
Problema: após o sistema ser transferido para um representante do serviço de atendimento ao consumidor, 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.
Solucione o problema quando o gatilho de inatividade não estiver funcionando
Use esta árvore de decisão para diagnosticar o problema:
Onde você está testando?
- Se você estiver usando o painel de teste, pare. O painel de teste não suporta gatilhos de inatividade. Publique e teste em um canal ao vivo.
Qual canal você está usando?
- Microsoft 365 Copilot? Este canal tem uma limitação conhecida. O gatilho é acionado, mas as mensagens não são entregues. Sem solução alternativa.
- Telefonia/IVR? Não há suporte para este canal. Use o trigger OnSilence em vez disso.
Orquestração de IA generativa ativada?
- Os gatilhos de inatividade usam um pipeline de temporizador separado dos processos de roteamento baseados em reconhecimento. No entanto, o comportamento deles com orquestração de IA generativa não é totalmente validado. Se o tratamento da inatividade for crítico, a configuração recomendada é a orquestração clássica.
Sua
durationInSecondsé maior que 604.800?- Se sim, o gatilho é ignorado silenciosamente. Reduza para 604.800 ou menos.
O agente é um agente filho em uma configuração de Agente Conectado?
- Em caso afirmativo, não há suporte para gatilhos de inatividade do agente filho. Mova a lógica para o agente pai.
Você possui vários gatilhos de inatividade?
- Eles disparam em ordem de duração (a mais curta primeiro). Certifique-se de aguardar tempo suficiente. Qualquer mensagem de usuário reinicia todos os temporizadores.
O gatilho tem alguma condição que faz referência a uma variável não inicializada?
- Se uma condição faz referência a uma variável ainda não inicializada, o gatilho é silenciosamente excluído. Garanta que todas as variáveis de condição tenham valores padrão.
O agente foi republicado depois que a conversa começou?
- Uma republicação pode redefinir o temporizador de inatividade para sessões ativas. Comece 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á desativado ou arquivado.
- Confirme que 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 no painel de teste.
Use uma variável de guarda para evitar loops. Crie
Global.DeactivateInactivity(booliano, padrãofalse). Defina-o comotrueantes de chamar EndConversation. Verifique-o no início de cada tópico de inatividade.Mantenha as durações razoáveis. Mínimo ~15 segundos, máximo 604.800 segundos (7 dias).
Verifique suas unidades. A propriedade está especificada em segundos. 5 minutos =
300, não5.Para o Dynamics 365 Customer Service: sempre associe
EndConversationcomcloseOmnichannelConversationpor meio do Power Automate.Para cenários com vários gatilhos: limite os nós de Pergunta a apenas um gatilho ou utilize o padrão de tópico compartilhado.
Acione
EndConversationantes de transferir para um representante do serviço de atendimento ao consumidor para desativar os gatilhos de inatividade.Monitore as transcrições das conversas após a implantação para verificar se as mensagens aparecem nos momentos esperados.
Perguntas frequentes
Por que o gatilho de inatividade não funciona no painel de teste?
Os temporizadores são desativados no painel de teste por design. Publique seu agente e teste em um canal ao vivo.
Posso usar durações dinâmicas (p. ex., 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 o valor calculado. A expressão é avaliada no runtime quando o temporizador é armado. Certifique-se de que a variável esteja inicializada e contenha um número válido.
O que acontece se eu publicar uma nova versão do agente enquanto as conversas estão ativas?
O runtime seleciona a nova versão. Se a ID do gatilho for alterada (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 é descartado.
Como faço para parar completamente os gatilhos de inatividade no Teams?
Você não pode interrompê-los no nível da plataforma. Use o padrão de variável de controle: defina um booliano quando a conversa terminar logicamente e verifique-o no início do tópico de inatividade para sair antecipadamente.
O gatilho de inatividade funciona com autenticação?
Sim, mas para tempos de espera prolongados (p. ex., 24 horas), o token de autenticação do usuário pode expirar antes que o gatilho seja acionado. Garanta que seu agente conduza a reautenticação de forma adequada.
O que acontece se meu tópico de inatividade acionar um conector que demora muito tempo?
As chamadas de conectores têm um tempo limite (30 segundos padrão, 60 segundos máximo). Otimize o conector ou manipule o tempo limite de forma adequada.
Conteúdo relacionado
- Definir gatilhos do tópico
- Variáveis do sistema - InactivityTimer.Continue, InactivityTimer.Count
- Usar o Power Fx no Copilot Studio
- Configurar a entrega para o Dynamics 365 Customer Service
- Configuração de voz e detecção de silêncio
- Implantar agentes no Teams
- Agentes conectados
- Transcrições de conversa no Copilot Studio
- Fechar conversas do Omnicanal automaticamente
- Limitações conhecidas no Microsoft 365 Copilot