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/ /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>