Inaktivitetsutlösare

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

Översikt

Inaktivitetsutlösaren, som även kallas OnInactivity eller Användaren är inaktiv ett tag, ä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 angiven varaktighet. Den kör serversidan, så agenten utvärderar timern och kör ämnet även om användarens klient är inaktiv.

Vanliga användningsfall är:

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

Så här fungerar inaktivitetsutlösaren

I det här avsnittet beskrivs hur Copilot Studio utvärderar inaktivitetsutlösare, schemalägger timers och kör ämnen när en konversation är inaktiv.

Översikt över arkitektur

  1. Användaren skickar ett meddelande.

  2. Körtiden utvärderar alla OnInactivityutlösare.

  3. Drifttidsmiljön grupperar triggers efter varaktighet och väljer en per varaktighetsnivå. Det lägsta prioritetsnumret vinner. tidigaste skapandedatum bryter banden.

  4. Programkörningen sorterar de valda triggers efter varaktighet, kortast först.

  5. Körmiljön aktiverar en timer för nästa utlösare i Azure Service Bus. Endast en timer är aktiv i taget.

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

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

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

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

Viktiga beteenden

  • Timern återställs för varje användarmeddelande.

    Varje gång en användare skickar ett meddelande utvärderar systemet alla inaktivitetsutlösare och aktiverar nästa utlösare med kortast varaktighet först. Endast en timer är aktiv när som helst.

  • Flera utlösare stöds.

    Du kan ha flera OnInactivity-utlösare med olika varaktigheter (till exempel 5 minuter och 10 minuter). Systemet bearbetar dem i stigande ordning av varaktighet. Endast en utlösare väljs per varaktighetsnivå. Om två utlösare har samma varaktighet utlöses utlösaren med det lägre Priority antalet. Om det fortfarande finns ett oavgjort resultat vinner den tidigare skapade utlösaren. Systemet tar bort andra utlösare vid samma varaktighetstidpunkt.

  • Utlösare placeras i kö, inte parallella.

    Endast en timer är aktiv i taget. 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 mycket tid att köra utlösarna.

  • Bakgrundskörning.

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

  • Avskriftsinspelning.

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

Exempeltidslinje (flera utlösare)

Tid Händelse
0:00 Användaren skickar det senaste meddelandet
5:00 Trigger A (300 s) aktiveras och skickar en varning
10:00:00 Utlösare B (600 s) utlöses och avslutar konversationen

Om användaren skickar ett meddelande klockan 4:30 återställs båda timern. Trigger A utlöses klockan 09:30 och Trigger B utlöses klockan 14:30.

Konfigurera inaktivitetsutlösaren

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

Skapa ett utlösarämne för inaktivitet

  1. I Copilot Studio går du till Topics>Lägg till ett ämne>Från tomt.

  2. Välj utlösarfrasen. I stället för en fras väljer du "Efter en period av inaktivitet".

  3. Ange egenskapen Inactivity duration (Varaktighet för inaktivitet ). I manuellt indataläge väljer du en förinställning från listrutan (15 minuter, 30 minuter, 45 minuter eller 1 timme). Om du vill ange ett anpassat värde i sekunder eller en Power Fx-formel (till exempel Global.TimeoutSeconds), växlar du lägesväljaren till Formel och skriver värdet direkt.

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

  5. Spara och publicera din agent.

Referens för varaktighet

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

Important

Egenskapen använder sekunder, inte minuter eller millisekunder. Värdet 60000 betyder cirka 16,7 timmar, inte 60 sekunder.

Exempel: En varningsutlösare

[OnInactivity – 600 sekunder]

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

Slutämne

Exempel: 5 minuters varning och 10 minuters autoclose

Det här mönstret är det vanligaste. Skapa två avsnitt om inaktivitet:

Ämne 1: Varning om inaktivitet (5 minuter)

  • Utlösare: Efter en period av inaktivitet
  • durationInSeconds: 300
  • Åtgärder: Skicka ett meddelande: "Är du kvar? Den här konversationen avslutas om 5 minuter om det inte finns något svar."

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

  • Utlösare: Efter en period av inaktivitet
  • durationInSeconds: 600
  • Actions:
    1. Ange Global.DeactivateInactivity = true (skyddsvariabel – se Metodtips)
    2. Skicka ett meddelande: "Den här konversationen stängs på grund av inaktivitet."
    3. Avsluta konversation

