Återanvänd variabler i olika ämnen

Viktigt

Power Virtual Agents-funktioner ingår nu i Microsoft Copilot Studio efter betydande investeringar i generativ AI och förbättrade integrationer mellan Microsoft Copilot.

Vissa artiklar och skärmbilder kan referera till Power Virtual Agents när vi uppdaterar dokumentation och utbildning.

Variabler lagrar kundernas svar på frågor från din copilot. Du kan till exempel spara en kunds namn i en variabel som heter UserName. Copilot kan sedan adressera kunden vid namn i takt med att konversationen fortsätter.

Som standard kan en variabels värde endast användas i ämne där variabeln skapas. Det går dock att återanvända samma värde i olika ämnen. T.ex. ämnet välkommen frågar efter kundens namn och e-postadress. I ämnet Bokning av avtalad tid vill du att copilot ska komma ihåg vad kunden har angett och inte fråga igen.

Ett sätt att återanvända en variabel är att skicka variabeln mellan ämnen. Det andra sättet är att göra variabeln global i omfattning och det är vad den här artikeln beskriver. Globala variabler kallas det för att de är tillgängliga i alla ämnen i hela copilot.

Copilot-variabler gäller under en enskild användarsession. Du anger vilka variabler som ska behandlas som copilot-variabler för att särskilja dem från variabler på ämnesnivå.

Skapa en global variabel

Du skapar en global variabel genom att ändra omfattningen av en ämnesvariabel.

  1. Skapa en variabel eller använd rutan variabler för att öppna en befintlig variabel.

  2. I rutan Variabelegenskaper, välj Global (alla ämnen kan få åtkomst).

    Variabelnamnet får en viss prefixlängd Global. som skiljer från variabler på ämnesnivå. Till exempel visas variabeln UserName som Global.UserName.

    Skärmbild som visar rutan för variabelegenskaper, med avsnittet Global inställning markerat.

  3. Spara ämnet.

    Namnet på en global variabel måste vara unika i alla ämnen. Om det är en konflikt måste du byta namn på variabeln innan du sparar ämnet.

Använd globala variabler

När du skriver ett copilot-meddelande i en meddelandenod eller en frågenod, välj ikonen {x} för att se de variabler som är tillgängliga för ämnet. Globala variabler visas på fliken Anpassad tillsammans med eventuella ämnesvariabler. Variabler anges i alfabetisk ordning.

Skärmbild med val av Lägg till en global variabel.

Söka efter alla ämnen med hjälp av en global variabel

Du hittar var en global variabel definieras och vilka andra ämnen som använder den. Det kan vara användbart om du arbetar med en ny copilot eller om du har flera variabler och komplex ämnesförgrening.

  1. Välj en global variabel i redigeringsfönstret eller öppna rutan Variabler och välj en global variabel.

  2. I rutan Variabelegenskaper, i avsnittet Referens, väljer du något av de ämnen där variabeln används för att gå direkt till det avsnittet och den noden.

    Skärmbild som visar en lista med hjälpavsnitt som används av en variabel i rutan variabelegenskaper.

Livscykeln för globala variabler

Som standard bevaras värdet för en global variabel tills sessionen avslutas. Noden Rensa variabelvärden återställer värdena för globala variabler och används i systemet systemämnet Återställ konversation. Det ämnet utlöses antingen genom om omdirigerande eller när användaren skriver in en utlösarfras, t.ex. "Starta om". I så fall återställs alla globala variabler.

Ange värdet för en global variabel från externa källor

Om du vill vara säker på att copilot startar en konversation med ett sammanhang kan du initiera en global variabel med en extern källa. Anta att användarna måste logga in på webbplatsen. Eftersom din copilot redan känner till en användares namn kan den ge kunderna ett namn innan de börjar skriva sin första fråga.

  1. Välj en global variabel.

  2. I rutan Egenskaper för variabel, välj Externa källor kan ställa in värden.

Ange globala variabler i en inbäddad copilot

Om du bädda in din copilot på en enkel webbsida kan du lägga till variabler och deras definitioner till copilot-URL:en. Om du vill ha lite mer kontroll kan du också använda ett <script>-kodblock för att anropa och använda variabler programmässigt.

Variabelnamnet i frågesträngen för URL måste överensstämma med namnet på den globala variabeln, utan Global.-prefixet. En global variabel Global.UserName kallas till exempel för UserName i frågan.

Exemplet nedan ger en enkel deklaration för variablerna. I ett produktionsscenario kan du som en sökparameter eller variabeldefinition skicka in en annan variabel som redan har lagrat användarens namn (till exempel om du har användarnamnet från ett inloggningsskript).

Lägg till variablerna och deras definitioner i copilot-URL:en som Parametrar för frågesträngar i formatet botURL?variableName1=variableDefinition1&variableName2=variableDefinition2.

Till exempel:

Parameternamnet är skiftlägesokänsligt. username=Renata kommer också att fungera i det här exemplet.

Lägg till globala variabler i en anpassad arbetsyta

Du kan också lägga till variabeln i en anpassad arbetsyta.

  1. I avsnittet <script> på sidan där du har copilot definierar du variablerna enligt följande och ersätter variableName1 för variabelnamnet utan Global. prefixet och variableDefinition1 för definitionen. Avskilj flera variabler med kommatecken (,).

       const store = WebChat.createStore({}, ({ dispatch }) => next => action => {
         if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
           dispatch({
              type: "WEB_CHAT/SEND_EVENT",
              payload: {
                name: "pvaSetContext",
                value: {
                   "variableName1": "variableDefinition1",
                   "variableName2": "variableDefinition2"
                }
              },
            });
          }
            return next(action);
        });
    
  2. I avsnittet <script> anropar du store när du bäddar in copilot, som i följande exempel där store kallas precis ovan där styleOptions kallas (du måste byta ut BOT_ID med ditt copilot-ID):

    const BOT_ID = "12345-5678";
    const theURL = "https://powerva.microsoft.com/api/botmanagement/v1/directline/directlinetoken?botId=" + BOT_ID;
    
    fetch(theURL)
        .then(response => response.json())
        .then(conversationInfo => {
            window.WebChat.renderWebChat(
                {
                    directLine: window.WebChat.createDirectLine({
                        token: conversationInfo.token,
                    }),
                    store,
                    styleOptions
                },
                document.getElementById('webchat')
            );
        })
        .catch(err => console.error("An error occurred: " + err));