Gatilho de inatividade

Aprenda a configurar gatilhos de inatividade, com orientações sobre a configuração, suporte aos canais, limitações e resolução de problemas.

Descrição geral

O gatilho da inatividade, também chamado OnInactivity, ou O utilizador está inativo durante algum tempo, é um disparador do sistema em Copilot Studio que dispara automaticamente um tópico quando o utilizador não envia nenhuma mensagem durante um período especificado. Corre do lado do servidor, por isso o agente avalia o temporizador e executa o tópico mesmo que o cliente do utilizador esteja inativo.

Os casos de uso comuns incluem:

  • Envia um lembrete a perguntar se o utilizador ainda está lá
  • Liberte a capacidade do agente fechando automaticamente conversas inativas
  • Recolha feedback (por exemplo, um inquérito de satisfação do cliente) antes de terminar uma sessão
  • Limpar o estado da sessão para conversas abandonadas

Como funciona o gatilho da inatividade

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

Descrição geral da arquitetura

  1. O utilizador envia uma mensagem.

  2. O ambiente de execução avalia todos os gatilhos OnInactivity.

  3. O tempo de execução agrupa gatilhos por duração e seleciona um por nível de duração. O número de menor prioridade vence; A data de criação mais antiga desfaz empates.

  4. O tempo de execução ordena os gatilhos selecionados por duração, sendo o mais curto primeiro.

  5. O runtime ativa um temporizador para o acionador seguinte no Azure Service Bus. Só um temporizador está ativo de cada vez.

  6. O utilizador está inativo durante a 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 até ao acionador seguinte e ativa um novo temporizador.

Comportamentos-chave

  • O temporizador reinicia em todas as mensagens do utilizador.

    Cada vez que um utilizador envia uma mensagem, o sistema reavalia todos os gatilhos de inatividade e ativa o seguinte (começando pela duração mais curta). Só um temporizador está ativo em cada momento.

  • São suportados múltiplos gatilhos.

    Podes ter vários gatilhos de OnInactivity em diferentes durações (por exemplo, 5 minutos e 10 minutos). O sistema processa-as por ordem crescente de duração. Apenas um gatilho é selecionado por nível de duração. Se dois gatilhos tiverem a mesma duração, o gatilho com o número mais Priority baixo dispara. Se ainda houver um empate, vence o acionador criado mais cedo. O sistema descarta outros gatilhos na mesma duração.

  • Os acionadores são colocados em fila, não em paralelo.

    Só um temporizador está ativo de cada vez. Após a execução do acionador atual, o runtime calcula o tempo restante até ao acionador seguinte e ativa um novo temporizador para a diferença. O resultado final é que os acionadores são acionados nos deslocamentos corretos em relação ao ponto original de inatividade, embora possa ocorrer um ligeiro desfasamento se a execução do acionador demorar um tempo significativo.

  • Execução em segundo plano.

    O evento de inatividade é um acionador em segundo plano. Não requer interação do utilizador para disparar.

  • Gravação de transcrição.

    O sistema regista eventos de inatividade nas transcrições das conversas. Um novo registo de transcrições é criado após 30 minutos de inatividade.

Exemplo de linha temporal (múltiplos gatilhos)

Hora Evento
0:00 Utilizador envia a última mensagem
5:00 O gatilho A (300 s) dispara e envia aviso
10:00 O acionador B (600 s) é acionado, a conversação é terminada

Se o utilizador enviar uma mensagem às 16:30, ambos os temporizadores são reiniciados. O gatilho A aciona às 9:30, e o gatilho B aciona às 14:30.

Configurar o gatilho de inatividade

Esta secção mostra como o Copilot Studio inicia, reinicia e executa temporizadores de inatividade para que possas prever o que acontece quando uma conversa fica inativa.