Exempel: Feedbackinsamling

  • Utlösare: Efter en period av inaktivitet
  • varaktighetISekunder: 120
  • Actions:
    1. Fråga: "Skulle du betygsätta din upplevelse innan du går? (1-5)"
    2. Lagra svaret
    3. Avsluta konversation

Lägg till ett villkor i utlösaren

Lägg till en villkorsnod direkt efter utlösaren så att den bara körs i vissa situationer:

  • Sänd endast på en specifik kanal: =Activity.ChannelId = "msteams"
  • Utlös endast om en skyddsvariabel inte har angetts: =Global.DeactivateInactivity = false

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

  1. Skapa ett delat ämne med namnet HandleInactivity:

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

    • Ange Global.InactivityStage = "warning"
    • Omdirigera till HandleInactivity
  3. Second OnInactivity trigger (600 sekunder):

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

Den här metoden förhindrar att frågenoder staplar och skapar promptloopar.

Kanalspecifika inställningar

Kanalstödmatris

Kanal Supportnivå Notes
Webbplats för demo Fullt stödd Bästa kanalen för att testa inaktivitetsutlösare.
Anpassad webbplats (Direct Line) Fullt stödd Fungerar på samma sätt som demowebbplatsen.
Microsoft Teams Supported Fungerar, men se Teams-specifik vägledning i nästa avsnitt. Autentiseringstoken kan upphöra att gälla under långa inaktivitetsperioder.
Dynamics 365 Kundtjänst Fullt stödd Kräver extra steg för att stänga Dynamics 365 Customer Service konversationer. Läs mer i Dynamics 365 Customer Service konfiguration.
Microsoft 365 Copilot Utlösare utlöses, men meddelanden levereras inte Det här scenariot är en känd begränsning. Utlösaren kör serversidan, men Microsoft 365 Copilot användargränssnittet visar inte proaktiva meddelanden från agenter. Ingen lösning.
Testpanel Stöds inte Det här scenariot är avsiktligt. Timers är inaktiverade för Studio-kanal-ID:t. Använd demowebbplatsen eller en publicerad kanal för att testa.
DirectEngine Stöds inte Det här scenariot är avsiktligt. Timers inaktiveras för DirectEngine-kanal-ID:t (design/testmiljö).
Telefoni/IVR Stöds inte För röstkanaler använder du OnSilence-utlösaren i stället.

Teams-konfiguration

Teams använder en beständig en-konversationsmodell. Konversationen "tar aldrig slut" ur Teams' perspektiv. Den här modellen innebär att inaktivitetsutlösare fortsätter att utlösas även efter att användaren anser att konversationen är klar.

Rekommenderat Teamsmönster:

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

  2. I början av inaktivitetsavsnittet ska du kontrollera: If Global.IsConversationClosed = true → Avsluta ämne (avsluta omedelbart).

  3. När konversationen slutar logiskt (användaren säger "hej då" slutförs kundnöjdheten och så vidare) anger du Global.IsConversationClosed = true.

  4. Inaktivitetsutlösaren kan fortfarande utlösas, men den avslutas omedelbart utan att ett meddelande visas.

Dynamics 365 Customer Service konfiguration

  • Konversationer omsluts automatiskt efter 30 minuters inaktivitet som standard.
  • Att anropa EndConversation ensam stänger inte Dynamics 365 Customer Service-sessionen. Kapaciteten för agenter frigörs inte.
  • Om du vill stänga konversationen helt ställer du in kontextvariabeln CloseOmnichannelConversation till true via ett Power Automate flöde och använder sedan noden Transfer to Agent.

Kända begränsningar

Snabbreferens: Vad kan störa timern för inaktivitet?

Funktion eller åtgärd Effekt på tidsinställningar för inaktivitet
Avsluta konversation Rensar permanent alla tidtagare
Användaren skickar ett meddelande Återställer alla timers till noll (avsiktligt)
Utlösarvillkor med oinitialiserad variabel Timer är tyst utesluten - aldrig armar
Varaktigheten överstiger 7 dagar (604 800 sekunder) Tidsuret ignoreras utan att det märks.
Rensa globala variabler i ett inaktivitetsämne agenten förlorar konversationskontext
Överföra till kundtjänstrepresentant Timern förblir aktiv och kan aktiveras under samtalet med kundtjänstmedarbetaren.

Testpanelen stöder inte inaktivitetsutlösare

Testpanelen i Copilot Studio utlöser inte inaktivitetstriggers. Denna begränsning är avsiktlig. Publicera din agent och testa på en livekanal som demo-webbplats, Teams och liknande.

