Trigger di inattività

Scopri come configurare i trigger di inattività, con indicazioni su configurazione, supporto ai canali, limitazioni e risoluzione dei problemi.

Panoramica

Il trigger dell'inattività, noto anche come OnInactivity, o L'utente è inattivo da qualche tempo, è un trigger di sistema in Copilot Studio che avvia automaticamente un argomento quando un utente non invia alcun messaggio per un intervallo di tempo specificato. Funziona lato server, quindi l'agente valuta il timer ed esegue l'argomento anche quando il client dell'utente è inattivo.

I casi d'uso comuni in cui può verificarsi questa situazione includono:

  • Invia un promemoria per verificare se l'utente è ancora attivo
  • Libera capacità degli agenti chiudendo automaticamente le conversazioni inattive
  • Raccogliere feedback (es., un sondaggio sulla soddisfazione dei clienti) prima della fine della sessione
  • Pulire lo stato della sessione per le conversazioni abbandonate

Come funziona il trigger dell'inattività

Questa sezione illustra come Copilot Studio valuta i trigger di inattività, gestisce i timer ed esegue gli argomenti quando una conversazione è inattiva.

Panoramica dell'architettura

  1. L'utente invia un messaggio.

  2. Il runtime valuta tutti i trigger OnInactivity.

  3. Il runtime raggruppa i trigger per durata e ne seleziona uno per ogni livello di durata. Il numero di priorità più basso vince; la data di creazione meno recente interrompe i legami.

  4. Il runtime ordina i trigger selezionati per durata, il più breve per primo.

  5. Il runtime attiva un timer per il prossimo trigger in Bus di servizio di Azure. È attivo un solo timer alla volta.

  6. L'utente è inattivo per la durata configurata.

  7. Il timer scatta e l'evento di inattività viene inviato al runtime.

  8. Il runtime identifica ed esegue il tema dell'inattività.

  9. Il runtime calcola il tempo rimanente fino al prossimo attivazione e imposta un nuovo timer.

Comportamenti chiave

  • Il timer si azzera ad ogni messaggio dell’utente.

    Ogni volta che un utente invia un messaggio, il sistema rivaluta tutti i trigger di inattività e arma il successivo (quello con la durata più breve). È attivo un solo timer in ogni momento.

  • Sono supportati più trigger.

    Puoi avere più trigger OnInactivity con durate diverse (ad esempio, 5 minuti e 10 minuti). Il sistema li elabora in ordine crescente di durata. Viene selezionato un solo trigger per ogni fascia di durata. Se due trigger hanno la stessa durata, viene attivato quello con il numero Priority più basso. Se c'è ancora un pareggio, ha la precedenza il trigger creato per primo. Il sistema ignora altri trigger con la stessa durata.

  • I trigger vengono accodati, ma non sono paralleli.

    È attivo un solo timer alla volta. Dopo che il trigger corrente viene eseguito, il runtime calcola il tempo residuo fino al prossimo trigger e attiva un nuovo timer per quel periodo. L'effetto netto è che i trigger vengono attivati in corrispondenza degli offset corretti dal punto di inattività originale, anche se una leggera deriva può verificarsi se l'esecuzione del trigger richiede un tempo significativo.

  • Esecuzione in secondo piano.

    L'evento di inattività è un trigger di background. Non è necessaria l'interazione dell'utente per l'attivazione.

  • Registrazione della trascrizione.

    Il sistema registra gli eventi di inattività nelle trascrizioni delle conversazioni. Un nuovo record di trascrizione viene creato dopo 30 minuti di inattività.

Esempio di sequenza temporale (con più trigger)

Ora Evento
00:00 L'utente invia l'ultimo messaggio
5:00 Il trigger A (300 s) si attiva, invia un avvertimento
10:00 Trigger B (600 s) si attiva, termina la conversazione

Se l'utente invia un messaggio alle 4:30, entrambi i timer si azzerano. Il trigger A si attiva alle 9:30 e il trigger B si attiva alle 14:30.

Configurare il trigger di inattività