Crie um tema de gatilho de inatividade

  1. No Copilot Studio, vá a Tópicos>Adicione um tópico>From blank.

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

  3. Define a propriedade Duração de Inatividade . No modo Entrada manual, escolha uma configuração predefinida na lista pendente (15 minutos, 30 minutos, 45 minutos ou 1 hora). Para inserir um valor personalizado em segundos ou uma fórmula Power Fx (por exemplo, Global.TimeoutSeconds), mude o seletor de modo para Fórmula e digite o valor diretamente.

  4. Desenha o fluxo do tema (envia uma mensagem, faz uma pergunta, termina a conversa, e assim por diante).

  5. Salve e publique o seu agente.

Referência de duração

Tempo de espera desejado Valor (segundos)
30 segundos 30
2 minutos 120
5 minutos 300
10 minutos 600
Uma hora 3600

Important

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: "Ainda estás aí? Responda para continuar."

Fim do Tópico

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

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

Tema 1: Aviso de inatividade (5 minutos)

  • Acionador: após um período de inatividade
  • durationInSeconds: 300
  • Ações: Enviar uma mensagem: "Ainda estás aí? Esta conversa termina em 5 minutos se não houver resposta."

Tema 2: Fecho automático (10 minutos)

  • Acionador: após um período de inatividade
  • durationInSeconds: 600
  • Actions:
    1. Set Global.DeactivateInactivity = true (variável de guarda - ver Melhores Práticas)
    2. Envie uma mensagem: "Esta conversa termina por inatividade."
    3. Fim da conversa

Exemplo: Recolha de feedback

  • Acionador: após um período de inatividade
  • DuraçãoEmSegundos: 120
  • Actions:
    1. Pergunte: "Antes de ir, poderia avaliar a sua experiência? (1-5)"
    2. Armazenar a resposta
    3. Fim da conversa

Adicionar uma condição ao gatilho

Adicione um nó de Condição logo a seguir ao acionador, para que este só seja executado em determinadas situações:

  • Ative apenas num canal específico: =Activity.ChannelId = "msteams"
  • Só dispara se uma variável de guarda não estiver definida: =Global.DeactivateInactivity = false

Se tiver vários acionadores com nós de Pergunta, utilize um tópico partilhado para evitar problemas de acumulação de diálogos:

  1. Crie um tema partilhado chamado HandleInactivity:

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

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

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

Esta abordagem impede que os nós de Pergunta se empilhem e criem ciclos de pedido.

Configuração específica do canal

Matriz de canais de suporte

Canal Nível de suporte Notes
Site de demonstração Totalmente suportada Melhor canal para testar gatilhos de inatividade.
Site personalizado (Direct Line) Totalmente suportada Funciona da mesma forma que o site de demonstração.
Microsoft Teams Suportado Funciona, mas consulte orientações específicas do Teams na secção seguinte. Os tokens de autenticação podem expirar durante longos períodos de inatividade.
Atendimento ao Cliente do Dynamics 365 Totalmente suportada Requer passos extra para encerrar as conversas do Dynamics 365 Customer Service. Saiba mais na configuração Dynamics 365 Customer Service.
Microsoft 365 Copilot O gatilho dispara, mas as mensagens não são entregues Este cenário é uma limitação conhecida. O gatilho é executado do lado do servidor, mas a interface do Microsoft 365 Copilot não mostra mensagens proativas dos agentes. Nenhuma solução alternativa.
Painel de testes Não suportado Este cenário é intencional. Os temporizadores estão desativados para o ID do canal Studio. Usa o site de demonstração ou um canal publicado para testar.
DirectEngine Não suportado Este cenário é intencional. Os temporizadores estão desativados para o ID de canal do DirectEngine (ambiente de design/teste).
Telefonia/IVR Não suportado Para canais de voz, usa o gatilho OnSilence em vez disso.

Configuração das equipas

O Teams utiliza um modelo persistente de conversa única. A conversa nunca "termina" verdadeiramente do ponto de vista do Microsoft Teams. Este modelo significa que os gatilhos de inatividade continuam a disparar novamente mesmo depois de o utilizador considerar a conversa terminada.

