Inaktivitetsutlösare

Lär dig hur du konfigurerar inaktivitetsutlösare, med vägledning om konfiguration, kanalstöd, begränsningar och felsökning.

Översikt

Inaktivitetstriggaren, även kallad OnInactivity eller Användaren är inaktiv under en tid, är en systemutlösare i Copilot Studio som automatiskt utlöser ett ämne när en användare inte skickar något meddelande under en viss tidsperiod. Den körs på serversidan, så agenten utvärderar timern och aktiverar ämnet även om användarens klient är inaktiv.

Vanliga användarfall omfattar:

  • Skicka en påminnelse för att fråga om användaren fortfarande är kvar
  • Frigör handläggarkapacitet genom att automatiskt stänga inaktiva konversationer
  • Samla in feedback (till exempel en kundnöjdhetsundersökning) innan en session avslutas
  • Rensa sessionstillstånd för övergivna konversationer

Hur inaktivitetsutlösaren fungerar

Den här sektionen förklarar hur Copilot Studio utvärderar inaktivitetsutlösare, schemalägger timers och startar ämnen när en konversation är inaktiv.

Arkitekturöversikt

  1. Användaren skickar ett meddelande.

  2. Körningen utvärderar alla OnInactivity-utlösare.

  3. Körningen grupperar utlösare efter varaktighet och väljer en per varaktighetsnivå. Det lägsta prioritetsnumret vinner. Vid lika resultat avgör tidigaste skapandedatum.

  4. Körtiden ordnar de valda utlösarna efter varaktighet, med den kortaste först.

  5. Körtiden aktiverar en timer för nästa utlösare i Azure Service Bus. Endast en timer är aktiv åt gången.

  6. Användaren är inaktiv under den konfigurerade varaktigheten.

  7. Timern utlöses och inaktivitetshändelsen skickas till körningen.

  8. Körningen matchar och exekverar ämnet för inaktivitet.

  9. Körningen beräknar den återstående tiden till nästa utlösare och ställer in en ny timer.

Nyckelbeteenden

  • Timern återställs vid varje användarmeddelande.

    Varje gång en användare skickar ett meddelande omvärderar systemet alla inaktivitetsutlösare och aktiverar nästa, med den kortaste varaktigheten först. Endast en timer är aktiv åt gången.

  • Flera utlösare stöds inte.

    Du kan ha flera OnInactivity-utlösare med olika varaktigheter (till exempel 5 minuter och 10 minuter). Systemet hanterar dem i stigande ordning efter varaktighet. Endast en utlösare väljs per varaktighetsnivå. Om två utlösare har samma varaktighet, avfyras utlösaren med lägst Priority-nummer. Om det fortfarande finns ett lika resultat vinner den tidigast skapade utlösaren. Systemet ignorerar andra utlösare vid samma varaktighet.

  • Utlösare är köade, inte parallella.

    Endast en timer är aktiv åt gången. När den aktuella utlösaren har körts, beräknar exekveringstiden den återstående tiden till nästa utlösare och ställer in en ny timer för skillnaden. Helhetsresultatet är att utlösarna aktiveras vid rätt förskjutningar från den ursprungliga inaktivitetspunkten, även om mindre drift kan inträffa om det tar lång tid att köra utlösarna.

  • Bakgrundskörning.

    Inaktivitetshändelsen är en bakgrundsutlösare. Det kräver ingen användarinteraktion för att utlösas.

  • Utskriftsinspelning.

    Systemet registrerar inaktivitetshändelser i samtalstranskriptioner. En ny transkriptpost skapas efter 30 minuters inaktivitet.

Exempel på tidslinje (flera utlösare)

Tid Händelse
0:00 Användaren skickar sista meddelandet
5:00 Utlösare A (300 s) aktiveras, skickar en varning
10:00:00 Utlösare B (600 s) aktiveras, avslutar samtalet

Om användaren skickar ett meddelande kl. 04:30, återställs båda timerna. Utlösare A utlöses kl. 9:30 och Utlösare B utlöses kl. 14:30.

Konfigurera inaktivitetsutlösaren