Microsoft 365 Copilot visar inte inaktivitetsmeddelanden

Utlösaren kör serversidan, men utdata (meddelanden, kort) levereras inte till användaren i Microsoft 365 Copilot-upplevelsen. Det finns ingen lösning. Se Kända begränsningar för Teams.

Generativ AI-orkestrering

Inaktivitetsutlösare implementeras som klassiska orkestreringsämnesutlösare och använder en separat timerbaserad händelsepipeline. När generativ AI-orkestrering ä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 fullständigt verifierade konfigurationen.

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

I konfigurationer av anslutna agenter fungerar inte inaktivitetsutlösare i underordnade agenter och returnerar "Ogiltigt svar på ansluten agent". Placera all inaktivitetslogik i den överordnade agenten.

Maximal varaktighet: 7 dagar (604 800 sekunder)

Publicerade robotar ignorerar utlösare med varaktigheter som är längre än 604 800 sekunder utan att ge något meddelande. Inget fel visas. I designläge kan ett fel visas. Det finns inget framtvingat minimum – korta varaktigheter (under cirka 15 sekunder) kan bete sig oförutsägbart på grund av tidsfördröjning i infrastrukturen.

Slutkonversation rensar timers för inaktivitet

När du anropar Avsluta konversation i ett samtalsämne stoppas alla aktiva inaktivitetstimrar permanent för den konversationen. Tidtagarna rensas helt; de återställs inte och pausas inte. Åtgärden tar bort väntande inaktivitetshändelser som redan är schemalagda.

Om du vill avsluta ett ämnes flöde utan att störa inaktivitetstimers använder du någon av de alternativa åtgärderna:

Åtgärd (i Copilot Studio) Effekt på tidsinställningar för inaktivitet
Avsluta konversation Rensar bort alla tidtagare; tidtagare stoppas permanent
Avsluta aktuellt ämne (EndDialog) Påverkar inte timrar; timrar fortsätter köra
Avbryt alla ämnen (CancelAllDialogs) Påverkar inte timrar; timrar fortsätter köra

Tips/Råd

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), använder du Slut på aktuellt ämne i stället för Slutkonversation.

Att använda en skyddsvariabel för att förhindra återaktivering är fortfarande en defensivt rekommenderad metod.

Utlösare utlöses efter agenteskalering

När systemet överför 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 före överföring eller använd en skyddsvariabel.

Utlösarmeddelanden kan visas i avskrifter när konversationen är slut

Även när en konversation har avslutats kan utlösaren fortfarande utlösas och dess meddelanden registreras i avskriften. Det här villkoret påverkar inte användarupplevelsen men kan visas i analys.

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 det här avsnittet för att identifiera och åtgärda vanliga konfigurationsproblem som kan förhindra att inaktivitetsutlösare fungerar som förväntat.

Avsluta konversationen i ämnet inaktivitet (looprisk)

Problem: När du anropar Avsluta konversation från ett inaktivitetsämne rensar du alla timer för inaktivitet. Men i kanaler med beständiga konversationer (särskilt Teams) förblir den underliggande konversationen aktiv. I vissa konfigurationer kan triggermekanismen fortfarande aktiveras igen, vilket leder till upprepade "sessionsavslutningsmeddelanden."

Lösning (rekommenderas som defensiv träning): Använd en skyddsvariabel:

  1. Skapa Global.DeactivateInactivity (booleskt, standard: false).

  2. Längst upp i varje inaktivitetsavsnitt lägger du till ett villkor: fortsätt bara om Global.DeactivateInactivity = false.

  3. Ange Global.DeactivateInactivity = trueinnan EndConversation anropas.

Anmärkning

Mönstret för skyddsvariabeln är särskilt viktigt för Teams-kanaler, där den beständiga konversationsmodellen innebär att konversationen aldrig riktigt slutar.

Varaktighet inställd på fel värde

Problem:durationInSeconds är angivet i sekunder. Värdet 60000 är cirka 16,7 timmar, inte 60 sekunder.

Lösning: Dubbelkolla dina värden mot referenstabellen i avsnitt 3.

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

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

Lösning: Använd det delade ämnesmönstret. Konsolidera nodlogik för frågenoder till ett enskilt ämne eller se till att endast en utlösare har en frågenod .

Rensa globala variabler i ämnet inaktivitet

Problem: Om inaktivitetsämnet rensar globala variabler förlorar agenten alla konversationskontexter och verkar inte svara när användaren returnerar.

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

Inte begränsa inaktivitetsutlösare i Teams