Padrão de Equipas Recomendadas:

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

  2. No início do seu tópico de inatividade, verife: If Global.IsConversationClosed = true → Terminar o Tópico (sair imediatamente).

  3. Quando a conversa termina logicamente (o utilizador diz "adeus", a satisfação do cliente termina, e assim sucessivamente), defina Global.IsConversationClosed = true.

  4. O gatilho de inatividade pode continuar a disparar, mas sai imediatamente sem mostrar mensagem.

Configuração do Dynamics 365 Customer Service

  • As conversas fecham-se automaticamente após 30 minutos de inatividade por defeito.
  • Chamar a função EndConversation sozinho não fecha a sessão do Dynamics 365 Customer Service. A capacidade do agente não é libertada.
  • Para fechar totalmente a conversação, defina a variável de contexto CloseOmnichannelConversation como true através de um fluxo do Power Automate e, em seguida, utilize um nó Transferir para o agente.

Limitações conhecidas

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

Característica ou Ação Efeito nos temporizadores de inatividade
Fim da conversa Limpa permanentemente todos os temporizadores
O utilizador envia uma mensagem Reinicia todos os cronómetros para zero (intencionalmente)
Condição de gatilho com variável não inicializada O temporizador é excluído silenciosamente - nunca é ativado
A duração excede 7 dias (604.800 segundos) O temporizador é silenciosamente ignorado
Eliminação de variáveis globais num tópico de inatividade agente perde o contexto da conversa
Transferência para representante de apoio ao cliente O temporizador mantém-se ativo e pode disparar durante a conversa com o representante de apoio ao cliente

O painel de teste não suporta gatilhos de inatividade

O painel de testes do Copilot Studio não dispara gatilhos de inatividade. Esta limitação é propositada. Publique o seu agente e teste num canal ao vivo (site de demonstração, Teams, etc.).

O Microsoft 365 Copilot não mostra mensagens de inatividade

O acionador é executado no lado do servidor, mas qualquer saída (mensagens, cartões) não é entregue ao utilizador na experiência do Microsoft 365 Copilot. Não há solução alternativa. Veja as limitações conhecidas do Microsoft Teams.

Orquestração de IA generativa

Os acionadores de inatividade são implementados como acionadores de tópico de orquestração clássica e utilizam um pipeline de eventos separado baseado em temporizador. Quando a orquestração de IA Generativa está ativada, o encaminhamento de tópicos deixa de depender do reconhecimento clássico de acionadores, pelo que os tópicos de inatividade podem não ser acionados de forma fiável em todas as configurações. Se for necessária a gestão da inatividade, a orquestração clássica é a configuração recomendada e totalmente validada.

Agentes ligados: a inatividade de agentes subordinados não é suportada

Em configurações de agentes ligados, os acionadores de inatividade em agentes subordinados não funcionam e devolvem "Resposta Inválida do Agente Ligado". Toda a lógica de inatividade deve ser colocada no agente principal.

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

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

Terminar conversa elimina temporizadores de inatividade

Quando chamas Terminar conversa num tópico, isso interrompe permanentemente todos os temporizadores ativos de inatividade dessa conversa. Os temporizadores estão completamente apagados; Não são reiniciados nem pausados. A operação descarta quaisquer eventos de inatividade pendentes que já estejam agendados.

Se quiser terminar o fluxo de um tópico sem perturbar os temporizadores de inatividade, use uma das ações alternativas:

Ação (no Copilot Studio) Efeito nos temporizadores de inatividade
Fim da conversa Limpa todos os temporizadores; Os temporizadores param permanentemente
Fim do tópico atual (EndDialog) Não afeta os temporizadores; Os temporizadores continuam a funcionar
Cancelar todos os tópicos (CancelAllDialogs) Não afeta os temporizadores; Os temporizadores continuam a funcionar

Tip