Den här sektionen visar hur Copilot Studio startar, återställer och kör inaktivitetstimers så att du kan förutse vad som händer när en konversation blir inaktiv.

Skapa ett ämne för inaktivitetsutlösare

  1. I Copilot Studio, gå till Ämnen>Lägg till ett ämne>Från tom.

  2. Välj utlösande fras. Istället för en fras, välj "Efter en period av inaktivitet".

  3. Ange egenskapen Inaktivitetens varaktighet. I manuellt inmatningsläge, välj en förinställning från rullgardinsmenyn (15 minuter, 30 minuter, 45 minuter eller 1 timme). För att ange ett anpassat värde i sekunder eller en Power Fx-formel (till exempel Global.TimeoutSeconds), ändra lägesväljaren till Formel och skriv in värdet direkt.

  4. Designa ämnesflödet (skicka ett meddelande, ställ en fråga, avsluta samtalet och så vidare).

  5. Spara och publicera din agent.

Varaktighetens referens

Önskad tidsgräns Värde (sekunder)
30 sekunder 30
2 minuter 120
5 minuter 300
10 minuter 600
1 timme 3600

Viktigt

Egenskapen använder sekunder, inte minuter eller millisekunder. Ett värde på 60000 betyder ungefär 16,7 timmar, inte 60 sekunder.

Exempel: Enkel varningsutlösare

OnInactivity - 600 sekunder

Meddelande: "Är du fortfarande där?" Svara för att fortsätta."

Avsluta ämne

Exempel: 5-minuters varning och 10-minuters automatisk stängning

Detta mönster är det vanligaste. Skapa två ämnen för inaktivitet:

Ämne 1: Inaktivitetsvarning (5 minuter)

  • Utlösare: Efter en period av inaktivitet
  • durationInSeconds: 300
  • Åtgärder: Skicka ett meddelande: "Är du fortfarande där?" Den här konversationen avslutas om 5 minuter om inget svar."

Ämne 2: Automatisk stängning (10 minuter)

  • Utlösare: Efter en period av inaktivitet
  • durationInSeconds: 600
  • Åtgärder:
    1. Sätt Global.DeactivateInactivity = true (skyddsvariabel – se Bästa praxis)
    2. Skicka ett meddelande: "Den här konversationen avslutas på grund av inaktivitet."
    3. Avsluta konversation

Exempel: Feedbackinsamling

  • Utlösare: Efter en period av inaktivitet
  • durationInSeconds: 120
  • Åtgärder:
    1. Fråga: "Innan du avslutar, vill du betygsätta din upplevelse?" (1–5)"
    2. Lagra svaret
    3. Avsluta konversation

Lägg till ett villkor i utlösaren

Lägg till en Condition-nod direkt efter utlösaren så att den endast körs i vissa situationer:

  • Avfyra endast på en specifik kanal: =Activity.ChannelId = "msteams"
  • Utlös endast om en skyddsvariabel inte är inställd: =Global.DeactivateInactivity = false

Om du har flera utlösare med frågenoder , använd ett delat ämne för att undvika problem med dialogstackning:

  1. Skapa ett delat ämne kallat HandleInactivity:

    • Lägg till en global variabel Global.InactivityStage (Text)
    • Kontrollera dess värde:
      • "warning" → Skicka ett varningsmeddelande med en fråge-nod ("Fortsätta?" / "Avsluta?")
      • "close" → Skicka ett avslutande meddelande och avsluta samtalet
  2. Första OnInactivity-utlösaren (300 sekunder):

    • Konfigurera Global.InactivityStage = "warning"
    • Omdirigera till HandleInactivity
  3. Andra OnInactivity-utlösaren (600 sekunder):

    • Konfigurera Global.InactivityStage = "close"
    • Omdirigera till HandleInactivity

Denna metod förhindrar att frågenoder staplas och att promptloopar uppstår.

Kanalspecifik konfiguration

Kanalstödsmatris

