Del via


Bruk variabler til å overføre innhold på tvers av emner

Variabler lagrer kundenes svar på spørsmål fra kopiloten. Du kan for eksempel lagre navnet på en kunde i en variabel kalt UserName. Kopiloten kan deretter henvende seg til kunden etter navn når samtalen fortsetter.

Som standard kan en variabels verdi bare brukes i emner der variabelen blir opprettet. Det er imidlertid mulig å bruke samme verdi på nytt på tvers av emner. I et Velkommen-emne spør for eksempel roboten etter kundens navn og e-postadresse. I emnet Avtalebestilling ønsker du at kopiloten skal huske hva kunden har angitt, og ikke spørre på nytt.

En måte å bruke en variabel på nytt på er å sende variabelen mellom emner. Den andre måten er å gjøre variabelen global i omfang, og det er det denne artikkelen omhandler. Globale variabler kalles dette fordi de er tilgjengelige i alle emner på tvers av hele kopiloten.

Kopilotvariabler gjelder under én brukerøkt. Du angir hvilke variabler som skal behandles som kopilotvariabler for å skille dem fra variabler på emnenivå.

Opprette en global variabel

Du kan opprette en global variabel ved å endre omfanget for en emnevariabel.

  1. Opprett en variabel eller bruk Variabler-ruten til å åpne en eksisterende variabel.

  2. I ruten Egenskaper for variabel velger du Global (alle emner har tilgang).

    Variabelnavnet får prefikset Global. for å skille det fra variabler på emnenivå. Variabelen UserName vises for eksempel nå som Global.UserName.

    Skjermbilde som viser ruten Egenskaper for variabel med Global innstilling uthevet.

  3. Lagre emnet.

    Navnet på en global variabel må være unikt på tvers av alle emner. Hvis det oppstår en konflikt, må du endre navnet på variabelen før du lagrer emnet.

Bruke globale variabler

Når du skriver en kopilotmelding i en Melding-node eller en Spørsmål-node, velger du {x}-ikonet for å vise variablene som er tilgjengelige for emnet. Globale variabler vises i fanen Egendefinert sammen med eventuelle emnevariabler. Variabler er oppført i alfabetisk rekkefølge.

Skjermbilde som viser valg av en global variabel.

Finne alle emner ved hjelp av en global variabel

Du finner hvor en global variabel er definert og hvilke andre emner som bruker den. Dette kan være nyttig hvis du arbeider med en ny kopilot, eller hvis du har flere variabler og en kompleks emneforgrening.

  1. Velg en global variabel i redigeringslerretet, eller åpne Variabler-ruten og velg en global variabel.

  2. I ruten Egenskaper for variabel i delen Referanse velger du ett av emnene der variabelen brukes til å gå direkte til det emne og den noden.

    Skjermbilde som viser listen over emner som brukes av en Variabel-egenskapsruten.

Livssyklusen til globale variabler

Som standard beholdes verdien til en global variabel til økten er slutt. Noden Fjern variabelverdier tilbakestiller verdiene for globale variabler og brukes i systememnet Tilbakestill samtale. Dette emnet kan utløses enten ved omdirigering eller når brukeren skriver inn et utløseruttrykk, for eksempel Start på nytt. I det tilfellet tilbakestilles alle globale variabler.

Angi en verdi for en global variabel fra eksterne kilder

Hvis du vil sørge for at kopiloten starter en samtale med litt kontekst, kan du initialisere en global variabel med en ekstern kilde. La oss si at området krever at brukere logger seg på. Siden kopiloten allerede vet navnet til en bruker, kan den hilse på kunder ved navn før de begynner å skrive inn det første spørsmålet.

  1. Velg en global variabel.

  2. Velg Eksterne kilder kan angi verdier i ruten Egenskaper for variabel.

Angi globale variabler i en innebygd kopilot

Hvis du bygger inn kopiloten på en enkel nettside, kan du legge til variabler og definisjonene deres i nettadressen til kopiloten. Hvis du vil ha litt mer kontroll, kan du også bruke en <script>-kodeblokk til å kalle opp og bruke variabler programmatisk.

Variabelnavnet i spørringsstrengen for nettadressen må samsvare med navnet på den globale variabelen uten Global.-prefikset. En global variabel Global.UserName blir for eksempel henvist til som UserName i spørringen.

Eksemplene nedenfor gir en enkel deklarasjon for variablene. I et produksjonsscenario kan du inkludere en annen variabel som spørringsparameter eller variabeldefinisjon, som allerede har lagret navnet på brukeren (hvis du for eksempel har brukernavnet fra et påloggingsskript).

Legg til variablene og definisjonene i nettadressen til kopiloten som spørringsstrengparametere i formatet botURL?variableName1=variableDefinition1&variableName2=variableDefinition2.

Eksempel:

Det skilles mellom små og store bokstaver i parameternavnet. username=Renata fungerer også i dette eksemplet.

Legg til globale variabler i et egendefinert lerret

Du kan også legge til variabelen i et egendefinert lerret.

  1. I <script>-delen på siden der du har kopiloten, definerer du variablene som følger, og erstatter variableName1 med variabelnavnet uten Global.-prefikset og variableDefinition1 for definisjonen. Skill flere variabler med komma (,).

       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 <script>-delen kaller du opp store når du bygger inn kopiloten, som i følgende eksempel der store kalles opp like ovenfor der styleOptions kalles opp (du må erstatte BOT_ID med ID-en for kopiloten):

    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));