Se o teu tópico precisar de fechar o fluxo atual mas ainda quiseres que o temporizador de inatividade dispare mais tarde (por exemplo, um tópico de pesquisa JIRA que termina mas a conversa ainda deve expirar), usa Terminar tema atual em vez de Terminar conversa.

Utilizar uma variável de proteção para evitar novo acionamento continua a ser uma prática defensiva recomendada.

O acionador é ativado após o escalamento para um agente

Depois de o sistema transferir uma conversa para um representante de apoio ao cliente, o gatilho de inatividade mantém-se ativo. Pode disparar durante a conversa do agente humano e enviar mensagens inesperadamente. Certifique-se de sempre chamar a função EndConversation antes da transferência ou utilize uma variável guardiã.

Mensagens de gatilho podem aparecer nas transcrições após o fim da conversa

Mesmo depois de uma conversa terminar, o gatilho pode continuar a disparar e as suas mensagens são registadas na transcrição. Esta condição não afeta a experiência do utilizador, mas pode aparecer nas análises.

Canais de telefone, voz e IVR

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

Configurações incorretas comuns

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

Terminar a conversação no tópico de inatividade (risco de ciclo)

Problema: Quando chamas Terminar conversa de um tópico de inatividade, limpas todos os temporizadores de inatividade. No entanto, em canais com conversas persistentes (especialmente no Teams), a conversa subjacente mantém-se ativa. Em algumas configurações, o gatilho ainda pode disparar novamente, causando mensagens repetidas de "sessão terminada".

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

  1. Create Global.DeactivateInactivity (Booleano, predefinido: false).

  2. No topo de cada tópico de inatividade, adicione uma condição: só prossiga se Global.DeactivateInactivity = false.

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

Observação

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

Duração definida para o valor errado

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

Solução: Verifique novamente os seus valores com a tabela de referência na Secção 3.

Nós de pergunta em vários tópicos de inatividade (empilhamento de pedidos)

Problema: Se vários acionadores tiverem cada um um nó de Pergunta, o nó de Pergunta do segundo acionador interrompe o primeiro. Quando o utilizador responde, o primeiro nó de Pergunta é retomado e faz novo pedido, criando um ciclo.

Solução: Usa o padrão de tópicos partilhados. Consolide a lógica do nó de Pergunta num único tópico, ou certifique-se de que apenas um acionador tem um nó de Pergunta.

Eliminação de variáveis globais no tópico da inatividade

Problema: Se o tópico de inatividade eliminar variáveis globais, o agente perde todo o contexto da conversa e parece não responder quando o utilizador regressa.

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

Não bloquear acionadores de inatividade no Teams

Problema: no Teams, o modelo de conversação persistente significa que os acionadores são ativados indefinidamente. Os utilizadores recebem mensagens repetidas de "ainda aí está?" horas ou dias depois.

Solução: utilize sempre o padrão de variável de bloqueio para o Teams.

Não chamar closeOmnichannelConversation

Problema: Para agentes do Dynamics 365 Customer Service, chamar apenas "EndConversation" não encerra a sessão do Dynamics 365 Customer Service. As conversas acumulam-se na fila de espera dos agentes.

Solution: Defina CloseOmnichannelConversation para true via Power Automate no 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 a duração funciona, mas se a variável não estiver inicializada ou for nula, o gatilho é silenciosamente excluído.

Solução: Garantir que todas as variáveis usadas nas condições de disparo e expressões de duração tenham valores predefinidos válidos.

Esperar que os gatilhos funcionem após o escalonamento do agente

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

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