Questa sezione mostra come Copilot Studio avvia, azzera e gestisce i timer di inattività, così puoi prevedere cosa succede quando una conversazione diventa inattiva.

Creare un argomento trigger di inattività

  1. In Copilot Studio, vai a Argomenti>Aggiungi un argomento>Da zero.

  2. Seleziona la frase trigger. Invece di una frase, seleziona Dopo un periodo di inattività.

  3. Imposta la proprietà Durata inattività. Nella modalità ìInput manuale, scegli una preimpostazione dal menu a discesa (15 minuti, 30 minuti, 45 minuti o 1 ora). Per inserire un valore personalizzato in secondi o una formula Power Fx (ad esempio, Global.TimeoutSeconds), cambia il selettore della modalità su Formula e digita direttamente il valore.

  4. Progetta il flusso dell'argomento (invia un messaggio, poni una domanda, termina la conversazione e così via).

  5. Salva e pubblica l'agente.

Riferimento della durata

Timeout desiderato Valore (secondi)
30 secondi 30
2 minuti 120
5 minuti 300
10 minuti 600
1 ora 3600

Importante

La proprietà utilizza secondi, non minuti o millisecondi. Un valore di 60000 significa circa 16,7 ore, non 60 secondi.

Esempio: singolo trigger di avviso

[OnInactivity - 600 secondi]

Messaggio: "Sei ancora lì? Rispondi per continuare".

Fine argomento

Esempio: avviso di 5 minuti e chiusura automatica di 10 minuti

Si tratta del motivo più comune. Crea due argomenti di inattività:

Argomento1: avviso di inattività (5 minuti)

  • Trigger: dopo un periodo di inattività
  • durationInSeconds: 300
  • Azioni: invia un messaggio: "Sei ancora lì? Questa conversazione si chiude tra 5 minuti se non c'è risposta".

Argomento 2: chiusura automatica (10 minuti)

  • Trigger: dopo un periodo di inattività
  • durationInSeconds: 600
  • Azioni:
    1. Imposta Global.DeactivateInactivity = true (variabile guard: vedi Procedure consigliate)
    2. Invia un messaggio: "Questa conversazione si chiude per inattività."
    3. Fine della conversazione

Esempio: raccolta di feedback

  • Trigger: dopo un periodo di inattività
  • durationInSeconds: 120
  • Azioni:
    1. Chiedi: "Prima di andare, vorresti valutare la tua esperienza?" (1-5)"
    2. Archiviare la risposta
    3. Fine della conversazione

Aggiungere una condizione al trigger

Aggiungi un nodo Condizione subito dopo il trigger in modo che venga eseguito solo in determinate situazioni:

  • Esegui solo su un canale specifico: =Activity.ChannelId = "msteams"
  • Attiva solo se una variabile guard non è impostata: =Global.DeactivateInactivity = false

Se hai più trigger con nodi Domanda, usa un argomento condiviso per evitare problemi di sovrapposizione dei dialoghi:

  1. Crea un argomento condiviso chiamato HandleInactivity:

    • Aggiungi una variabile globale Global.InactivityStage (Testo)
    • Verifica il valore:
      • "warning" → Invia un messaggio di avviso con un nodo Domanda ("Continuare?" / "Fine?")
      • "close" → Invia un messaggio finale e chiudi la conversazione
  2. Primo trigger OnInactivity (300 s):

    • Impostare Global.InactivityStage = "warning"
    • Reindirizza a HandleInactivity
  3. Secondo trigger OnInactivity (600 s):

    • Impostare Global.InactivityStage = "close"
    • Reindirizza a HandleInactivity

Questo approccio impedisce ai nodi Question di accumularsi e creare cicli di prompt.

Configurazione specifica per ciascun canale

Matrice di supporto dei canali