Kanal Supportnivå Anteckningar
Demowebbplats Stöds helt Bästa kanalen för att testa inaktivitetsutlösare.
Anpassad webbplats (Direct Line) Stöds helt Fungerar på samma sätt som demowebbplatsen.
Microsoft Teams Stöds Fungerar, men se Teams-specifik vägledning i nästa avsnitt. Auth-tokens kan gå ut under långa inaktivitetsperioder.
Dynamics 365 Customer Service Stöds helt Extra steg krävs för att avsluta Dynamics 365 Customer Service-konversationer. Läs mer i Dynamics 365 Customer Service-konfiguration.
Microsoft 365 Copilot Utlösaren avfyras, men meddelandena levereras inte Detta scenario är en känd begränsning. Utlösaren körs på serversidan, men Microsoft 365 Copilot-gränssnittet visar inga proaktiva meddelanden från agenter. Ingen lösning.
Testpanel Stöds inte Detta scenario är standardfunktionen. Timers är inaktiverade för Studio-kanal-ID:t. Använd demowebbplatsen eller en publicerad kanal för att testa.
DirectEngine Stöds inte Detta scenario är standardfunktionen. Timers är inaktiverade för DirectEngine-kanal-ID (design-/testmiljö).
Telefoni/IVR Stöds inte För röstkanaler, använd OnSilence-utlösaren istället.

Teams-konfiguration

Teams använder en beständig, enskild konversationsmodell. Samtalet avslutas aldrig helt enligt Teams perspektiv. Denna modell innebär att inaktivitetsutlösare fortsätter att aktiveras igen även efter att användaren anser konversationen avslutad.

Rekommenderade Teams-mönster:

  1. Skapa en global variabel Global.IsConversationClosed (boolesk, standard: false).

  2. Vid start av din inaktivitets-utlösare, kontrollera: If Global.IsConversationClosed = true → Avsluta ämnet (avsluta omedelbart).

  3. När konversationen logiskt avslutas (till exempel när användaren säger "hej då", kundnöjdheten är uppnådd och så vidare), ställ in Global.IsConversationClosed = true.

  4. Inaktivitetsutlösaren kan fortfarande aktiveras, men den avslutas omedelbart utan att visa något meddelande.

Dynamics 365 Customer Service-konfiguration

  • Konversationer avslutas automatiskt efter 30 minuters inaktivitet som standard.
  • Att anropa EndConversation ensamt stänger inte Dynamics 365 Customer Service-sessionen. Handläggarkapaciteten frigörs inte.
  • För att helt avsluta konversationen, ställ in kontextvariabeln CloseOmnichannelConversation till true via ett Power Automate-flöde och använd sedan en Överför till handläggare-noden.

Kända begränsningar

Snabbguide: Vad kan störa inaktivitetstimern?

Funktion eller åtgärd Effekt på timers för inaktivitet
Avsluta konversation Rensar permanent alla timers
Användaren skickar ett meddelande Återställer alla timers till noll (avsiktligt)
Utlösarvillkor med oinitialiserad variabel Timern är tyst utesluten – aktiveras aldrig
Varaktigheten överstiger 7 dagar (604 800 sekunder) Timern ignoreras tyst
Rensning av globala variabler i ett inaktivitetsämne agenten förlorar samtalskontext
Överför till kundtjänstrepresentant Timern förblir aktiv och kan utlösas under samtalet med kundtjänstrepresentanten

Testpanelen stöder inte inaktivitetsutlösares

Testpanelen i Copilot Studio utlöser inte inaktivitetsutlösare. Denna begränsning är avsiktlig. Publicera din agent och testa på en aktiv kanal (demowebbplats, Teams och så vidare).

Microsoft 365 Copilot visar inga inaktivitetsmeddelanden

Utlösaren körs på serversidan, men eventuella meddelanden eller kort skickas inte till användaren i Microsoft 365 Copilot. Det finns ingen tillfällig lösning. Se Kända Teams-begränsningar.

Generativ AI-orkestrering