Problem: I Teams innebär den beständiga konversationsmodellen att utlösa eld på obestämd tid. Användarna får upprepade meddelanden om "är du kvar?" timmar eller dagar senare.

Lösning: Använd alltid gateringsvariabelmönstret för Teams.

Anropar inte funktionen closeOmnichannelConversation

Problem: För agenter av Dynamics 365 Customer Service räcker det inte med att enbart anropa EndConversation för att stänga Dynamics 365 Customer Service sessionen. Konversationer samlas i agentkön.

Solution: Ställ in CloseOmnichannelConversationtrue via Power Automate i ditt ämne för inaktivitet.

Dynamisk varaktighet från en uninitialiserad variabel

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

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

Förväntar sig att utlösare ska fungera efter agenteskalering

Problem: När systemet har överförts till en kundtjänstrepresentant utlöses utlösaren på den ursprungliga agentkonversationen och skickar meddelanden under den mänskliga agentsessionen.

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 ämnet för inaktivitetskontroll.

Felsöka när inaktivitetsutlösaren inte fungerar

Använd det här beslutsträdet 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? Den här kanalen har en känd begränsning. Triggern aktiveras men meddelanden kommer inte fram. Ingen lösning.
    • Telefoni/interaktivt röstrespons (IVR)? Den här kanalen stöds inte. Använd OnSilence-utlösaren i stället.
  3. Är Generative AI-orkestrering aktiverad?

    • Inaktivitetsutlösare använder en separat timerpipeline från igenkänningsbaserad routning. Deras beteende med generativ AI-orkestrering är dock inte helt verifierat. Om inaktivitetshanteringen är kritisk är klassisk orkestrering den rekommenderade konfigurationen.
  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 underagent i ett anslutet agentupplägg?

    • 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 tidsordning (kortast först). Se till att du väntar tillräckligt länge. Alla användarmeddelanden återställer alla timers.
  7. Har utlösaren ett villkor som refererar till en oinitialiserad variabel?

    • Om ett villkor refererar till en variabel som ännu inte har angetts utesluts utlösaren tyst. Kontrollera att alla villkorsvariabler har standardvärden.
  8. Återpublicerades agenten efter att konversationen startade?

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

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

  • Kontrollera konversationsavskrifter för eventuell aktivitet relaterad till inaktivitetsämnen. Om ämnet visas men användaren inte såg meddelandet är problemet kanalspecifik leverans.
  • Kontrollera att ämnet inte är inaktiverat eller arkiverat.
  • Bekräfta att utlösartypen är "Efter en period av inaktivitet", inte en frasutlösare.

Regelverk

  • Testa alltid på en publicerad kanal. Använd demowebbplatsen för snabb testning. Lita aldrig på testfönstret.

  • Använd en skyddsvariabel för att förhindra loopar. Skapa Global.DeactivateInactivity (booleskt värde, standard false). Ange den till true innan du anropar EndConversation. Kontrollera det i början av varje ämne om inaktivitet.

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

  • Verifiera dina enheter. Egenskapen mäts i sekunder. 5 minuter = 300, inte 5.

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

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

  • Ring EndConversation innan du kopplas till en kundtjänstrepresentant för att avaktivera inaktivitetsutlösare.

  • Övervaka konversationsavskrifter efter distributionen för att verifiera att meddelanden visas vid förväntade tidpunkter.

Vanliga frågor och svar

Varför fungerar inte inaktivitetsutlösaren i testpanelen?

Timers inaktiveras i testpanelen avsiktligt. Publicera din agent och testa på en livekanal.

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

Ja. Varaktighetsfältet 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. Kontrollera att variabeln initieras och innehåller ett giltigt tal.

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

Körningsmiljön plockar upp den nya versionen. Om utlösar-ID:t har ändrats (ämnet har tagits bort och återskapats) återgår systemet till matchning efter varaktighet. Om ingen utlösare matchar efter ID eller varaktighet tas den väntande inaktivitetshändelsen bort.

Hur stoppar jag helt inaktivitetsutlösare i Teams?

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

Fungerar inaktivitetsutlösaren med autentisering?

Ja, men för långa sessionstimeouter (till exempel 24 timmar) kan användarens autentiseringstoken upphöra att gälla innan utlösaren utlöses. Se till att din agent hanterar omautentisering på ett korrekt sätt.

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

Anslutningsanrop har en tidsgränsgräns (30 sekunders standardvärde, max 60 sekunder). Optimera anslutningen eller hantera tidsgränsen smidigt.