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.
Obtenga información sobre cómo configurar desencadenadores de inactividad, con instrucciones sobre la configuración, el soporte técnico del canal, las limitaciones y la solución de problemas.
Panorama
El desencadenador de inactividad, también denominado OnInactivity o El usuario está inactivo durante un tiempo, es un desencadenador del sistema en Copilot Studio que desencadena automáticamente un tema cuando un usuario no envía ningún mensaje durante un período especificado. Ejecuta el lado 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 incluyen:
- Enviar un aviso que le pregunte si el usuario todavía está ahí
- Optimice la capacidad de los agentes cerrando automáticamente las conversaciones inactivas.
- Recopilar comentarios (por ejemplo, una encuesta de satisfacción del cliente) antes de que finalice una sesión
- Eliminar el estado de sesión para conversaciones abandonadas
Funcionamiento del desencadenador de inactividad
En esta sección se 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 tiempo de ejecución evalúa todos los desencadenadores OnInactivity .
El tiempo de ejecución agrupa los desencadenadores 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, más corto primero.
El entorno de ejecución configura un temporizador para el siguiente activador en Azure Service Bus. Solo hay un temporizador activo a la vez.
El usuario está inactivo durante la duración configurada.
El temporizador se desencadena y el evento de inactividad se envía al entorno de ejecución.
El entorno de ejecución coincide con y ejecuta el tema de la inactividad.
El tiempo de ejecución calcula el tiempo restante hasta el siguiente disparador e inicia un nuevo temporizador.
Comportamientos clave
El temporizador se restablece 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 en cualquier momento.
Se admiten varios desencadenadores.
Puede tener varios desencadenadores OnInactivity de diferentes duraciones (por ejemplo, 5 minutos y 10 minutos). El sistema los procesa en orden ascendente de duración. Solo se selecciona un desencadenador por nivel de duración. Si dos desencadenadores tienen la misma duración, se activa el desencadenador con el número inferior
Priority. Si todavía hay un empate, el desencadenador creado anteriormente gana. El sistema descarta otros desencadenadores durante la misma duración.Los desencadenadores se ponen en cola, no de manera paralela.
Solo hay un temporizador activo a la vez. Una vez ejecutado el desencadenador actual, el entorno de ejecución calcula el tiempo restante hasta el siguiente desencadenador y activa un nuevo temporizador para la diferencia. El efecto neto es que los desencadenadores se activan en los desplazamientos correctos desde el punto de inactividad original, aunque puede producirse un desfase menor 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 activarse.
Grabación de transcripciones.
El sistema registra eventos de inactividad en transcripciones de conversación. Se crea un nuevo registro de transcripción después de 30 minutos de inactividad.
Escala de tiempo de ejemplo (varios desencadenadores)
| Hora | Evento |
|---|---|
| 0:00 | El usuario envía el último mensaje |
| 5:00 | Desencadenador A (300 s) se activa, envía una 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 restablecen. El desencadenador A se desencadena a las 9:30 y el desencadenador B se desencadena a las 14:30.
Configuración del desencadenador de inactividad
En esta sección se muestra cómo Copilot Studio inicia, restablece y ejecuta temporizadores de inactividad para que pueda predecir lo que sucede cuando una conversación deja de estar inactiva.
Crear un tema de desencadenador de inactividad
En Copilot Studio, vaya a Topics>Agregar un tema>From blank.
Seleccione la frase de activación. En lugar de una frase, seleccione "Después de un período de inactividad".
Establezca la propiedad Duración de inactividad . En el modo de entrada manual , elija un valor preestablecido en la lista desplegable (15 minutos, 30 minutos, 45 minutos o 1 hora). Para especificar un valor personalizado en segundos o una fórmula de Power Fx (por ejemplo,
Global.TimeoutSeconds), cambie el selector de modo 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 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 usa segundos, no minutos o milisegundos. Un valor de 60000 significa aproximadamente 16,7 horas, no 60 segundos.
Ejemplo: Desencadenador de advertencia único
[OnInactivity - 600 segundos]
Mensaje: "¿Sigues ahí? Responder para continuar".
Fin del tema
Ejemplo: advertencia 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: Advertencia de inactividad (5 minutos)
- Desencadenador: después de un período de inactividad
-
durationInSeconds:300 - Acciones: Enviar un mensaje: "¿Sigues ahí? Esta conversación se cierra en 5 minutos si no hay respuesta".
Tema 2: Cierre automático (10 minutos)
- Desencadenador: después de un período de inactividad
-
durationInSeconds:600 - Actions:
- Establecer
Global.DeactivateInactivity = true(variable de protección: consulte Procedimientos recomendados) - Envíe un mensaje: "Esta conversación se cierra debido a la inactividad".
- Finalizar conversación
- Establecer
Ejemplo: Recopilación de comentarios
- Desencadenador: después de un período de inactividad
- duraciónEnSegundos:
120 - Actions:
- Pregunte: "Antes de ir, ¿valoraría su experiencia? (1-5)"
- Almacenar la respuesta
- Finalizar conversación
Adición de una condición al desencadenador
Agregue un nodo Condición justo después del desencadenador para que solo se ejecute en determinadas situaciones:
- Solo se activa en un canal específico:
=Activity.ChannelId = "msteams" - Solo dispara si no se establece una variable de guardia:
=Global.DeactivateInactivity = false
Patrón recomendado para varios desencadenadores (tema compartido)
Si tiene varios desencadenadores con nodos Pregunta, use un tema compartido para evitar problemas de apilamiento de diálogos:
Cree un tema compartido denominado
HandleInactivity:- Agregar una variable
Global.InactivityStageglobal (Text) - Compruebe su valor:
-
"warning"→ Enviar un mensaje de advertencia con un nodo Pregunta ("Continuar?" / "Finalizar?") -
"close"→ Enviar un mensaje de cierre y una conversación final
-
- Agregar una variable
Primer desencadenador OnInactivity (300 segundos):
- Establezca
Global.InactivityStage = "warning". - Redirigir a
HandleInactivity
- Establezca
Segunda activación de OnInactivity (600 segundos):
- Establezca
Global.InactivityStage = "close". - Redirigir a
HandleInactivity
- Establezca
Este enfoque impide que los nodos de preguntas se apilan y creen bucles de solicitud.
Configuración específica del canal
Matriz de soporte del canal
| Canal | Nivel de soporte | Notes |
|---|---|---|
| Sitio web de demostración | Totalmente compatible | Mejor canal para probar desencadenadores de inactividad. |
| Sitio web personalizado (Direct Line) | Totalmente compatible | Funciona igual que el sitio web de demostración. |
| Equipos de Microsoft | Supported | Funciona, pero consulte instrucciones específicas de Teams en la sección siguiente. Los tokens de autenticación pueden expirar durante largos períodos de inactividad. |
| Servicio al cliente de Dynamics 365 | Totalmente compatible | Requiere pasos adicionales para cerrar Dynamics 365 Customer Service conversaciones. Obtenga más información en la configuración de Dynamics 365 Customer Service. |
| Copiloto de Microsoft 365 | El desencadenador se activa, pero los mensajes no se entregan | Este escenario es una limitación conocida. El desencadenador se ejecuta del lado del servidor, pero la interfaz de usuario de Microsoft 365 Copilot no muestra mensajes proactivos de los agentes. Ninguna solución alternativa. |
| Panel de pruebas | No está soportado | Este escenario es por diseño. Los temporizadores están deshabilitados para el ID de canal de Studio. Use el sitio web de demostración o un canal publicado para probarlo. |
| DirectEngine | No está soportado | Este escenario es por diseño. Los temporizadores están deshabilitados para el identificador de canal de DirectEngine (entorno de diseño o prueba). |
| Telefonía/IVR | No está soportado | En el caso de los canales de voz, use el desencadenador OnSilence en su lugar. |
Configuración de Teams
Teams usa un modelo de conversación única persistente. La conversación nunca realmente "termina" desde la perspectiva de Teams. Este modelo implica que los desencadenadores de inactividad continúan activándose incluso después de que el usuario considere la conversación finalizada.
Patrón de Teams recomendado:
Cree una variable
Global.IsConversationClosedglobal (booleana, valor predeterminado:false).Al principio del tema sobre inactividad, compruebe:
If Global.IsConversationClosed = true→ Finalizar tema (salga inmediatamente).Cuando la conversación finaliza lógicamente (el usuario dice "adiós", la satisfacción del cliente se completa, etc.), establezca
Global.IsConversationClosed = true.El desencadenador de inactividad puede seguir activando, pero se cierra inmediatamente sin mostrar un mensaje.
configuración de Dynamics 365 Customer Service
- Las conversaciones se cierran automáticamente después de 30 minutos de inactividad de forma predeterminada.
- Llamar a EndConversation por sí sola no cierra la sesión de Dynamics 365 Customer Service. No se libera la capacidad del agente.
- Para cerrar completamente la conversación, establezca la variable de contexto
CloseOmnichannelConversationentruemediante un flujo de Power Automate y, a continuación, use un nodo Transferir a agente.
Limitaciones conocidas
Referencia rápida: ¿Qué puede interrumpir el temporizador de inactividad?
| Característica o acción | Efecto en los temporizadores de inactividad |
|---|---|
| Finalizar conversación | Borra permanentemente todos los temporizadores |
| El usuario envía un mensaje | Restablece todos los temporizadores a cero (por diseño) |
| Condición de desencadenador con variable sin inicializar | El temporizador está excluido silenciosamente: nunca se activa. |
| La duración supera los 7 días (604 800 segundos) | El temporizador se omite sin aviso |
| Borrar variables globales en un tema de inactividad | el agente pierde el contexto de conversación |
| Transferencia al representante del servicio de atención al cliente | El temporizador permanece activo y puede activarse durante la conversación del representante de atención al cliente |
El panel de prueba no admite desencadenadores de inactividad
El panel de prueba de Copilot Studio no activa desencadenadores de inactividad. Esta limitación es así por diseño. Publique su agente y pruebe en un canal en vivo (sitio web de demostración, Teams, etc.).
Microsoft 365 Copilot no muestra mensajes de inactividad
El desencadenador se ejecuta del lado del servidor, pero cualquier resultado (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 de temas de orquestación clásica y usan una canalización de eventos independiente basada en temporizador. Cuando la orquestación de IA generativa está activada, el enrutamiento de temas ya no se basa en el reconocimiento clásico de desencadenadores, por lo que es posible que los temas de inactividad no se activen de forma confiable en todas las configuraciones. Si se requiere el control 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 las configuraciones del agente conectado, los desencadenadores de inactividad en el agente secundario no funcionan y devuelven "Respuesta del agente conectado no válida". Toda la lógica de inactividad debe ubicarse en el agente primario.
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 aparece ningún error. En el modo de diseño, podría aparecer un error. No hay ningún mínimo aplicado: las duraciones cortas (menos de 15 segundos) pueden comportarse de forma impredecible debido a la latencia de la infraestructura del temporizador.
La conversación final borra 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 borran completamente; no se restablecen ni se pausan. La operación descarta los eventos de inactividad pendientes que ya están programados.
Si desea finalizar el flujo de un tema sin interrumpir los temporizadores de inactividad, use una de las acciones alternativas:
| Acción (en Copilot Studio) | Efecto en los temporizadores de inactividad |
|---|---|
| Finalizar conversación | Borra todos los temporizadores; Los temporizadores se detienen permanentemente |
| Fin del tema actual (EndDialog) | No afecta a los temporizadores; Los temporizadores continúan ejecutándose |
| Cancelar todos los temas (CancelAllDialogs) | No afecta a los temporizadores; Los temporizadores continúan ejecutándose |
Sugerencia
Si su tópico necesita cerrar el flujo actual, pero desea que el temporizador de inactividad se active más adelante (por ejemplo, un tópico de búsqueda JIRA que se complete, pero la conversación todavía debe expirar), use Terminar el tópico actual en lugar de Finalizar conversación.
El uso de una variable de protección para evitar la reactivación sigue siendo una práctica defensiva recomendada.
El trigger se activa después de la escalación del agente
Una vez que el sistema transfiere una conversación a un representante de 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. Llame siempre a EndConversation antes de la transferencia o use una variable de protección.
Los mensajes de desencadenador pueden aparecer en transcripciones después de que finalice la conversación
Incluso después de que se cierre una conversación, el desencadenador podría seguir activando y sus mensajes se graban en la transcripción. Esta condición no afecta a la experiencia del usuario, pero puede aparecer en el análisis.
Canales de teléfono, voz e IVR
El desencadenador de inactividad no está disponible para los canales de teléfono y voz. Use el desencadenador OnSilence en su lugar.
Errores de configuración comunes
Use esta sección para identificar y corregir problemas comunes de configuración que pueden impedir que los desencadenadores de inactividad funcionen según lo previsto.
Finalizar la conversación en el tema de inactividad – riesgo de bucle
Problema: Al llamar a Finalizar conversación desde un tema de inactividad, borra todos los temporizadores de inactividad. Sin embargo, en los canales con conversaciones persistentes (especialmente Teams), la conversación subyacente permanece activa. En algunas configuraciones, el desencadenador todavía puede volver a activarse, lo que provoca mensajes repetidos de "sesión finalizada".
Solución (recomendada como práctica defensiva): Usar una variable de protección:
Crear
Global.DeactivateInactivity(booleano, valor predeterminado:false).En la parte superior de cada tema de inactividad, agregue una condición: solo continúe si
Global.DeactivateInactivity = false.Establezca esto
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 el valor incorrecto
Problema:durationInSeconds es en segundos. Un valor de 60000 es de aproximadamente 16,7 horas, no 60 segundos.
Solución: Compruebe los valores en 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 un nodo Pregunta , el segundo nodo Pregunta interrumpe el primero. Cuando el usuario responde, el primer nodo Pregunta continúa y vuelve a preguntar, creando un bucle.
Solución: Use el patrón de tema compartido. Consolide la lógica del nodo de preguntas en un solo tema o asegúrese de que solo un desencadenador tenga un nodo Pregunta .
Borrar variables globales en el tema de inactividad
Problema: Si el tema de inactividad borra las variables globales, el agente pierde todo el contexto de conversación y aparece sin responder cuando el usuario vuelve.
Solución: Solo restablezca variables específicas de la inactividad, no todo el estado de la conversación.
No activar disparadores 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 "todavía está ahí?" horas o días después.
Solución: Use siempre el patrón de variable de acceso para Teams.
No llamar a la función closeOmnichannelConversation
Problem: 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 del agente.
Solución: Establece CloseOmnichannelConversation en true a través de Power Automate en tu tema de inactividad.
Duración dinámica de una variable sin inicializar
Problema: El uso de una expresión de Power Fx como =Environment.InactivityTimeout para la duración funciona, pero si la variable no está inicializada o es nula, el desencadenador se excluye silenciosamente.
Solución: Asegúrese de que todas las variables usadas en las condiciones de desencadenador y las expresiones de duración tienen valores predeterminados válidos.
Esperar que los desencadenadores funcionen después de la escalación del agente
Problema: Una vez que el sistema se transfiere a un representante de servicio al cliente, el desencadenador se activa en la conversación original del agente y envía mensajes durante la sesión del 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érrela al principio del tema de inactividad.
Solución de problemas cuando el desencadenador de inactividad no funciona
Use este árbol de decisión para diagnosticar el problema:
¿Dónde estás probando?
- Si está usando el panel de prueba, deténgalo. El panel de prueba no admite desencadenadores de inactividad. Publique y pruebe en un canal en directo.
¿Qué canal usa?
- Microsoft 365 Copilot? Este canal tiene una limitación conocida. El desencadenador se desencadena, pero no se entregan los mensajes. Ninguna solución alternativa.
- ¿Telefonía/IVR? No se admite este canal. Use el desencadenador OnSilence en su lugar.
¿Está habilitada la orquestación de IA generativa?
- Los desencadenadores de inactividad usan una tubería de temporizador distinta del enrutamiento basado en reconocimiento. Sin embargo, su comportamiento con la orquestación de IA generativa no está completamente validado. Si el control de inactividad es crítico, la orquestación clásica es la configuración recomendada.
durationInSeconds¿Es mayor que 604.800?- Si es así, el desencadenador se omite silenciosamente. Reduzca a 604 800 o inferior.
¿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 varios desencadenadores de inactividad?
- Se disparan en orden de duración (la más corta primero). Asegúrese de que esté esperando lo suficiente. Cualquier mensaje de usuario restablece todos los temporizadores.
¿El desencadenador tiene una condición que hace referencia a una variable no inicializada?
- Si una condición hace referencia a una variable que aún no se ha establecido, el desencadenador se excluye de forma silenciosa. Asegúrese de que todas las variables de condición tienen valores predeterminados.
¿Se volvió a publicar el agente después de que comenzó la conversación?
- Una nueva publicación podría restablecer el temporizador de inactividad para las sesiones activas. Inicie una nueva conversación y vuelva a probarlo.
Si el desencadenador de inactividad sigue sin funcionar, pruebe las siguientes opciones:
- Revise las transcripciones de conversación para detectar cualquier actividad en temas inactivos. Si aparece el tema pero el usuario no vio el mensaje, el problema es una entrega específica del canal.
- Compruebe que el tema no está deshabilitado ni archivado.
- Confirme que el tipo de desencadenador es "Después de un período de inactividad", no un desencadenador de frases.
Prácticas recomendadas
Pruebe siempre en un canal publicado. Use el sitio web de demostración para realizar pruebas rápidas. Nunca confíe en el panel de pruebas.
Use una variable de protección para evitar bucles. Crear
Global.DeactivateInactivity(booleano, valor predeterminadofalse). Establézcalo entrueantes de llamar a EndConversation. Compruébalo al principio de cada tema de inactividad.Mantenga las duraciones razonables. Mínimo aproximadamente 15 segundos, máximo 604 800 segundos (7 días).
Compruebe las unidades. La propiedad está en segundos. 5 minutos =
300, no5.Para Dynamics 365 Customer Service: empareja siempre
EndConversationconcloseOmnichannelConversationa través de Power Automate.Para escenarios de varios desencadenadores: limite los nodos de pregunta a un desencadenador o use el patrón de tema compartido.
Llame
EndConversationantes de transferir la llamada a un representante de servicio al cliente para desactivar los desencadenadores de inactividad.Supervise las transcripciones de conversación después de la implementación para comprobar que los mensajes aparecen en momentos esperados.
Preguntas más frecuentes
¿Por qué el desencadenador de inactividad no funciona en el panel de prueba?
Los temporizadores se deshabilitan en el panel de prueba por diseño. Publique su agente y pruébelo en directo en un canal.
¿Puedo usar duraciones dinámicas (por ejemplo, desde 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 el temporizador está armado. Asegúrese de que la variable se inicializa y contiene un número válido.
¿Qué ocurre si publico una nueva versión del agente mientras las conversaciones están activas?
El tiempo de ejecución adopta la nueva versión. Si el ID del trigger ha cambiado (tema eliminado y vuelto a crear), el sistema vuelve a usar la coincidencia por duración. Si ningún disparador coincide por identificador o duración, se descarta el evento de inactividad pendiente.
¿Cómo detengo completamente los desencadenadores de inactividad en Teams?
No pueden detenerlos a nivel de plataforma. Use el patrón de variable de acceso: establezca un valor booleano cuando finalice la conversación lógicamente y compruébalo al principio del tema de inactividad para salir temprano.
¿Funciona el desencadenador de inactividad con la autenticación?
Sí, pero durante tiempos de espera de sesión largos (por ejemplo, 24 horas), el token de autenticación del usuario podría expirar antes de que se active el desencadenador. Asegúrese de que el agente controla la reautenticación correctamente.
¿Qué ocurre si mi tema de inactividad llama a un conector que tarda mucho tiempo?
Las llamadas del conector tienen un límite de tiempo de espera (valor predeterminado de 30 segundos, máximo de 60 segundos). Optimice el conector o controle el tiempo de espera correctamente.
Contenido relacionado
- Establecimiento de desencadenadores de temas
- Variables del sistema : InactivityTimer.Continue, InactivityTimer.Count
- Usa Power Fx en Copilot Studio
- Configurar la transferencia de Dynamics 365 Customer Service
- Configuración de voz y detección de silencio
- Implementación de agentes en Teams
- Agentes conectados
- Las transcripciones de conversaciones en Copilot Studio
- Cerrar automáticamente conversaciones omnicanal
- Limitaciones de Microsoft 365 Copilot