Inaktivitetsutlösare implementeras som ämnesutlösare för klassisk orkestrering och använder en separat timerbaserad händelsepipeline. När orkestrering med generativ AI är aktiverat förlitar sig ämnesdirigering inte längre på klassisk utlösarigenkänning, så inaktivitetsämnen kanske inte utlöses på ett tillförlitligt sätt i alla konfigurationer. Om inaktivitetshantering krävs är klassisk orkestrering den rekommenderade och fullt validerade konfigurationen.

Anslutna agenter: inaktivitet för underordnad agent stöds inte

I anslutningsagentkonfigurationer fungerar inaktivitetsutlösare i underordnade agenter inte och returnerar "Ogiltig ansluten agent-respons." Lägg all inaktivitetslogik i den överordnade agenten.

Maximal varaktighet: 7 dagar (604 800 sekunder)

Publicerade robotar ignorerar utlösare med varaktigheter längre än 604 800 sekunder utan att det märks. Inget fel visas. I designläget kan ett fel uppstå. Det finns inget påtvingat minimum – korta varaktigheter (under cirka 15 sekunder) kan bete sig oförutsägbart på grund av latens i timerinfrastrukturen.

Avsluta konversation rensar timers för inaktivitet

När du anropar Avsluta konversation i ett ämne kommer alla aktiva inaktivitetstimers för den konversationen att stoppas permanent. Alla timrar tas bort helt och hållet; de återställs inte eller pausas. Åtgärden tar bort väntande inaktivitetshändelser som redan är schemalagda.

Om du vill avsluta ett ämnes flöde utan att störa inaktivitetstimer, använd en av alternativa åtgärder:

Åtgärd (i Copilot Studio) Effekt på timers för inaktivitet
Avsluta konversation Rensar alla timrar; timrarna slutar att fungera permanent
Avsluta aktuellt ämne (EndDialog) Påverkar inte timers. Timers fortsätter köras.
Avbryt alla ämnen (CancelAllDialogs) Påverkar inte timers. Timers fortsätter köras.

Dricks

Om ditt ämne behöver avsluta det nuvarande flödet, men du fortfarande vill att inaktivitetstimern ska utlösas senare (till exempel ett JIRA-sökämne som slutförs men konversationen bör fortfarande avbrytas efter tidsgränsen uppnås), använder du Avsluta aktuellt ämne i stället för Avsluta konversation.

Att använda en skyddsvariabel för att förhindra återutlösning är fortfarande en rekommenderad defensiv metod.

Utlösare utlöses efter agenteskalering

Efter att systemet överfört en konversation till en kundtjänstrepresentant förblir inaktivitetsutlösaren aktiv. Det kan utlösas under konversationen med den mänskliga agenten och skicka agentmeddelanden oväntat. Anropa alltid EndConversation innan överföring, eller använd en guard-variabel.

Utlösarmeddelanden kan dyka upp i transkriptioner efter att samtalet avslutats

Även efter att en konversation avslutats kan utlösaren fortfarande utlösas och dess meddelanden spelas in i transkriptionen. Detta tillstånd påverkar inte användarupplevelsen men kan synas i analyser.

Telefon-, röst- och IVR-kanaler

Inaktivitetsutlösaren är inte tillgänglig för telefon- och röstkanaler. Använd OnSilence-utlösaren i stället.

Vanliga felkonfigurationer

Använd detta avsnitt för att identifiera och åtgärda vanliga konfigurationsproblem som kan förhindra att inaktivitetsutlösare fungerar som förväntat.

Avsluta konversationen i inaktivitetsämnet (looprisk)

Problem: När du anropar Avsluta konversation från ett inaktivitetsämne rensar du alla inaktivitetstimrar. Men på kanaler med ihållande konversationer (särskilt Teams) förblir den underliggande konversationen aktiv. I vissa konfigurationer kan utlösaren fortfarande aktiveras igen, vilket orsakar upprepade "sessionen avslutades"-meddelanden.

Lösning (rekommenderas som defensiv praxis): Använd en guard-variabel:

  1. Skapa Global.DeactivateInactivity (Boolesk, standardvärde: false).

  2. Högst upp i varje inaktivitetsämne, lägg till ett villkor: fortsätt endast om Global.DeactivateInactivity = false.

  3. Ange Global.DeactivateInactivity = trueinnan EndConversation anropas.

