Gå til innhold

Kildekode: ai_chatbot.asp (Admin & Scaffolding)

Denne filen brukes internt i Clubsite CMS Admin for å styre innstillingene (CRUD) av chatboten. Oppretter tabellen automatisk ved første besøk.

Mål og Intensjon

  • Database-scaffolding: Koden sjekker umiddelbart om AI_Chatbot_Settings eksisterer via en t-SQL spørring, og oppretter tabellen automatisk.
  • CRUD Operations: Lar admin oppdatere Bot-navn, farger og statuser.

Kildekode

<!-- #include virtual="/csadmin/common_admin/declarations.asp" -->
<!-- #include virtual="/csadmin/common_admin/html_header.asp" -->
<%
' --- RETTIGHETSSJEKK ---
' Kun administratorer med Supervisor-rettigheter (logSV) eller en dedikert AI-tilgang kan endre dette.
If Not boolSession Or (logSV <> "True" And logSV <> "1" And logSV <> True) Then
    session("outputmessage") = "<div class=""alert alert-danger"">Du har ikke rettigheter til å administrere AI Chatbot.</div>"
    response.redirect("/csadmin/default.asp")
End If

' --- LAGRING AV DATA ---
Dim ais_Active, ais_Name, ais_Welcome, ais_Color, ais_Logo, ais_ExcludedPaths
Dim statusMsg

If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
    ais_Active = Request.Form("ai_status")
    ais_Name = Replace(Request.Form("bot_name"), "'", "''")
    ais_Welcome = Replace(Request.Form("bot_welcome"), "'", "''")
    ais_Color = Replace(Request.Form("bot_color"), "'", "''")
    ais_Logo = Replace(Request.Form("bot_logo"), "'", "''")
    ais_ExcludedPaths = Replace(Request.Form("excluded_paths"), "'", "''")

    Set dbConn = Server.CreateObject("ADODB.Connection")
    dbConn.Open "Provider=MSOLEDBSQL; Data Source=" & DB_SOURCE & "; Initial Catalog=" & DB_NAME & "; User Id=" & DB_USER & "; Password=" & DB_PWD & ";"

    ' Sjekk om tabellen mangler (catch err), eller bare sjekk records
    On Error Resume Next
    Set rs = dbConn.Execute("SELECT Count(*) as Cnt FROM AI_Chatbot_Settings")
    If Err.Number <> 0 Then
        ' Tabellen eksisterer sannsynligvis ikke, opprett den
        Err.Clear
        dbConn.Execute("CREATE TABLE AI_Chatbot_Settings (IsActive int, BotName nvarchar(100), WelcomeMessage nvarchar(500), ThemeColor nvarchar(20), LogoUrl nvarchar(255), ExcludedPaths nvarchar(max))")
        rs = dbConn.Execute("SELECT Count(*) as Cnt FROM AI_Chatbot_Settings")
    End If
    On Error GoTo 0

    If rs("Cnt") > 0 Then
        ' Oppdater eksisterende
        dbConn.Execute("UPDATE AI_Chatbot_Settings SET IsActive = " & ais_Active & ", BotName = '" & ais_Name & "', WelcomeMessage = '" & ais_Welcome & "', ThemeColor = '" & ais_Color & "', LogoUrl = '" & ais_Logo & "', ExcludedPaths = '" & ais_ExcludedPaths & "'")
    Else
        ' Sett inn for første gang
        dbConn.Execute("INSERT INTO AI_Chatbot_Settings (IsActive, BotName, WelcomeMessage, ThemeColor, LogoUrl, ExcludedPaths) VALUES (" & ais_Active & ", '" & ais_Name & "', '" & ais_Welcome & "', '" & ais_Color & "', '" & ais_Logo & "', '" & ais_ExcludedPaths & "')")
    End If

    dbConn.Close
    Set dbConn = Nothing

    statusMsg = "<div class=""alert alert-success"">Chatbot-innstillingene ble lagret!</div>"
End If

' --- LESING AV EKSISTERENDE DATA ---
Set dbConn = Server.CreateObject("ADODB.Connection")
dbConn.Open "Provider=MSOLEDBSQL; Data Source=" & DB_SOURCE & "; Initial Catalog=" & DB_NAME & "; User Id=" & DB_USER & "; Password=" & DB_PWD & ";"
On Error Resume Next
Set rs = dbConn.Execute("SELECT * FROM AI_Chatbot_Settings")
If Err.Number = 0 And Not rs.EOF Then
    ais_Active = rs("IsActive")
    ais_Name = rs("BotName")
    ais_Welcome = rs("WelcomeMessage")
    ais_Color = rs("ThemeColor")
    ais_Logo = rs("LogoUrl")
    ais_ExcludedPaths = rs("ExcludedPaths")
