Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Saiba como configurar acionadores de inatividade, com orientações sobre configuração, suporte de canais, limitações e resolução de problemas.
Descrição geral
O acionador de inatividade, também chamado OnInactivity, ou O utilizador está inativo durante algum tempo, é um acionador de sistema no Copilot Studio que aciona automaticamente um tópico quando um utilizador não envia qualquer mensagem durante um período especificado. É executado no servidor, pelo que o agente avalia o temporizador e executa o tópico mesmo que o cliente do utilizador esteja inativo.
Os casos de utilização comuns incluem:
- Enviar um lembrete a perguntar se o utilizador continua ativo
- Libertar capacidade do agente ao fechar automaticamente conversações inativas
- Recolher feedback (por exemplo, um inquérito de satisfação do cliente) antes de a sessão terminar
- Limpar o estado da sessão em conversações abandonadas
Funcionamento do acionador de inatividade
Esta secção explica como o Copilot Studio avalia os acionadores de inatividade, agenda temporizadores e executa tópicos quando uma conversação está inativa.
Descrição geral da arquitetura
O utilizador envia uma mensagem.
O runtime avalia todos os acionadores OnInactivity.
O runtime agrupa os acionadores por duração e seleciona um por nível de duração. O número de prioridade mais baixa vence; a data de criação mais antiga desempata.
O runtime ordena os acionadores selecionados por duração, começando pelo mais curto.
O runtime ativa um temporizador para o acionador seguinte no Azure Service Bus. Só um temporizador está ativo em cada momento.
O utilizador está inativo durante a duração configurada.
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 até ao acionador seguinte e ativa um novo temporizador.
Principais comportamentos
O temporizador é reposto a cada mensagem do utilizador.
Cada vez que um utilizador envia uma mensagem, o sistema reavalia todos os acionadores de inatividade e ativa o seguinte (começando pelo de menor duração). Apenas um temporizador está ativo em qualquer momento.
São suportados vários acionadores.
Pode ter vários acionadores OnInactivity com durações diferentes (por exemplo, 5 minutos e 10 minutos). O sistema processa-os por ordem crescente de duração. Apenas um acionador é selecionado por nível de duração. Se dois acionadores tiverem a mesma duração, o acionador com o número de
Prioritymais baixo é acionado. Se ainda houver um empate, vence o acionador criado mais cedo. O sistema elimina outros acionadores com a mesma duração.Os acionadores são colocados em fila, não em paralelo.
Só um temporizador está ativo em cada momento. 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 acionar.
Registo da transcrição.
O sistema regista eventos de inatividade nas transcrições das conversações. Um novo registo de transcrição é criado após 30 minutos de inatividade.
Exemplo de linha cronológica (múltiplos acionadores)
| Hora | Evento |
|---|---|
| 0:00 | O utilizador envia a última mensagem |
| 5:00 | O acionador A (300 s) é acionado e envia um aviso |
| 10:00 | O acionador B (600 s) é acionado, a conversação é terminada |
Se o utilizador enviar uma mensagem às 4:30, ambos os temporizadores são repostos. O acionador A é acionado às 9:30, e o acionador B é acionado às 14:30.
Configurar o acionador de inatividade
Esta secção mostra como o Copilot Studio inicia, repõe e executa temporizadores de inatividade, para que possa prever o que acontece quando uma conversação fica inativa.
Criar um tópico de acionador de inatividade
No Copilot Studio, aceda a Tópicos>Adicionar um tópico>A partir do zero.
Selecione a expressão acionadora. Em vez de uma expressão, selecione "Após um período de inatividade".
Defina a propriedade Duração da inatividade. No modo Entrada manual, escolha uma configuração predefinida na lista pendente (15 minutos, 30 minutos, 45 minutos ou 1 hora). Para introduzir 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 escreva o valor diretamente.Conceba o fluxo do tópico (enviar uma mensagem, fazer uma pergunta, terminar a conversação, etc.).
Guarde e publique o seu agente.
Referência de duração
| Tempo limite pretendido | 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: acionador de aviso único
[OnInactivity - 600 segundos]
Mensagem: "Ainda está aí? Responda para continuar."
Terminar Tópico
Exemplo: aviso aos 5 minutos e fecho automático aos 10 minutos
Este padrão é o mais comum. Crie dois tópicos de inatividade:
Tópico 1: aviso de inatividade (5 minutos)
- Acionador: após um período de inatividade
-
durationInSeconds:300 - Ações: Enviar uma mensagem: "Ainda está aí? Esta conversação será fechada em 5 minutos se não houver resposta."
Tópico 2: fecho automático (10 minutos)
- Acionador: após um período de inatividade
-
durationInSeconds:600 - Ações:
- Definir
Global.DeactivateInactivity = true(variável de guarda – ver Melhores Práticas) - Enviar uma mensagem: "Esta conversação será fechada devido à inatividade."
- Terminar conversação
- Definir
Exemplo: recolha de comentários
- Acionador: após um período de inatividade
- durationInSeconds:
120 - Ações:
- Perguntar: "Antes de sair, poderia avaliar a sua experiência? (1-5)"
- Armazenar a resposta
- Terminar conversação
Adicionar uma condição ao acionador
Adicione um nó de Condição logo a seguir ao acionador, para que este só seja executado em determinadas situações:
- Acionar apenas num canal específico:
=Activity.ChannelId = "msteams" - Acionar apenas se uma variável de guarda não estiver definida:
=Global.DeactivateInactivity = false
Padrão recomendado para múltiplos acionadores (tópico partilhado)
Se tiver vários acionadores com nós de Pergunta, utilize um tópico partilhado para evitar problemas de acumulação de diálogos:
Crie um tópico partilhado chamado
HandleInactivity:- Adicione uma variável global
Global.InactivityStage(Texto) - Verifique o valor da variável:
-
"warning"→ Envia uma mensagem de aviso com um nó de Pergunta ("Continuar?" / "Terminar?") -
"close"→ Enviar uma mensagem de fecho e terminar a conversação
-
- Adicione uma variável global
Primeiro acionador OnInactivity (300 segundos):
- Defina
Global.InactivityStage = "warning" - Redirecionar para
HandleInactivity
- Defina
Segundo acionador OnInactivity (600 segundos):
- Defina
Global.InactivityStage = "close" - Redirecionar para
HandleInactivity
- Defina
Esta abordagem impede que os nós de Pergunta se empilhem e criem ciclos de pedido.
Configuração específica de canais
Matriz de suporte de canal
| Canal | Nível de suporte | Notas |
|---|---|---|
| Site de demonstração | Totalmente suportado | Melhor canal para testar acionadores de inatividade. |
| Site personalizado (Direct Line) | Totalmente suportado | Funciona da mesma forma que o site de demonstração. |
| Microsoft Teams | Suportado | Funciona, mas consulte as orientações específicas do Teams na secção seguinte. Os tokens de autenticação podem expirar durante longos períodos de inatividade. |
| Dynamics 365 Customer Service | Totalmente suportado | Requer passos extra para fechar as conversações do Dynamics 365 Customer Service. Saiba mais em Configuração do Dynamics 365 Customer Service. |
| Microsoft 365 Copilot | O acionador é acionado, mas as mensagens não são entregues | Este cenário é uma limitação conhecida. O acionador é executado no servidor, mas a IU do Microsoft 365 Copilot não apresenta mensagens proativas dos agentes. Sem solução. |
| Painel de teste | Não suportado | Este cenário é intencional. Os temporizadores estão desativados para o ID de canal Studio. Utilize 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, utilize, em vez disso, o acionador OnSilence. |
Configuração do Teams
O Teams utiliza um modelo persistente de conversação única. A conversação nunca "termina" verdadeiramente na perspetiva do Teams. Este modelo significa que os acionadores de inatividade continuam a ser acionados repetidamente mesmo depois de o utilizador considerar a conversação concluída.
Padrão recomendado do Teams:
Crie uma variável global
Global.IsConversationClosed(booleano, predefinição:false).No início do seu tópico de inatividade, verifique:
If Global.IsConversationClosed = true→ Terminar Tópico (sair imediatamente).Quando a conversação termina logicamente (o utilizador diz "adeus", a satisfação do cliente é concluída, e assim por diante), defina
Global.IsConversationClosed = true.O acionador de inatividade pode ainda ser acionado, mas sai imediatamente sem apresentar qualquer mensagem.
Configuração do Dynamics 365 Customer Service
- As conversações são automaticamente fechadas após 30 minutos de inatividade por predefinição.
- Chamar apenas EndConversation 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
CloseOmnichannelConversationcomotrueatravé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 interromper o temporizador de inatividade?
| Funcionalidade ou Ação | Efeito nos temporizadores de inatividade |
|---|---|
| Terminar conversação | Limpa permanentemente todos os temporizadores |
| O utilizador envia uma mensagem | Repõe todos os temporizadores a zero (por design) |
| Condição de acionador com variável com inicialização anulada | O temporizador é excluído silenciosamente - nunca é ativado |
| A duração excede 7 dias (604.800 segundos) | O temporizador é silenciosamente ignorado |
| Limpar variáveis globais num tópico de inatividade | O agente perde o contexto da conversação |
| Transferir para um representante de suporte ao cliente | O temporizador mantém-se ativo e pode ser acionado durante a conversação com o representante de suporte ao cliente |
O painel de teste não suporta acionadores de inatividade
O painel de teste do Copilot Studio não aciona acionadores de inatividade. Esta limitação é propositada. Publique o seu agente e teste num canal em direto (site de demonstração, Teams, e assim por diante).
O Microsoft 365 Copilot não apresenta 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 existe qualquer solução. Consulte Limitações conhecidas do 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ário o processamento 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. Nenhum erro é apresentado. No modo de design, pode ser apresentado 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 a conversação limpa temporizadores de inatividade
Quando chama Terminar conversação num tópico, isso para permanentemente todos os temporizadores de inatividade ativos dessa conversação. Os temporizadores são eliminados por completo; não são repostos nem pausados. A operação elimina quaisquer eventos de inatividade pendentes que já estejam agendados.
Se pretende terminar 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 |
|---|---|
| Terminar conversação | Limpa todos os temporizadores; os temporizadores param permanentemente |
| Terminar 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 |
Sugestão
Se o seu tópico precisar de fechar o fluxo atual, mas ainda assim pretender que o temporizador de inatividade seja acionado mais tarde (por exemplo, um tópico de pesquisa no JIRA que é concluído, mas em que a conversação deve continuar a exceder o limite de tempo), utilize Terminar tópico atual em vez de Terminar conversação.
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
Após o sistema transferir a conversação para um representante de suporte ao cliente, o acionador de inatividade permanece ativo. Pode ser acionado durante a conversação com o agente humano e enviar mensagens do agente inesperadamente. Chame sempre EndConversation antes da transferência ou utilize uma variável de guarda.
As mensagens do acionador podem aparecer nas transcrições depois de a conversação terminar
Mesmo após o encerramento da conversação, o acionador ainda pode ser acionado e as mensagens são gravadas na transcrição. Esta condição não afeta a experiência do utilizador, mas pode aparecer na análise.
Canais de telefone, voz e IVR
O acionador de inatividade não está disponível para canais de telefone e voz. Em vez disso, utilize o acionador OnSilence.
Configuração incorretas comuns
Utilize esta secção para identificar e corrigir problemas comuns de configuração que podem impedir o funcionamento correto dos acionadores de inatividade.
Terminar a conversação no tópico de inatividade (risco de ciclo)
Problema: Ao chamar Terminar conversação a partir de um tópico de inatividade, são limpos todos os temporizadores de inatividade. No entanto, em canais com conversações persistentes (especialmente no Teams), a conversação subjacente mantém-se ativa. Em algumas configurações, o acionador ainda pode voltar a ser acionado, causando mensagens repetidas de "sessão terminada".
Solução (recomendada como prática defensiva): Utilizar uma variável de guarda:
Crie
Global.DeactivateInactivity(booleano, predefinição:false).No topo de cada tópico de inatividade, adicione uma condição: prosseguir apenas se
Global.DeactivateInactivity = false.Defina
Global.DeactivateInactivity = trueantes de chamar EndConversation.
Nota
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 equivale a cerca de 16,7 horas, e não a 60 segundos.
Solução: Verifique novamente os valores na tabela de referência da 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: Utilize 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.
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ção e parece não responder quando o utilizador regressa.
Solução: Reponha apenas as variáveis específicas de inatividade, não todo o estado da conversação.
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 está aí?" 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 o EndConversation não fecha a sessão do Dynamics 365 Customer Service. As conversações acumulam-se na fila do agente.
Solução: Defina CloseOmnichannelConversation como true via Power Automate no tópico de inatividade.
Duração dinâmica a partir de uma variável com inicialização anulada
Problema: Utilizar uma expressão do Power Fx como =Environment.InactivityTimeout para a duração funciona, mas se a variável tiver a inicialização anulada ou for nula, o acionador é excluído de forma silenciosa.
Solução: Certifique-se de que todas as variáveis utilizadas nas condições do acionador e nas expressões de duração têm valores predefinidos válidos.
Esperar que os acionadores funcionem após o escalamento para um agente
Problema: Após o sistema transferir para um representante de suporte ao cliente, o acionador é acionado na conversação 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.
Resolver problemas quando o acionador de inatividade não está a funcionar
Utilize esta árvore de decisão para diagnosticar o problema:
Onde é que está a testar?
- Se estiver a utilizar o painel de teste, pare. O painel de teste não suporta acionadores de inatividade Publique e teste num canal em direto.
Que canal está a utilizar?
- Microsoft 365 Copilot? Este canal tem uma limitação conhecida. O acionador é acionado, mas as mensagens não são entregues. Sem solução.
- Telefonia/IVR? Este canal não é suportado. Em vez disso, utilize o acionador OnSilence.
A orquestração de IA generativa está ativada?
- Os acionadores de inatividade utilizam um pipeline de temporizador independente do encaminhamento baseado em reconhecimento. No entanto, o comportamento destes acionadores com a orquestração de IA generativa não está totalmente validado. Se o processamento da inatividade for crítico, a orquestração clássica é a configuração recomendada.
O valor de
durationInSecondsé superior a 604.800?- Se sim, o acionador é silenciosamente ignorado. Reduza para 604.800 ou menos.
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. Mova a lógica para o agente principal.
Tem vários acionadores de inatividade?
- São acionados por ordem de duração (primeiro o mais curto). Certifique‑se de que aguarda tempo suficiente. Qualquer mensagem do utilizador repõe todos os temporizadores.
O acionador tem uma condição que faz referência a uma variável com a inicialização anulada?
- Se uma condição faz referência a uma variável ainda não definida, o acionador é silenciosamente excluído. Certifique-se de que todas as variáveis de condição têm valores predefinidos.
O agente foi republicado depois da conversação ter começado?
- Uma republicação pode repor o temporizador de inatividade para sessões ativas. Inicie uma nova conversação e teste novamente.
Se o acionador 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.
- Verifique se o tópico 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
Realize sempre testes num 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 ciclos. Crie
Global.DeactivateInactivity(booleano, predefiniçãofalse). Defina o valor comotrueantes 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 unidades. A propriedade está em segundos. 5 minutos =
300, não5.Para o Dynamics 365 Customer Service: emparelhe sempre
EndConversationcomcloseOmnichannelConversationvia Power Automate.Para cenários com múltiplos acionadores: limite os nós de Pergunta a um único acionador ou utilize o padrão de tópicos partilhados.
Chame
EndConversationantes de transferir para um representante de suporte ao cliente para desativar os acionadores de inatividade.Monitorize as transcrições das conversações após a implementação para verificar se as mensagens aparecem nos momentos esperados.
FAQ
Porque é que o acionador de inatividade não funciona no painel de teste?
Os temporizadores estão desativados no painel de teste por design. Publique o seu agente e teste-o num canal em direto.
Posso utilizar durações dinâmicas (por exemplo, de uma variável)?
Sim. O campo de duração aceita expressões de Power Fx. Pode utilizar uma variável de ambiente ou um valor calculado. A expressão é avaliada em runtime 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 conversações estão ativas?
O runtime adota a nova versão. Se o ID do acionador foi alterado (tópico eliminado e recriado), o sistema recorre à correspondência por duração. Se nenhum acionador corresponder por ID ou duração, o evento de inatividade pendente é descartado.
Como posso parar completamente os acionadores de inatividade no Teams?
Não é possível pará-los 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 acionador de inatividade funciona com autenticação?
Sim, mas para tempos limite de sessão longos (por exemplo, 24 horas), o token de autenticação do utilizador pode expirar antes de o acionador ser acionado. Certifique-se de que o seu agente processa a reautenticação de forma adequada.
O que acontece se o meu tópico de inatividade chamar um conector que demora muito tempo?
As chamadas de conectores têm um limite de tempo (30 segundos por predefinição, 60 segundos no máximo). Otimize o conector ou processe o tempo limite de forma adequada.
Conteúdos relacionados
- Definir acionadores de tópico
- Variáveis do sistema — InactivityTimer.Continue, InactivityTimer.Count
- Utilizar o Power Fx no Copilot Studio
- Configurar entrega para o Dynamics 365 Customer Service
- Configuração de voz e deteção de silêncio
- Implementar agentes no Teams
- Agentes ligados
- Transcrições de conversações no Copilot Studio
- Fechar automaticamente conversações de Omnicanal
- Limitações conhecidas no Microsoft 365 Copilot