Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Tillståndet i en agent följer samma paradigm som moderna webbappar. Agent-SDK:et innehåller några abstraktioner som gör tillståndshanteringen enklare.
Precis som med webbappar är en agent i sig tillståndslös. En annan instans av din agent kan hantera en viss konversation. För vissa agenter är den här enkelheten att föredra – agenten kan antingen fungera utan ytterligare information eller garanteras det att informationen som krävs finns i det inkommande meddelandet. För andra är tillstånd (till exempel var konversationen slutade eller data som tidigare tagits emot om användaren) nödvändiga för att agenten ska ha en användbar konversation.
Varför behöver jag tillstånd?
Genom att underhålla tillstånd kan din agent ha mer meningsfulla konversationer genom att komma ihåg vissa saker om en användare eller konversation. Om du till exempel har pratat med en användare tidigare kan du spara tidigare information om dem, så att du inte behöver be om den igen. Tillståndet behåller också data längre än den aktuella omgången, så att agenten behåller information under en konversation med flera omgångar.
När det gäller agenter finns det några lager för där tillstånd kan används: lagringslagret, tillståndshantering och AgentApplication.
Lagringsskikt
Med början i serverdelen, där tillståndsinformationen faktiskt lagras, finns lagringslagret. Du kan se det här som din fysiska lagring, till exempel i minnet, Azure eller en server från tredje part.
Agent-SDK innehåller vissa implementeringar för lagringslagret:
Minneslagring implementerar lagring i minnet för testning. Datalagring i minnet är bara avsett för lokal testning eftersom lagringen är instabil och tillfällig. Data rensas varje gång agenten startas om.
Azure Blob Storage ansluter till en Azure Blob Storage-objektdatabas.
Azure Cosmos DB-partitionerad lagring ansluter till en partitionerad Cosmos DB NoSQL-databas.
Anvisningar om hur du ansluter till andra lagringsalternativ finns i Översikt över lagring för agent-SDK
Statushantering
Tillståndshantering automatiserar läsning och skrivning av agentens tillstånd till det underliggande lagringslagret. Tillståndet lagras som tillståndsegenskaper, vilket i praktiken är nyckel/värde-par som agenten kan läsa och skriva via tillståndshanteringsobjektet utan att behöva bekymra sig om den specifika underliggande implementeringen. Dessa tillståndsegenskaper definierar hur informationen lagras. När du till exempel hämtar en egenskap som du har definierat som en specifik klass eller ett objekt, vet du hur dessa data kommer att struktureras.
Dessa tillståndsegenskaper klumpas ihop i begränsade "grupper", som bara är samlingar för att organisera dessa egenskaper. SDK:et innehåller tre av dessa "bucketar":
- Användartillstånd
- Konversationstillstånd
Alla dessa grupper är underklasser av agenttillståndsklassen, som kan härledas för att definiera andra typer av grupper med olika omfång.
Dessa fördefinierade bucketar är begränsade till en viss synlighet, beroende på bucketen:
- Användartillståndet är tillgängligt i alla former som agenten samtalar med användaren via kanalen, oavsett konversation
- Konversationstillstånd är tillgängligt i valfri tur i en specifik konversation, oavsett användare, till exempel i gruppkonversationer
Användartillstånd och konversationstillstånd begränsas av kanalen. Samma person som använder olika kanaler för att komma åt din agent visas som olika användare, en för varje kanal och var och en med ett distinkt användartillstånd.
De nycklar som används för var och en av dessa fördefinierade grupper är specifika för användaren och konversationen, eller agenten. När du anger värdet för din tillståndsegenskap definieras nyckeln internt, med information som finns i turkontexten för att säkerställa att varje användare eller konversation placeras i rätt bucket och egenskap. Mer specifikt definieras nycklarna på följande sätt:
- Användartillståndet skapar en nyckel med hjälp av kanal-ID och från ID. Till exempel:
{Activity.ChannelId}/users/{Activity.From.Id}#YourPropertyName - Konversationstillståndet skapar en nyckel med hjälp av kanal-ID:t och konversations-ID:t. Till exempel:
{Activity.ChannelId}/conversations/{Activity.Conversation.Id}#YourPropertyName
När du ska använda varje typ av tillstånd
Konversationstillstånd är bra för att spåra konversationens kontext, till exempel:
- Om agenten ställde en fråga till användaren och vilken fråga det var
- Vad det aktuella samtalsämnet är eller vad det sista var
- Spela in chatthistorik
Användartillstånd är bra för att spåra information om användaren, till exempel:
- Icke-kritisk användarinformation, till exempel namn och inställningar, en larminställning eller en aviseringsinställning
- Information om den senaste konversationen de hade med agenten
- En produktsupportagent kan till exempel spåra vilka produkter som användaren har frågat om.
AgentApplication
- Routningshanterare som du lägger till får en
TurnState-instans. Åtkomst till konversations- eller användartillstånd från den här instansen. - Statusen läses in och sparas automatiskt.