Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aprenda a configurar los desencadenadores de inactividad, con guía sobre configuración, soporte de canales, limitaciones y resolución de problemas.
Información general
El desencadenador de inactividad, también llamado OnInactivity, o El usuario está inactivo durante un tiempo, es un desencadenador del sistema en Copilot Studio que activa automáticamente un tema cuando un usuario no envía ningún mensaje durante un periodo especificado. Se ejecuta en el lado del servidor, por lo que el agente evalúa el temporizador y ejecuta el tema incluso si el cliente del usuario está inactivo.
Entre los casos de uso comunes se incluye:
- Enviar un recordatorio para preguntar si el usuario sigue presente
- Liberar capacidad de agente cerrando automáticamente las conversaciones inactivas
- Recopilar comentarios (por ejemplo, una encuesta de satisfacción del cliente) antes de que termine la sesión
- Eliminar el estado de sesión para conversaciones abandonadas
Funcionamiento del desencadenador de inactividad
Esta sección explica cómo Copilot Studio evalúa los desencadenadores de inactividad, programa temporizadores y ejecuta temas cuando una conversación está inactiva.
Información general de la arquitectura
El usuario envía un mensaje.
El runtime evalúa todos los desencadenadores de OnInactivity .
El runtime agrupa por duración y selecciona uno por cada nivel de duración. El número de prioridad más bajo gana, la fecha de creación más temprana rompe los vínculos.
El tiempo de ejecución ordena los desencadenadores seleccionados por duración, siendo el más corto primero.
El tiempo de ejecución configura un temporizador para el siguiente activador en Azure Service Bus. Solo hay un temporizador activo a la vez.
El usuario permanece inactivo durante la duración configurada.
El temporizador se desencadena y el evento de inactividad se envía al entorno de ejecución.
El tiempo de ejecución coincide y ejecuta el tema de la inactividad.
El tiempo de ejecución calcula el tiempo restante hasta el siguiente desencadenador e inicia un nuevo temporizador.
Comportamientos clave
El temporizador se reinicia en cada mensaje de usuario.
Cada vez que un usuario envía un mensaje, el sistema vuelve a evaluar todos los activadores de inactividad y arma el siguiente, (comenzando por la de menor duración). Solo hay un temporizador activo a la vez.
Se admiten varios desencadenadores.
Puede tener múltiples OnInactivity para diferentes periodos de tiempo (p. ej., 5 minutos y 10 minutos). El sistema procesa los desencadenadores en orden ascendente de duración. Solo se selecciona un desencadenador por intervalo de duración. Si dos desencadenadores tienen la misma duración, se activa el desencadenador con el número
Prioritymás bajo. Si todavía hay un empate, el desencadenador creado anteriormente gana. El sistema descarta otros desencadenadores en la misma duración.Los desencadenadores se ponen en cola, no de manera paralela.
Solo hay un temporizador activo a la vez. Después de que se ejecute el desencadenador actual, el sistema calcula el tiempo restante hasta el siguiente desencadenador y arma un nuevo temporizador para cubrir la diferencia. El efecto neto es que los desencadenadores se activan en los intervalos correctos a partir del punto original de inactividad, aunque puede producirse una pequeña desviación si la ejecución del desencadenador tarda mucho tiempo.
Ejecución en segundo plano.
El evento de inactividad es un desencadenador en segundo plano. No requiere la interacción del usuario para ejecutarse.
Registro de transcripción.
El sistema registra los eventos de inactividad en las transcripciones de conversaciones. Se crea un nuevo registro de transcripción tras 30 minutos de inactividad.
Ejemplo de línea temporal (múltiples desencadenadores)
| Tiempo | Evento |
|---|---|
| 0:00 | El usuario envía el último mensaje |
| 5:00 | El desencadenador A (300 s) se activa y envía la advertencia |
| 10:00 | Desencadenador B (600 s) se activa, finaliza la conversación |
Si el usuario envía un mensaje a las 4:30, ambos temporizadores se reinician. El desencadenador A se desencadena a las 9:30 y el desencadenador B se desencadena a las 14:30.
Configurar un desencadenador de inactividad
Esta sección muestra cómo Copilot Studio inicia, reinicia y ejecuta los temporizadores de inactividad para que pueda predecir qué ocurre cuando una conversación queda inactiva.
Crear un tema de activación por inactividad
En Copilot Studio, vaya a Temas>Agregar un tema>Desde cero.
Seleccione la frase desencadenadora. En lugar de una frase, seleccione "Tras un periodo de inactividad".
Establezca la propiedad Duración de inactividad. En el modo Entrada manual, elija una opción predefinida del menú desplegable (15 minutos, 30 minutos, 45 minutos o 1 hora). Para introducir un valor personalizado en segundos o una fórmula Power Fx (por ejemplo,
Global.TimeoutSeconds), cambie el selector de modos a Fórmula y escriba el valor directamente.Diseñe el flujo del tema (envíe un mensaje, haga una pregunta, finalice la conversación, etc.).
Guarde y publique su agente.
Referencia de la duración
| Tiempo de espera deseado | Valor (segundos) |
|---|---|
| 30 segundos | 30 |
| 2 minutos | 120 |
| 5 minutos | 300 |
| 10 minutos | 600 |
| 1 hora | 3600 |
Importante
La propiedad utiliza segundos, no minutos ni milisegundos. Un valor de 60000 significa unas 16,7 horas, no 60 segundos.
Ejemplo: desencadenador de advertencia único
[OnInactivity - 600 segundos]
Mensaje: "¿Sigues ahí? Conteste para continuar."
Finalizar tema
Ejemplo: aviso de 5 minutos y cierre automático de 10 minutos
Este patrón es el más común. Cree dos temas de inactividad:
Tema 1: Aviso de inactividad (5 minutos)
- Desencadenador: Después de un periodo de inactividad
-
durationInSeconds:300 - Acciones: Enviar un mensaje: "¿Sigues ahí? Esta conversación se cerrará en 5 minutos si no hay respuesta."
Tema 2: Cierre automático (10 minutos)
- Desencadenador: Después de un periodo de inactividad
-
durationInSeconds:600 - Acciones:
- Establezca
Global.DeactivateInactivity = true(variable de protección - consulte Prácticas recomendadas) - Envíe un mensaje: "Esta conversación se cierra por inactividad."
- Finalizar conversación
- Establezca
Ejemplo: Recopilación de comentarios
- Desencadenador: Después de un periodo de inactividad
- durationInSeconds:
120 - Acciones:
- Pregunte: "Antes de irte, ¿quieres valorar tu experiencia?" (1-5)"
- Almacenar la respuesta
- Finalizar conversación
Agregar una condición al desencadenador
Agregue un nodo Condición justo después del desencadenador para que solo se ejecute en ciertas situaciones:
- Solo se activa en un canal específico:
=Activity.ChannelId = "msteams" - Solo se activa si una variable de protección no está establecida:
=Global.DeactivateInactivity = false
Patrón recomendado para múltiples desencadenadores (tema compartido)
Si tiene múltiples desencadenadores con nodos de Pregunta, use un tema compartido para evitar problemas de apilamiento de diálogos:
Cree un tema compartido llamado
HandleInactivity:- Agregue una variable global
Global.InactivityStage(Texto) - Compruebe su valor:
-
"warning"→ Envíe un mensaje de advertencia con un nodo de Pregunta ("¿Continuar?" / "¿Fin?") -
"close"→ Envíe un mensaje de cierre y termine la conversación
-
- Agregue una variable global
Primer desencadenador OnInactivity (300 segundos):
- Establecer
Global.InactivityStage = "warning" - Redirigir a
HandleInactivity
- Establecer
Segundo desencadenador OnInactivity (600 segundos):
- Establecer
Global.InactivityStage = "close" - Redirigir a
HandleInactivity
- Establecer
Este enfoque impide que los nodos de Pregunta se apilen y creen bucles de indicaciones.
Configuración específica de canal
Matriz de soporte de canal
| Canal | Nivel de compatibilidad | Notas |
|---|---|---|
| Sitio web de demostración | Totalmente admitido | El mejor canal para probar desencadenadores de inactividad. |
| Sitio web personalizado (Direct Line) | Totalmente admitido | Funciona igual que el sitio web de demostración. |
| Microsoft Teams | Compatible | Funciona, pero consulte la guía específica de Teams en la siguiente sección. Los tokens de autenticación pueden expirar durante largos periodos de inactividad. |
| Dynamics 365 Customer Service | Totalmente admitido | Se requieren pasos adicionales para cerrar las conversaciones de Dynamics 365 Customer Service. Obtenga más información en Configuración de Dynamics 365 Customer Service. |
| Microsoft 365 Copilot | El desencadenador se activa, pero no se entregan los mensajes | Este escenario es una limitación conocida. El desencadenador se ejecuta en el servidor, pero la interfaz de Microsoft 365 Copilot no muestra mensajes proactivos de los agentes. No hay solución alternativa. |
| Panel de pruebas | No admitido | Esto se debe al diseño. Los temporizadores están deshabilitados para el Id. de canal del Studio. Use el sitio web de demostración o un canal publicado para probar. |
| DirectEngine | No admitido | Esto se debe al diseño. Los temporizadores están deshabilitados para el Id. de canal de DirectEngine (entorno de diseño/prueba). |
| Telefonía/IVR | No admitido | Para los canales de voz, use el desencadenador OnSilence en su lugar. |
Configuración de Teams
Teams utiliza un modelo persistente de conversación única. La conversación nunca "termina" realmente desde la perspectiva de Teams. Este modelo significa que los desencadenadores de inactividad se vuelven a activar incluso después de que el usuario considere que la conversación ha terminado.
Patrón de Teams recomendado:
Cree una variable global
Global.IsConversationClosed(tipo booleano, valor predeterminado:false).Al inicio de su tema de inactividad, compruebe:
If Global.IsConversationClosed = true→ Fin del tema (salir inmediatamente).Cuando la conversación termina lógicamente (el usuario dice "adiós", se completa la satisfacción del cliente, y así sucesivamente), establezca
Global.IsConversationClosed = true.El desencadenador de inactividad podría seguir activándose, pero termina de inmediato sin mostrar ningún mensaje.
Configuración de Dynamics 365 Customer Service
- De manera predeterminada, las conversaciones se cierran automáticamente tras 30 minutos de inactividad.
- Llamar a EndConversation por sí sola no cierra la sesión de Dynamics 365 Customer Service. La capacidad de los agentes no se libera.
- Para cerrar completamente la conversación, establezca la variable de contexto
CloseOmnichannelConversationentruea través de un flujo de Power Automate y luego utilice un nodo Transferir a agente.
Limitaciones conocidas
Referencia rápida: ¿Qué puede afectar el temporizador de inactividad?
| Característica o acción | Efecto sobre los temporizadores de inactividad |
|---|---|
| Finalizar conversación | Elimina permanentemente todos los temporizadores |
| El usuario envía un mensaje | Reinicia todos los temporizadores a cero (por diseño) |
| Condición de disparo con variable no inicializada | El temporizador está excluido silenciosamente: nunca se activa |
| La duración supera los 7 días (604 800 segundos) | El temporizador se ignora sin avisar |
| Eliminación de variables globales en un tema de inactividad | el agente pierde el contexto de la conversación |
| Transferencia al representante del servicio al cliente | El temporizador sigue activo y puede activarse durante la conversación con el representante del servicio al cliente |
El panel de pruebas no admite desencadenadores de inactividad
El panel de pruebas de Copilot Studio no activa los desencadenadores de inactividad. Esta limitación es así por diseño. Publique a su agente y pruébalo en un canal activo (sitio web de demostración, Teams, etc.).
Microsoft 365 Copilot no muestra mensajes de inactividad
El desencadenador se ejecuta en el servidor, pero cualquier salida (mensajes, tarjetas) no se entrega al usuario en la experiencia de Microsoft 365 Copilot. No hay ninguna solución alternativa. Consulte Limitaciones conocidas de Teams.
Orquestación de IA generativa
Los desencadenadores de inactividad se implementan como desencadenadores clásicos de temas de orquestación y utilizan una cadena de eventos separada basada en temporizador. Cuando se activa la orquestación de IA generativa, el enrutamiento de temas ya no depende del reconocimiento clásico de desencadenadores, por lo que los temas de inactividad pueden no activarse de forma fiable en todas las configuraciones. Si se requiere el manejo de inactividad, la orquestación clásica es la configuración recomendada y totalmente validada.
Agentes conectados: no se admite la inactividad del agente secundario
En configuraciones de agentes conectados, los desencadenadores de inactividad en los agentes secundarios no funcionan y devuelven "Respuesta de agente conectado no válida". Ponga toda la lógica de inactividad en el agente principal.
Duración máxima: 7 días (604 800 segundos)
Los bots publicados omiten de forma silenciosa los desencadenadores con duraciones de más de 604 800 segundos. No se muestra ningún error. En modo diseño, puede aparecer un error. No existe un mínimo obligatorio: las duraciones cortas (menos de unos 15 segundos) pueden comportarse de manera impredecible debido a la latencia de la infraestructura del temporizador.
Terminar la conversación elimina los temporizadores de inactividad
Al llamar a Finalizar conversación dentro de un tema, se detienen permanentemente todos los temporizadores de inactividad activos para esa conversación. Los temporizadores se eliminan completamente; no se reinician ni se pausan. La operación descarta cualquier evento de inactividad pendiente que ya esté programado.
Si desea finalizar el flujo de un tema sin afectar los temporizadores de inactividad, utilice una de las acciones alternativas:
| Acción (en Copilot Studio) | Efecto sobre los temporizadores de inactividad |
|---|---|
| Finalizar conversación | Elimina todos los temporizadores; estos se detienen de forma permanente |
| Finalizar tema actual (EndDialog) | No afecta a los temporizadores; siguen funcionando |
| Cancelar todos los temas (CancelAllDialogs) | No afecta a los temporizadores; siguen funcionando |
Sugerencia
Si su tema necesita cerrar el flujo actual pero aún quiere que el temporizador de inactividad se active más tarde (por ejemplo, un tema de búsqueda en JIRA que finaliza pero la conversación debería seguir esperando el tiempo de inactividad), use Finalizar tema actual en lugar de Finalizar conversación.
Usar una variable de protección para evitar que se vuelva a desencadenar sigue siendo una práctica defensiva recomendada.
El desencadenador se activa después de la escalación del agente
Después de que el sistema transfiera una conversación a un representante del servicio al cliente, el desencadenador de inactividad permanece activo. Podría desencadenarse durante la conversación del agente humano y enviar mensajes del agente de forma inesperada. Llama a EndConversation antes de transferir, o usa una variable de protección.
Los mensajes del desencadenador pueden aparecer en las transcripciones después de que la conversación termine
Aun después de que la conversación haya finalizado, el desencadenador puede activarse y sus mensajes quedan registrados en la transcripción. Esta condición no afecta la experiencia del usuario, pero puede aparecer en las analíticas.
Canales de teléfono, voz e IVR
El desencadenador de inactividad no está disponible para los canales de teléfono y voz. Utilice el desencadenador OnSilence en su lugar.
Configuraciones erróneas comunes
Use esta sección para identificar y solucionar problemas comunes de configuración que pueden impedir que los desencadenadores de inactividad funcionen correctamente.
Terminar la conversación en el tema de inactividad (riesgo de bucle)
Problema: Cuando llama a la acción Terminar conversación desde un tema de inactividad, elimina todos los temporizadores de inactividad. Sin embargo, en canales con conversaciones persistentes (especialmente Teams), la conversación subyacente permanece activa. En algunas configuraciones, el desencadenador aún puede volver a dispararse, causando mensajes repetidos de "sesión finalizada".
Solución (recomendada como práctica defensiva): Use una variable de protección:
Cree
Global.DeactivateInactivity(booleano, valor predeterminado:false).Al principio de cada tema de inactividad, agrega una condición: solo proceder si
Global.DeactivateInactivity = false.Configure
Global.DeactivateInactivity = trueantes de llamar a EndConversation.
Nota
El patrón de variable de protección es especialmente importante para los canales de Teams, donde el modelo de conversación persistente significa que la conversación, nunca termina realmente.
Duración establecida en un valor incorrecto
El problema:durationInSeconds está en segundos. Un valor de 60000 es aproximadamente 16,7 horas, no 60 segundos.
Solución: compruebe sus valores contra la tabla de referencia de la Sección 3.
Nodos de preguntas en varios temas de inactividad (apilamiento de mensajes)
Problema: si varios desencadenadores tienen cada uno un nodo de Pregunta, el nodo de Pregunta del segundo desencadenador interrumpe al primero. Cuando el usuario responde, el primer nodo Pregunta se reanuda y vuelve a realizar la indicación, creando un bucle.
Solución: Use el patrón de tema compartido. Consolide la lógica del nodo Pregunta en un solo tema, o asegúrese de que solo un desencadenador tenga un nodo Pregunta.
Eliminación de variables globales en el tema de inactividad
Problema: si el tema de inactividad borra variables globales, el agente pierde todo el contexto de la conversación y parece no responder cuando el usuario regresa.
Solución: reinicie solo las variables específicas de inactividad, no todo el estado de la conversación.
No activar desencadenadores de inactividad en Teams
Problema: En Teams, el modelo de conversación persistente significa que los desencadenadores se activan indefinidamente. Los usuarios reciben mensajes repetidos de "¿sigues ahí?" horas o días más tarde.
Solución: Use siempre el patrón de variable de acceso para Teams.
No llamar a la función closeOmnichannelConversation
Problema: para los agentes de Dynamics 365 Customer Service, llamar solo a EndConversation no cierra la sesión de Dynamics 365 Customer Service. Las conversaciones se acumulan en la cola de agentes.
Solución: Establece CloseOmnichannelConversation en true a través de Power Automate en su tema de inactividad.
Duración dinámica basada en una variable no inicializada
Problema: el uso de una expresión de Power Fx como =Environment.InactivityTimeout para la duración funciona, pero si la variable está sin inicializar o es nula, el desencadenador se omite silenciosamente.
Solución: asegúrese de que todas las variables utilizadas en las condiciones del desencadenador y las expresiones de duración tengan valores predeterminados válidos.
Esperar a que los desencadenadores funcionen tras la escalación a un agente
Problema: después de que el sistema transfiera la conversación a un representante del servicio al cliente, el desencadenador se activa en la conversación original del agente y envía mensajes durante la sesión con el agente humano.
Solución: Finalice la conversación del agente en el momento de la escalación o use una variable Global.IsEscalated = true de protección y compruébela al principio del tema de inactividad.
Solución de problemas cuando el desencadenador de inactividad no funciona
Utilice este árbol de decisión para diagnosticar el problema:
¿Dónde está realizando las pruebas?
- Si está usando el panel de prueba, deje de usarlo. El panel de pruebas no admite desencadenadores de inactividad. Publique y pruebe en un canal en vivo.
¿Qué canal usa?
- Microsoft 365 Copilot? Este canal tiene una limitación conocida. El desencadenador se desencadena, pero no se entregan los mensajes. No hay solución alternativa.
- Telefonía/IVR? Este canal no es compatible. Utilice el desencadenador OnSilence en su lugar.
¿Está habilitada la orquestación de IA generativa?
- Los desencadenadores de inactividad utilizan un proceso de temporizador separado del enrutamiento basado en reconocimiento. Sin embargo, su comportamiento con la orquestación de IA generativa no está completamente validado. Si la gestión de inactividad es crítica, la orquestación clásica es la configuración recomendada.
¿Es su
durationInSecondsmayor de 604 800?- Si es así, el desencadenador se omite silenciosamente. Reduzca a 604 800 o menos.
¿El agente es un agente secundario en una configuración del Agente conectado?
- Si es así, no se admiten activadores de inactividad del agente secundario. Mueva la lógica al agente primario.
¿Tiene múltiples desencadenadores de inactividad?
- Se disparan en orden de duración (la más corta primero). Asegúrese de esperar lo suficiente. Cualquier mensaje de usuario reinicia todos los temporizadores.
¿Tiene el desencadenador alguna condición que haga referencia a una variable no inicializada?
- Si una condición hace referencia a una variable no inicializada, el desencadenador se descarta silenciosamente. Asegúrese de que todas las variables de condición tengan valores predeterminados.
¿Se volvió a publicar el agente tras comenzar la conversación?
- Una republicación podría reiniciar el temporizador de inactividad para las sesiones activas. Inicie una nueva conversación y pruebe nuevamente.
Si el desencadenador de inactividad sigue sin funcionar, pruebe las siguientes opciones:
- Revise las transcripciones de las conversaciones para detectar actividad de temas de inactividad. Si aparece el tema pero el usuario no vio el mensaje, el problema es una entrega específica del canal.
- Verifique que el tema no esté desactivado ni archivado.
- Confirme que el tipo de desencadenador sea "Después de un periodo de inactividad", no un desencadenador de frase.
Prácticas recomendadas
Pruebe siempre en un canal publicado. Use el sitio web de demostración para pruebas rápidas. Nunca confíe en el panel de prueba.
Use una variable de protección para evitar bucles. Cree
Global.DeactivateInactivity(booleano, predeterminadofalse). Asígnele el valortrueantes de llamar a EndConversation. Compruébelo al principio de cada tema de inactividad.Mantenga las duraciones razonables. Mínimo ~15 segundos, máximo 604 800 segundos (7 días).
Verifique sus unidades. La propiedad se mide en segundos. 5 minutos =
300, no5.Para Dynamics 365 Customer Service: Empareje siempre
EndConversationconcloseOmnichannelConversationa través de Power Automate.Para escenarios con múltiples desencadenadores: Limite los nodos de pregunta a un solo desencadenador, o utilice el patrón de tema compartido.
Llame
EndConversationantes de transferir la llamada a un representante del servicio al cliente para desactivar los desencadenadores de inactividad.Supervise las transcripciones de la conversación después de la implementación para verificar que los mensajes aparezcan en los momentos esperados.
Preguntas más frecuentes
¿Por qué no funciona el desencadenador de inactividad en el panel de pruebas?
Los temporizadores están desactivados en el panel de pruebas por diseño. Publique su agente y pruébelo en directo en un canal.
¿Puedo usar duraciones dinámicas (por ejemplo, de una variable)?
Sí. El campo de duración acepta expresiones de Power Fx. Puede usar una variable de entorno o un valor calculado. La expresión se evalúa en tiempo de ejecución cuando se arma el temporizador. Asegúrese de que la variable esté inicializada y contenga un número válido.
¿Qué ocurre si publico una nueva versión del agente mientras hay conversaciones activas?
El tiempo de ejecución adopta la nueva versión. Si el ID del desencadenador ha cambiado (tema eliminado y vuelto a crear), el sistema vuelve a usar la coincidencia por duración. Si ningún desencadenador coincide por identificador o duración, se descarta el evento de inactividad pendiente.
Cómo detengo completamente los desencadenadores de inactividad en Teams?
No es posible detenerlos en el nivel de plataforma. Use el patrón de variable de acceso: establezca un valor booleano cuando finalice la conversación lógicamente y compruébelo al principio del tema de inactividad para salir temprano.
¿El desencadenador de inactividad funciona con autenticación?
Sí, pero para tiempos de espera prolongados de sesión (por ejemplo, 24 horas), el token de autenticación del usuario podría expirar antes de que se dispare el desencadenador. Asegúrese de que su agente maneje la reautenticación de manera adecuada.
¿Qué ocurre si mi tema de inactividad llama a un conector que tarda mucho tiempo?
Las llamadas al conector tienen un límite de tiempo (30 segundos de manera predeterminada, 60 segundos máximo). Optimice el conector o gestione el tiempo de espera con elegancia.
Contenido relacionado
- Establecer desencadenadores de temas
- Variables del sistema: InactivityTimer.Continue, InactivityTimer.Count
- Utilice Power Fx en Copilot Studio
- Configurar la transferencia a Dynamics 365 Customer Service
- Configuración de voz y detección de silencio
- Implementar agentes en Teams
- Agentes conectados
- Transcripciones de la conversación en Copilot Studio
- Cerrar automáticamente conversaciones de Omnichannel
- Limitaciones conocidas en Microsoft 365 Copilot