Else
    ' Default verdier hvis tom tabell / ikke finnes
    ais_Active = 0
    ais_Name = "Klubbassistent"
    ais_Welcome = "Hei! Hva kan jeg hjelpe deg med i dag?"
    ais_Color = "#2E7D32"
    ais_Logo = "/images/ai_icon.png"
    ais_ExcludedPaths = "/csadmin/" & vbCrLf & "/medlem/intern"
End If
On Error GoTo 0
dbConn.Close
Set dbConn = Nothing
%>
<style>
    .chatlog-table { width: 100%; font-size: 13px; }
    .chatlog-table th { background: #eee; padding: 8px; text-align: left; }
    .chatlog-table td { padding: 8px; border-bottom: 1px solid #ddd; vertical-align: top; }
    .q-col { font-weight: bold; width: 40%; }
    .a-col { font-style: italic; color: #555; width: 60%; }
</style>
</head>
<body>
<div id="wrapper">
    <div class="topline">
        <div class="inner">
            <div class="cs4-logo"><a><span>Clubsite CMS</span></a></div>
        </div>
    </div>

    <div class="main">
        <h2>AI Chatbot Instillinger</h2>
        <%=statusMsg%>

        <div class="row">
            <!-- VENSTRE: INNSTILLINGER & RETTIGHETER/INDEKSERING -->
            <div class="col-sm-6">
                <div class="widget">
                    <div class="whead">
                        <h3>Oppsett og Indeksering</h3>
                    </div>
                    <div class="wbody">
                        <div class="msg-help">
                            <p>Styr hvordan chatboten oppfører seg på nettsiden, og skjul interne områder fra å bli lest av AI-en.</p>
                        </div>

                        <form method="POST" action="ai_chatbot.asp" class="label-left">
                            <div class="inp-group">
                                <label>Status:</label>
                                <div class="checks clearfix">
                                    <div class="check">
                                        <label><input type="radio" name="ai_status" value="1" <% If ais_Active="1" Or ais_Active=True Then Response.Write("checked") %>><span>✅ Chatbot er AKTIV</span></label>
                                    </div>
                                    <div class="check">
                                        <label><input type="radio" name="ai_status" value="0" <% If Not (ais_Active="1" Or ais_Active=True) Then Response.Write("checked") %>><span>❌ Chatbot er DEAKTIVERT</span></label>
                                    </div>
                                </div>
                            </div>

                            <div class="inp-group">
                                <label>Bot Navn:</label>
                                <input type="text" name="bot_name" value="<%=Server.HTMLEncode(ais_Name)%>" placeholder="F.eks: Ski-bot">
                            </div>

                            <div class="inp-group">
                                <label>Velkomstmelding:</label>
                                <textarea name="bot_welcome" rows="3"><%=Server.HTMLEncode(ais_Welcome)%></textarea>
                            </div>

                            <div class="inp-group">
                                <label>Tema Farge (HEX):</label>
                                <input type="color" name="bot_color" value="<%=Server.HTMLEncode(ais_Color)%>" style="width: 50px; padding: 0; border: none; cursor:pointer;">
                            </div>

                            <div class="inp-group">
                                <label>Ikon / Logo (URL):</label>
                                <input type="text" name="bot_logo" value="<%=Server.HTMLEncode(ais_Logo)%>">
                            </div>

                            <hr>
                            <h4>Datarisiko & Indeksering</h4>
                            <div class="inp-group">
                                <label>Ekskluderte stier:<br><span class="small soft">Én URL/sti per linje. Disse vil IKKE bli matet til AI-libraryet.</span></label>
                                <textarea name="excluded_paths" rows="4" placeholder="/csadmin/&#10;/abonnement/intern"><%=Server.HTMLEncode(ais_ExcludedPaths)%></textarea>
                            </div>

                            <hr>
                            <div class="inp-group right">
                                <input type="submit" value="Lagre Chatbot-innstillinger" class="btn btn-success">
                            </div>
                        </form>
                    </div>
                </div>
            </div>

            <!-- HØYRE: CHAT LOGS -->
            <div class="col-sm-6">
                <!-- logg tabell struktur lignende mockupen din -->
                <div class="widget">
                    <div class="whead">
                        <h3>Siste interaksjoner (Logg)</h3>
                    </div>
                    <div class="wbody">
                        <div class="msg-help">
                            <p><strong>Tips!</strong> Ser du spørsmål AI-en ikke kan svare på? Legg fasiten i en artikkel chatbot har tilgang til!</p>
                        </div>
                        <table class="chatlog-table">
                            <thead>
                                <tr><th>Tidspunkt</th><th>Spørsmål & Svar</th></tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>Akkurat nå</td>
                                    <td>
                                        <div class="q-col">Klar for loggføring</div>
                                        <div class="a-col">Kobles opp mot backend API-et i neste runde.</div>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        <br>
                        <a href="ai_chat_log.asp" class="btn btn-default btn-sm">Se hele loggen (Kommer)</a>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>
</body>
</html>