Kommentar

Mönstret med guard-variabler är särskilt viktigt för Teams-kanaler, där den beständiga konversationsmodellen innebär att samtalet aldrig riktigt tar slut.

Varaktighet satt till fel värde

Problem:durationInSeconds anges i sekunder. Ett värde på 60000 är ungefär 16,7 timmar, inte 60 sekunder.

Lösning: Kontrollera att värdena stämmer med referenstabellen i avsnitt 3.

Frågenoder i flera ämnen med inaktivitet (promptstapling)

Problem: Om flera utlösare har en Frågenod, avbryter den andra utlösarens Frågenod den första. När användaren svarar återupptas den första Frågenoden och omprompt, vilket skapar en loop.

Lösning: Använd mönstret för delat ämne. Konsolidera frågenodslogik till ett enda ämne, eller säkerställ att endast en utlösare har en frågenod.

Rensning av globala variabler i ämne för inaktivitet

Problem: Om ämnet för inaktivitet rensar globala variabler tappar agenten all kontext och verkar till synes oresponsiv när användaren återvänder.

Lösning: Återställ endast inaktivitetsspecifika variabler, inte hela konversationstillståndet.

Inaktivitetsutlösare begränsas inte i Teams

Problem: I Teams innebär den beständiga konversationsmodellen att utlösare aktiveras utan begränsning. Användare får upprepade "är du fortfarande där?"-meddelanden timmar eller dagar senare.

Lösning: Använd alltid mönstret begränsningsvariabel för Teams.

Anropar inte closeOmnichannelConversation

Problem: För Dynamics 365 Customer Service-agenter innebär att endast använda EndConversation att Dynamics 365 Customer Service-sessionen inte stängs. Samtal hopar sig i agentkön.

Lösning: Ställ CloseOmnichannelConversation till true via Power Automate i ditt inaktivitetsämne.

Dynamisk varaktighet från en oinitierad variabel

Problem: Att använda ett Power Fx-uttryck som =Environment.InactivityTimeout för varaktigheten fungerar, men om variabeln är avinitierad eller null undantas utlösaren tyst.

Lösning: Säkerställ att alla variabler som används i utlösarvillkor och varaktighetsuttryck har giltiga standardvärden.

Förväntan att utlösare ska fungera efter agenteskalering

Problem: Efter att systemet eskalerar konversationen till en kundtjänstrepresentant aktiveras utlösaren i den ursprungliga agentkonversationen och skickar meddelanden under kundtjänstrepresentantens session.

Lösning: Avsluta konversationen med agenten vid tidpunkten för eskalering eller använd en vaktvariabel Global.IsEscalated = true och kontrollera den i början av inaktivitetsämnet.

Felsök när inaktivitetsutlösaren inte fungerar

Använd detta beslutsträd för att diagnostisera problemet:

  1. Var testar du?

    • Om du använder testpanelen, sluta. Testpanelen stöder inte inaktivitetsutlösare. Publicera och testa på en livekanal.
  2. Vilken kanal använder du?

    • Microsoft 365 Copilot? Denna kanal har en känd begränsning. Utlösaren avfyras men meddelandena levereras inte. Ingen lösning.
    • Telefoni/IVR? Den här kanalen stöds inte. Använd OnSilence-utlösaren i stället.
  3. Är orkestrering med generativ AI aktiverad?

    • Inaktivitetsutlösare använder en separat timerpipeline från igenkänningsbaserad routning. Deras beteende med generativ AI-orkestrering är dock inte fullt validerat. Om hantering av inaktivitet är kritiskt rekommenderas klassisk orkestrering som konfiguration.
  4. Är din durationInSeconds större än 604 800?

    • Om det är sant ignoreras utlösaren utan en notis. Minska till 604 800 eller lägre.
  5. Är agenten en underordnad agent i en konfiguration med ansluten agent?

    • Om så är fallet stöds inte utlösare för inaktivitet hos underordnade agenter. Flytta logiken till den överordnade agenten.
  6. Har du flera inaktivitetsutlösare?

    • De avfyras i varaktighetsordning (kortast först). Se till att du väntar tillräckligt länge. Varje användarmeddelande återställer alla timers.
  7. Har utlösaren ett villkor som refererar till en oinitierad variabel?

    • Om ett villkor refererar till en variabel som ännu inte satts, utesluts utlösaren utan att det märks. Se till att alla villkorsvariabler har standardvärden.
  8. Blev agenten återpublicerad efter att samtalet började?

    • En ompublicering kan återställa inaktivitetstimern för aktiva sessioner. Starta en ny konversation och testa igen.