Canale Livello di supporto Note
Sito Web demo Pienamente supportato Il canale migliore per il testing dei trigger di inattività.
Sito web personalizzato (Direct Line) Pienamente supportato Funziona nello stesso modo del sito demo.
Microsoft Teams Supportata Funziona, ma consulta le indicazioni specifiche di Teams nella sezione successiva. I token di autenticazione potrebbero scadere durante lunghi periodi di inattività.
Dynamics 365 Customer Insights - Journeys Pienamente supportato Richiede passaggi aggiuntivi per chiudere le conversazioni di Dynamics 365 Customer Insights - Journeys. Altre informazioni in Configurazione di Dynamics 365 Customer Insights - Journeys.
Microsoft 365 Copilot Il trigger si attiva, ma i messaggi non vengono consegnati Si tratta di una limitazione nota. Il trigger viene eseguito lato server, ma l'interfaccia di Microsoft 365 Copilot non mostra messaggi proattivi dagli agenti. Soluzione alternativa non disponibile.
Pannello di test Non supportato Questo scenario è impostato a livello di progettazione. I timer sono disabilitati per l'ID del canale Studio. Usa il sito demo o un canale pubblicato per effettuare dei test.
DirectEngine Non supportato Questo scenario è impostato a livello di progettazione. I timer sono disabilitati per l'ID del canale DirectEngine (ambiente di progettazione/test).
Telefonia/IVR Non supportato Per i canali vocali, usa invece il trigger OnSilence.

Configurazione di Teams

Teams utilizza un modello a conversazione singola persistente. La conversazione non "finisce" mai davvero dal punto di vista di Teams. Questo modello significa che i trigger di inattività continuano a rieseguire anche dopo che l'utente considera la conversazione completata.