Solução de problemas quando o gatilho de inatividade não está a funcionar

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

  1. Onde estás a testar?

    • Se estiveres a usar o painel de testes, para. O painel de teste não suporta gatilhos de inatividade. Publique e teste num canal em direto.
  2. Que canal estás a usar?

    • Microsoft 365 Copilot? Este canal tem uma limitação conhecida. O gatilho dispara mas as mensagens não são entregues. Nenhuma solução alternativa.
    • Telefonia/IVR? Este canal não é suportado. Usa o gatilho OnSilence em vez disso.
  3. A orquestração com IA generativa está ativada?

    • Os gatilhos de inatividade utilizam um pipeline de temporizador separado do encaminhamento baseado em reconhecimento. No entanto, o seu comportamento com a orquestração de IA generativa não está totalmente validado. Se a gestão da inatividade for crítica, a orquestração clássica é a configuração recomendada.
  4. O teu durationInSeconds é superior a 604.800?

    • Se sim, o gatilho é silenciosamente ignorado. Reduza para 604.800 ou menos.
  5. O agente é um agente subordinado numa configuração de Agente Ligado?

    • Se sim, os acionadores de inatividade do agente subordinado não são suportados. Transfere a lógica para o agente principal.
  6. Tens múltiplos gatilhos de inatividade?

    • São acionados por ordem de duração (primeiro o mais curto). Certifica-te de que estás à espera tempo suficiente. Qualquer mensagem de utilizador reinicia todos os temporizadores.
  7. O gatilho tem alguma condição que faça referência a uma variável não inicializada?

    • Se uma condição faz referência a uma variável ainda não definida, o gatilho é silenciosamente excluído. Garantir que todas as variáveis de condição têm valores predefinidos.
  8. O agente foi republicado depois da conversação ter começado?

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

Se o gatilho de inatividade ainda não estiver a funcionar, experimente as seguintes opções:

  • Consulte as transcrições das conversações para detetar qualquer atividade do tópico de inatividade. Se o tópico aparecer mas o utilizador não vir a mensagem, o problema é a entrega específica do canal.
  • Verifica se o tema não está desativado ou arquivado.
  • Confirme que o tipo de acionador é "Após um período de inatividade" e não um acionador de expressões.

Melhores práticas

  • Teste sempre num canal publicado. Use o site de demonstração para testes rápidos. Nunca confie no painel de teste.

  • Utilize uma variável de guarda para evitar loops. Create Global.DeactivateInactivity (Booleano, por defeito false). Defina para true antes de chamar EndConversation. Verifique‑a 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 as suas unidades. A propriedade está em segundos. 5 minutos = 300, não 5.

  • Para Dynamics 365 Customer Service: Emparelhe sempre EndConversation com closeOmnichannelConversation via Power Automate.

  • Para cenários com múltiplos gatilhos: limite os nós da Pergunta a um único gatilho, ou use o padrão de tópicos partilhados.

  • Chame EndConversation antes de transferir para um representante de suporte ao cliente para desativar os acionadores de inatividade.

  • Monitorize as transcrições das conversas após a implantação para verificar se as mensagens aparecem nos horários previstos.

FAQ

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

Os temporizadores estão desativados no painel de testes por design. Publique o seu agente e teste num canal ao vivo.

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

Yes. O campo de duração aceita expressões de Power Fx. Pode usar uma variável de ambiente ou um valor calculado. A expressão é avaliada em tempo de execução quando o temporizador é ativado. Certifique-se de que a variável está inicializada e contém 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 adota a nova versão. Se o ID do gatilho mudou (tópico apagado e recriado), o sistema volta a corresponder por duração. Se nenhum acionador corresponder por ID ou duração, o evento de inatividade pendente é descartado.

Como posso parar completamente os gatilhos de inatividade no Teams?

Não os podes parar ao nível da plataforma. Utilize o padrão da variável de bloqueio: defina um booleano quando a conversação termina 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 longos tempos de espera de sessão (por exemplo, 24 horas), o token de autenticação do utilizador pode expirar antes do disparo do trigger. Garanta que o seu agente gere a reautenticação com elegância.

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

As chamadas de conector têm um limite de tempo de espera (30 segundos padrão, 60 segundos no máximo). Otimize o conector ou processe o tempo limite de forma adequada.