Om inaktivitetsutlösaren fortfarande inte fungerar, prova följande alternativ:

  • Kontrollera konversationstranskriptioner för eventuella inaktivitetsämnen. Om ämnet dyker upp men användaren inte såg meddelandet, beror problemet på kanalspecifik leverans.
  • Verifiera att ämnet inte är inaktiverat eller arkiverat.
  • Bekräfta att utlösartypen är "Efter en period av inaktivitet," inte en frasbaserad utlösare.

Regelverk

  • Testa alltid på en publicerad kanal. Använd demowebbplatsen för snabba tester. Lita aldrig på testrutan.

  • Använd en guard-variabel för att förhindra loopar. Skapa Global.DeactivateInactivity (boolesk, standardvärde false). Ange den till true innan EndConversation anropas. Kontrollera det i början av varje inaktivitetsämne.

  • Håll varaktigheterna rimliga. Minsta ~15 sekunder, högst 604 800 sekunder (7 dagar).

  • Kontrollera att du använder rätt enheter. Egenskapen mäts i sekunder. 5 minuter = 300, inte 5.

  • För Dynamics 365 Customer Service: Parkoppla alltid EndConversation via closeOmnichannelConversation Power Automate.

  • För scenarier med flera utlösare: Begränsa frågenoder till en utlösare, eller använd det delade ämnesmönstret.

  • Anropa EndConversation innan du överför till en kundtjänstrepresentant för att inaktivera inaktivitetsutlösare.

  • Övervaka konversationstranskriptioner efter distribution för att verifiera att meddelanden dyker upp vid förväntade tider.

Vanliga frågor och svar

Varför fungerar inte inaktivitetsutlösaren i testpanelen?

Timerfunktionen är avstängd i testpanelen avsiktligt. Publicera din agent och testa på en livekanal.

Kan jag använda dynamiska tidsintervall (till exempel från en variabel)?

Ja. Fältet för varaktighet accepterar Power Fx-uttryck. Du kan använda en miljövariabel eller ett beräknat värde. Uttrycket utvärderas vid körning när timern är aktiverad. Se till att variabeln är initierad och innehåller ett giltigt tal.

Vad händer om jag publicerar en ny agentversion medan samtalen är aktiva?

Körningen plockar upp den nya versionen. Om utlösar-ID:t ändrades (ämnet togs bort och återskapades), återgår systemet till att matcha baserat på varaktighet. Om ingen utlösare matchar efter ID eller varaktighet tas den väntande inaktivitetshändelsen bort.

Hur gör jag för att helt stoppa inaktivitetsutlösare i Teams?

Du kan inte stoppa dem på plattformsnivå. Använd mönstret för begränsningsvariabeln: ange ett booleskt värde när konversationen avslutas logiskt och kontrollera det i början av inaktivitetsämnet för att avsluta tidigt.

Fungerar inaktivitetsutlösaren med autentisering?

Ja, men vid långa sessionstidsgränser (till exempel 24 timmar) kan användarens autentiseringstoken löpa ut innan utlösaren aktiveras. Se till att din agent hanterar omautentisering på ett korrekt sätt.

Vad händer om mitt inaktivitetsämne anropar ett anslutningsprogram som tar lång tid?

Anslutningsprogramanrop har en timeoutgräns (30 sekunder som standard, max 60 sekunder). Optimera anslutningsprogrammet eller hantera timeouten på ett smidigt sätt.