Modelli di Teams consigliati:

  1. Crea una variabile globale Global.IsConversationClosed (booleano, predefinito: false).

  2. All'inizio del tuo argomento di inattività, verifica: If Global.IsConversationClosed = true → Termina argomento (uscita immediata).

  3. Quando la conversazione termina logicamente (l'utente dice "addio", la soddisfazione dei clienti si completa, e così via), imposta Global.IsConversationClosed = true.

  4. Il trigger di inattività potrebbe ancora attivarsi, ma termina immediatamente senza mostrare un messaggio.

Configurazione di Dynamics 365 Customer Insights - Journeys

  • Le conversazioni si chiudono automaticamente dopo 30 minuti di inattività come impostazione predefinita.
  • L'utilizzo di EndConversation da solo non chiude la sessione di Dynamics 365 Customer Insights - Journeys. La capacità degli agenti non viene liberata.
  • Per chiudere completamente la conversazione, imposta la variabile di contesto CloseOmnichannelConversation su true tramite un flusso Power Automate, quindi utilizza il nodo Trasferisci ad agente.

Limitazioni note

Riferimento rapido: cosa può interrompere il timer di inattività?

Funzionalità o azione Effetto sui timer di inattività
Fine della conversazione Cancella permanentemente tutti i timer
L'utente invia un messaggio Ripristina tutti i timer a zero (come previsto)
Condizione di trigger con variabile non inizializzata Il timer viene ignorato senza segnalazioni, non si attiva mai
La durata supera i 7 giorni (604.800 secondi) Il timer viene silenziosamente ignorato
Eliminazione delle variabili globali in un argomento di inattività L'agente perde il contesto della conversazione
Trasferimento al rappresentante del servizio clienti Il timer rimane attivo e potrebbe attivarsi durante la conversazione con il rappresentante del servizio clienti

Il pannello di test non supporta i trigger di inattività

Il pannello di test di Copilot Studio non attiva trigger di inattività. Si tratta di una limitazione prevista da progettazione. Pubblica il tuo agente e prova su un canale live (sito demo, Teams, e così via).

Microsoft 365 Copilot non mostra i messaggi di inattività

Il trigger viene eseguito lato server, ma qualsiasi output (messaggi, schede) non viene inviato all'utente nell'esperienza Microsoft 365 Copilot. Non esiste alcuna soluzione alternativa. Vedi Limitazioni note di Teams.

Orchestrazione dell'IA generativa

I trigger di inattività vengono implementati come trigger di argomento di orchestrazione classica e utilizzano una pipeline separata di eventi basata su timer. Quando l'orchestrazione con IA generativa è attivata, la distribuzione degli argomenti non si basa più sul classico riconoscimento dei trigger, quindi gli argomenti di inattività potrebbero non essere attivati in modo affidabile in tutte le configurazioni. Se è richiesta la gestione dell'inattività, la configurazione di orchestrazione classica è quella raccomandata e completamente validata.

Agenti connessi: l'inattività dell'agente figlio non è supportata

Nelle configurazioni con agenti connessi, i trigger di inattività negli agenti figlio non funzionano e restituiscono "Risposta di agente connesso non valido." Metti tutta la logica di inattività nell'agente genitore.

Durata massima: 7 giorni (604.800 secondi)

I bot pubblicati ignorano automaticamente i trigger con durate superiori a 604.800 secondi. Non viene visualizzato alcun errore. In modalità progettazione, potrebbe comparire un errore. Non esiste un minimo imposto: durate brevi (sotto circa 15 secondi) potrebbero comportarsi in modo imprevedibile a causa della latenza dell'infrastruttura del timer.

Terminare la conversazione elimina i timer di inattività

Quando richiami Termina conversazione in un argomento, interrompe definitivamente tutti i timer di inattività attivi per quella conversazione. I timer vengono eliminati completamente; non sono né resettati né messi in pausa. L'operazione scarta eventuali eventi di inattività in corso già programmati.

Se desideri terminare il flusso di un argomento senza interrompere i timer di inattività, utilizza una delle azioni alternative:

Azione (in Copilot Studio) Effetto sui timer di inattività
Fine della conversazione Cancella tutti i timer; i timer si fermano permanentemente
Fine argomento corrente (EndDialog) Non influisce sui timer; i timer restano attivi
Cancella tutti gli argomenti (CancelAllDialogs) Non influisce sui timer; i timer restano attivi

Suggerimento

Se il tuo argomento deve chiudere il flusso corrente ma desideri attivare il timer di inattività in un secondo momento (ad esempio, un tema di ricerca JIRA che termina ma la conversazione deve ancora scadere), utilizza Termina argomento corrente anziché Termina conversazione.

L'uso di una variabile di guardia per prevenire la riattivazione rimane una pratica difensiva raccomandata.

Il trigger si attiva dopo l'escalation dell'agente

Dopo che il sistema trasferisce una conversazione a un rappresentante del servizio clienti, il trigger di inattività rimane attivo. Potrebbe essere attivato durante la conversazione dell'agente umano e inviare messaggi da parte dell'agente in modo inatteso. Chiama sempre EndConversation prima del trasferimento, oppure usa una variabile di guardia.

I messaggi del trigger potrebbero apparire nelle trascrizioni dopo la fine della conversazione

Anche dopo la chiusura di una conversazione, il trigger potrebbe ancora attivarsi e i suoi messaggi vengono registrati nella trascrizione. Questa condizione non influisce sull'esperienza utente, ma potrebbe comparire nelle analisi.

Canali telefonici, vocali e IVR

Il trigger di inattività non è disponibile per i canali telefonici e vocali. Usa il trigger OnSilence invece.

Errori di configurazione comuni

Usa questa sezione per identificare e risolvere problemi comuni di configurazione che possono impedire ai trigger di inattività di funzionare come previsto.

Concludere la conversazione nell’argomento di inattività (rischio di loop)

Problema: quando chiami Termina conversazione da un argomento di inattività, cancelli tutti i timer di inattività. Tuttavia, nei canali con conversazioni persistenti (soprattutto Teams), la conversazione sottostante rimane attiva. In alcune configurazioni, il trigger può comunque riattivare, causando messaggi ripetuti "sessione terminata".

Soluzione (consigliata come pratica difensiva): usa una variabile di guardia:

  1. Crea Global.DeactivateInactivity (Booleano, predefinito: false).

  2. All'inizio di ogni argomento di inattività, aggiungi una condizione: procedi solo se Global.DeactivateInactivity = false.

  3. Imposta Global.DeactivateInactivity = trueprima di chiamare EndConversation.

Nota

Il modello di variabile di protezione è particolarmente importante per i canali di Teams, in cui il modello di conversazione persistente indica che la conversazione non termina mai.

Durata impostata su un valore errato

ìProblema:durationInSeconds è in secondi. Un valore di 60000 è circa 16,7 ore, non 60 secondi.

Soluzione: ricontrolla i tuoi valori rispetto alla tabella di riferimento nella sezione 3.

Nodi delle domande in più argomenti di inattività (stack di prompt)

Problema: se più trigger hanno ciascuno un nodo Domanda, il nodo Domanda del secondo trigger interrompe quello del primo. Quando l'utente risponde, il primo nodo Domanda riprende e genera un nuovo prompt, creando un ciclo.

Soluzione: usa lo schema di argomento condiviso. Consolida la logica dei nodi Domanda in un unico argomento, oppure assicurati che solo un trigger abbia un nodo Domanda.

Cancellazione delle variabili globali nell’argomento di inattività

Problema: se l'argomento dell'inattività cancella le variabili globali, l'agente perde tutto il contesto della conversazione e sembra non rispondere quando l'utente ritorna.

Soluzione: reimposta solo le variabili relative all'inattività, non l'intero stato della conversazione.

Mancata visualizzazione di trigger di inattività in Teams

Problema: in Teams, il modello della conversazione persistente fa sì che i trigger continuino ad attivarsi senza fine. Gli utenti continuano a ricevere messaggi "sei ancora lì?" anche dopo diverse ore o giorni.

Soluzione: usare sempre il modello di variabile di controllo per Teams.

Non chiamare closeOmnichannelConversation

Problema: per gli agenti di Dynamics 365 Customer Insights - Journeys, chiamare EndConversation da solo non chiude la sessione di Dynamics 365 Customer Insights - Journeys. Le conversazioni si accumulano nella coda dell'agente.

Soluzione: imposta CloseOmnichannelConversation su true tramite Power Automate nel tuo argomento di inattività.

Durata dinamica da una variabile non inizializzata

Problema: l'uso di un'espressione Power Fx come =Environment.InactivityTimeout per la durata funziona, ma se la variabile non è inizializzata o è nulla, il trigger viene escluso senza avviso.

Soluzione: assicurati che tutte le variabili utilizzate nelle condizioni di trigger e nelle espressioni di durata abbiano valori predefiniti validi.

Ci si aspetta che i trigger funzionino dopo l'escalation dell'agente

Problema: dopo che la conversazione viene trasferita a un rappresentante del servizio clienti, il trigger si attiva sulla conversazione originale dell'agente e invia messaggi durante la sessione dell'agente umano.

Soluzione: terminare la conversazione dell'agente in fase di escalation, oppure utilizzare una variabile Global.IsEscalated = true di protezione e controllarla all'inizio del tema di inattività.

Risoluzione dei problemi quando il trigger di inattività non funziona

Usa questo albero decisionale per diagnosticare il problema:

  1. Dove stai eseguendo il test?

    • Se stai usando il pannello di test, fermati. Il pannello di test non supporta i trigger di inattività. Pubblica e testa su un canale live.
  2. Quale canale stai utilizzando?

    • Microsoft 365 Copilot? Questo canale ha una limitazione nota. Il trigger si attiva ma i messaggi non vengono consegnati. Soluzione alternativa non disponibile.
    • Telefonia/IVR? Questo canale non è supportato. Usa il trigger OnSilence invece.
  3. L'orchestrazione dell'IA generativa è abilitata?

    • I trigger di inattività utilizzano una pipeline di timer separata dalla distribuzione basata sul riconoscimento. Tuttavia, il loro comportamento con l'orchestrazione con IA generativa non è completamente convalidato. Se la gestione dell'inattività è fondamentale, si consiglia l'orchestrazione classica.
  4. Il tuo valore durationInSeconds è superiore a 604.800?

    • In caso affermativo, il trigger viene ignorato automaticamente. Riduci a 604.800 o meno.
  5. L'agente è un agente figlio in un setup di Agente connesso?

    • In caso affermativo, i trigger di inattività degli agenti figlio non sono supportati. Sposta la logica all'agente padre.
  6. Hai più trigger di inattività?

    • Vengono azionati in ordine di durata (dal più breve al più lungo). Assicurati di aspettare abbastanza a lungo. Ogni messaggio dell'utente azzera tutti i timer.
  7. Il trigger ha una condizione che fa riferimento a una variabile non inizializzata?

    • Se una condizione fa riferimento a una variabile non inizializzata, il trigger viene silenziosamente escluso. Assicurati che tutte le variabili di condizione abbiano valori predefiniti.
  8. L'agente è stato ripubblicato dopo l'inizio della conversazione?

    • Una ripubblicazione potrebbe resettare il timer di inattività per le sessioni attive. Inizia una nuova conversazione e prova di nuovo.

Se il trigger di inattività non funziona ancora, prova le seguenti opzioni:

  • Controlla le trascrizioni delle conversazioni per eventuali attività dell'argomento di inattività. Se l'argomento viene visualizzato ma l'utente non ha visualizzato il messaggio, il problema è il recapito specifico del canale.
  • Verifica che l'argomento non sia disabilitato o archiviato.
  • Verifica che il tipo di trigger sia "Dopo un periodo di inattività", non un trigger di frase.

Procedure consigliate

  • Testa sempre su un canale pubblicato. Usa il sito demo per test rapidi. Non affidarti mai al pannello di test.

  • Usa una variabile di controllo per impedire i cicli. Creazione Global.DeactivateInactivity (Booleano, predefinito false). Impostalo su true prima di chiamare EndConversation. Controlla la variabile di guardia all'inizio di ogni argomento di inattività.

  • Mantieni le durate ragionevoli. Minimo ~15 secondi, massimo 604.800 secondi (7 giorni).

  • Verifica le unità. La proprietà è espressa in secondi. 5 minuti = 300, non 5.

  • Per Dynamics 365 Customer Insights - Journeys: abbina sempre EndConversation con closeOmnichannelConversation tramite Power Automate.

  • Per scenari con più trigger: limita Domanda a un solo trigger oppure utilizza il modello di argomento condiviso.

  • Chiama EndConversation prima di trasferire l’utente a un rappresentante del servizio clienti per disattivare i trigger di inattività.

  • Controlla le trascrizioni delle conversazioni dopo il rilascio per verificare che i messaggi compaiano ai tempi previsti.

Domande frequenti

Perché il trigger dell'inattività non funziona nel pannello di test?

I timer sono disabilitati nel pannello di test per impostazione predefinita. Pubblica il tuo agente e testa su un canale attivo.

Posso usare durate dinamiche (es. da una variabile)?

Sì. Il campo di durata accetta espressioni Power Fx. Puoi utilizzare una variabile di ambiente o un valore calcolato. L'espressione viene valutata in fase di esecuzione quando il timer è attivato. Assicurati che la variabile sia inizializzata e contenga un numero valido.

Cosa succede se pubblico una nuova versione dell'agente mentre le conversazioni sono attive?

Il runtime utilizza la nuova versione. Se l'ID del trigger è stato modificato (argomento eliminato e ricreato), il sistema torna alla corrispondenza per durata. Se nessun trigger corrisponde per ID o durata, l'evento di inattività in sospeso viene eliminato.

Come si arrestano completamente gli attivatori di inattività in Teams?

Non puoi fermarli a livello di piattaforma. Usa il modello di variabile di controllo: imposta un valore booleano al termine logico della conversazione e controllalo all'inizio dell'argomento di inattività per uscire in anticipo.

Il trigger di inattività funziona con l'autenticazione?

Sì, ma per timeout lunghi della sessione (ad esempio, 24 ore), il token di autenticazione dell'utente potrebbe scadere prima che si attivi il trigger. Assicurati che il tuo agente gestisca la riautenticazione correttamente.

Cosa accade se l'argomento di inattività chiama un connettore che richiede molto tempo?

Le chiamate ai connettori hanno un limite di timeout (30 secondi predefiniti, 60 secondi al massimo). Ottimizza il connettore o gestisci il timeout con cautela.