SL:Ideer:Resepsjon

Fra E-Læring
Hopp til: navigasjon, søk

Respesjon

Verifisering av brukerkontoer er en av tingene man skal kunne gjøre i resepsjonen

Funksjoner

I resepsjonen skal man få gjort ting som:

  1. Verifisere brukerkonto/epostadresse.
  2. Utlevert adgangskort (mer om dette senere.

Verifisering av brukerkonto

For å knytte studenter til en avatar i Second Life må studentene registrere seg på web via et enkelt grensenitt. Når de har gjort det mottar de en mail med en verifiseringskode og instrukser om hva de skal gjøre videre.

De skal nå logge inn i Second Life, komme til området til HiST og oppsøke resepsjonen (de skal rett og slett bare trykke på en slurl lenke).

Når de har verifisert kontoen sin i Second Life kan de fullføre registreringsskjemaet på web og eventuelt logge seg inn for en oversikt over kontoen sin.

LSL kode for verifiseringen

key name_request;           // ID for forespørselen til dataserver
key http;                   // ID for http forespørselen
string avatarnavn;          // Navnet til avataren, returnert fra dataserver
key nokkel;                 // Unik id for brukeren
integer kanal = 1000;       // Kanalen kommunikasjon med bruker skjer på

default
{
    state_entry()
    {
    }

    // Touch setter i gang registreringsprosessen
    touch_start(integer total_number)
    {
        
        nokkel = llDetectedKey(0);                                  // Lagrer agent key
        name_request = llRequestAgentData(nokkel, DATA_NAME);       // Spør dataserver om avatarnavn

    }

    // Blir kalt opp når avatarnavnet fra dataserver
    // blir returnert.    
    dataserver(key id, string navn) {
     
        // Sjekker at det er riktig forespørsel
        // da det kan skje at flere agenter spør samtidig
        if (id == name_request) {
            avatarnavn = navn;      // Lagrer navnet
            state verifisering;     // Setter programmet i verifiseringsmodus 
        }
           
    }
}

// Verifiseringsmodus.
// Her skjer kommunikasjon med server for å finne
// ut om data stemmer eller ikke.
state verifisering {
    
    state_entry() {
    
        // Skriver ut en hjelpetekst
        llWhisper(0, " - - Verifisering av registrering- - ");
        llWhisper(0, "For aa verifisere registreringen din skriver du foelgende i chatbaren nederst i vinduet");
        llWhisper(0, "/"+(string)kanal+" verifiser koden-din-her");
        llWhisper(0, "Der koden-din-her er verifiseringskoden du mottok paa mail");
           
        // Dersom brukeren nå bare stikker istedenfor å skrive
        // inn verifiseringskoden blir scriptet sittende fast i 
        // verifiseringsmodus. Derfor har jeg lagt inn en "timeout"
        // på 120 sekunder som setter scriptet tilbake i default modus 
        // om det ikke har skjedd noe innen da.
        llSetTimerEvent(120.0);
        
        // Lytter etter verifiseringskode fra samme bruker vi har
        // lagret avatarnavnet til.
        llListen(kanal, "", llDetectedKey(0), ""); 
    }
    
    // Setter scriptet tilbake i default modus dersom
    // det går for lang tid uten at noe skjer.
    timer() {
        llWhisper(0, "Du brukte for lang tid. Dersom du vil verifisere kontoen din maa du starte prosessen her i SL paa nytt");
        llSetTimerEvent(0);
        state default;   
    }

    // Snapper opp meldinger fra avataren  
    listen(integer channel, string name, key id, string message) {

        // Splitter opp meldingen basert på mellomrom
        list deler = llParseString2List(message, [" "], []);
        if (llList2String(deler, 0) == "verifiser") {   // Sjekker for riktig nøkkelord
            
            // Sender http forespørselen med nødvendig informasjon
            http = llHTTPRequest("http://stud.aitel.hist.no/~kimab/sl/verifikasjonsserver.php?navn="+llEscapeURL(avatarnavn)+"&key="+(string)nokkel+"&kode="+llList2String(deler, 1), [HTTP_METHOD, "GET"], "");
            
        } else {
            llWhisper(0, "Feil");   
            state default;  // Setter scriptet tilbake i default modus
        }

        llSetTimerEvent(0); // Slår av timeren 
    }

    // Metoden som blir kaldt opp når det kommer data fra http server    
    http_response(key requestid, integer status, list metadata, string data) {
     
        // Sjekker at det er riktig forespørsel
        // vi har fått svar på.
        if (http == requestid) {
        
            // Gir tilbakemelding til bruker
            // på hva som skjer.    
            if (data == "-1") {
                llWhisper(0, "Du har enten oppgitt feil verifikasjonskode eller stavet avatarnavnet feil naar du registrerte det paa web");
            } else if (data == "false") {
                llWhisper(0, "Noe gikk galt, kom igjen senere");   
            } else if (data == "-2") {
                llWhisper(0, "Du er allerede verifisert"); 
            } else if (data == "true") {
                llWhisper(0, "Gratulerer! Du kan naa benytte deg av kontoen paa web og tilbudet her i Second Life!");
            } else {
                llWhisper(0, data);   
            }
            
            // Hopper tilbake til default state og er klar
            // for nye registreringer.              
            state default;   
            
        }
              
    }
                    
}