ADVANCED SERVICES · LIVE CHAT DEMO

Βάλτε το chatbot
στο δικό σας site.

Οδηγίες για developers που δουλεύουν με απλό HTML, custom PHP ή Laravel. Δύο αρχεία στο frontend, λίγες γραμμές ρυθμίσεων και ένα endpoint επικοινωνίας με το chatbot backend.

Ξεκινήστε την ενσωμάτωση

Έλεγχος σύνδεσης του live demo…

Πώς λειτουργεί αυτή η σελίδαLIVE
01Η σελίδα σαςHTML + widget CSS/JS
02Site proxyPOST /api/chatbot/chat
03Chatbot backendPOST /chat

Πατήστε τη φούσκα κάτω δεξιά. Το widget που βλέπετε είναι το ίδιο που θα προσθέσετε στο site σας.

ΕΠΙΣΚΟΠΗΣΗ

Τι χρειάζεται για να εμφανιστεί το chat;

Δεν εγκαθιστάτε WordPress plugin. Το widget είναι ανεξάρτητο JavaScript και προσθέτει μόνο του το floating κουμπί και το chat panel στο document.body.

{ }

Δύο frontend αρχεία

chat-widget.css και chat-widget.js, φιλοξενούμενα στο δικό σας site.

↗

Ένα API endpoint

Προτεινόμενο: endpoint στο ίδιο domain που προωθεί τα μηνύματα στο chatbot backend.

Αυτή η σελίδα είναι το λειτουργικό παράδειγμα. Φορτώνει τα ίδια δύο αρχεία και καλεί /api/chatbot/chat. Ανοίξτε το chat και στείλτε ένα μήνυμα για να δείτε τη ροή στην πράξη.

ΒΗΜΑ 01

Αντιγράψτε τα αρχεία και το snippet

Κατεβάστε τα δύο αρχεία της ίδιας έκδοσης και βάλτε τα, για παράδειγμα, στον δημόσιο φάκελο /assets/ai-chat/ του site σας.

Στο κοινό layout της σελίδας προσθέστε τον παρακάτω κώδικα. Αλλάξτε τα κείμενα του brand και το proxyUrl αν χρησιμοποιείτε διαφορετική διαδρομή.

HTML · προτεινόμενο με site proxy
<link rel="stylesheet" href="/assets/ai-chat/chat-widget.css">
<script>
  window.aiChatWidgetConfig = {
    enabled: true,
    mode: 'site-proxy',
    proxyUrl: '/api/chatbot/chat',
    companyName: 'Η εταιρεία σας',
    welcomeMessage: 'Γεια σας! Πώς μπορώ να βοηθήσω;',
    storeTranscript: false,
    timeout: 30
  };
</script>
<script defer src="/assets/ai-chat/chat-widget.js"></script>

Βάλτε το CSS στο <head> και το config μαζί με το JS πριν από το </body>. Το config πρέπει να οριστεί πριν φορτωθεί το widget script. Φορτώστε τα αρχεία μία φορά ανά σελίδα.

ΒΗΜΑ 02

Σε ποιο αρχείο του site μπαίνει;

HTML

Σε κάθε σελίδα όπου θέλετε το chatbot, ή στο κοινό HTML template αν υπάρχει.

Custom PHP

Στο κοινό header.php/footer.php ή στο layout που χρησιμοποιούν όλες οι σελίδες.

Laravel

Στο βασικό Blade layout, συνήθως resources/views/layouts/app.blade.php. Τα δύο assets πηγαίνουν κάτω από public/assets/ai-chat/.

Δεν χρειάζεται να γράψετε χειροκίνητα container <div>. Για επιπλέον κουμπί που ανοίγει το chat, προσθέστε <button type="button" data-ai-chat-open>Μιλήστε μαζί μας</button>.

ΒΗΜΑ 03

Συνδέστε το site με το backend

Στο προτεινόμενο site-proxy mode, ο browser καλεί endpoint στο ίδιο domain, όπως /api/chatbot/chat. Ο server του site προωθεί το αίτημα στο {BACKEND_URL}/chat και επιστρέφει την απάντηση. Το backend URL και τυχόν API key μένουν στον server.

Browser→Το site σας
/api/chatbot/chat
→Chatbot backend
/chat

Ο endpoint μπορεί να είναι Laravel route/controller, custom PHP route ή reverse proxy. Πρέπει να δέχεται JSON POST, να προωθεί το X-Chat-History-Token όταν υπάρχει και να επιστρέφει JSON. Εφαρμόστε όριο μηνύματος, rate limit, timeout και ασφαλή μηνύματα σφάλματος. Το URL του backend ορίζεται μόνο στη ρύθμιση του server.

Για static-only hosting: χωρίς server endpoint δεν λειτουργεί το site-proxy. Χρησιμοποιήστε το direct mode παρακάτω μόνο αν το chatbot backend δέχεται browser requests από το domain σας.

ΕΝΑΛΛΑΚΤΙΚΗ

Direct mode για στατικό HTML site

Αν δεν έχετε server, ο browser μπορεί να καλεί το chatbot backend απευθείας. Αντικαταστήστε μόνο τις δύο ρυθμίσεις στο προηγούμενο snippet:

JavaScript · direct mode
mode: 'direct',
backendUrl: 'https://your-chatbot-backend.example'

Το backend πρέπει να επιτρέπει με CORS το ακριβές origin του site σας, POST/OPTIONS και τα headers Content-Type, X-Chat-History-Token. Το backend URL είναι ορατό στον browser. Μην βάλετε μυστικά ή API keys στο JavaScript. Το base URL δεν τελειώνει σε /chat· το widget το προσθέτει μόνο του.

ΠΡΟΣΑΡΜΟΓΗ

Κείμενα, εμφάνιση και απόρρητο

Στο aiChatWidgetConfig μπορείτε να ορίσετε companyName, companySubtitle, logoUrl, bubbleIconUrl, welcomeMessage, readyQuestions, disclaimer, onlineText, timeout και μεταφράσεις στο i18n. Για τα χρώματα χρησιμοποιήστε CSS variables μετά το widget CSS:

CSS · βασικά χρώματα
:root {
  --ai-chat-primary: #193b7a;
  --ai-chat-secondary: #d91f3d;
  --ai-chat-bg: #f8fafc;
  --ai-chat-text: #1e293b;
}

Το session ID αποθηκεύεται στο localStorage και το history token στο sessionStorage. Με storeTranscript: true αποθηκεύεται και το κείμενο της συνομιλίας στο localStorage. Κρατήστε το false αν δεν έχετε αποφασίσει ότι η αποθήκευση συνομιλιών καλύπτει τις απαιτήσεις απορρήτου σας.

ΤΕΧΝΙΚΟ ΣΥΜΒΟΛΑΙΟ

Τι στέλνει και τι περιμένει το widget

Το πρώτο μήνυμα δεν έχει history token. Στα επόμενα requests το widget στέλνει το historyAccessToken ως header αν το backend το επέστρεψε στην προηγούμενη απάντηση.

Request προς /chat
POST /chat
Content-Type: application/json
X-Chat-History-Token: <μόνο αν έχει δοθεί από το backend>

{
  "sessionId": "uuid-v4",
  "message": "Γεια σας",
  "channel": "chat"
}
Response από /chat
{
  "sessionId": "uuid-v4",
  "text": "Γεια σας!",
  "channel": "chat",
  "historyAccessToken": "opaque-token (προαιρετικό)"
}

Το text πρέπει να είναι string. Γίνεται δεκτό και array με την απάντηση ως πρώτο στοιχείο. Για σφάλμα επιστρέψτε κατάλληλο HTTP status και ασφαλές JSON {"message":"..."}. Μην επιστρέφετε εσωτερικές λεπτομέρειες που θα εμφανιστούν στον επισκέπτη.

ΠΡΙΝ ΤΗΝ ΠΑΡΑΔΟΣΗ

Ελέγξτε ότι λειτουργεί

  • Το κουμπί και το panel εμφανίζονται σωστά σε desktop και κινητό.
  • Το πρώτο και το δεύτερο μήνυμα παίρνουν απάντηση· αν το backend επέστρεψε history token, το δεύτερο request το προωθεί.
  • Ο server εφαρμόζει validation, timeout και rate limit. Δεν εκθέτει API keys στον browser.
  • Η πολιτική CSP επιτρέπει τα CSS/JS assets και το connect-src προς το proxy ή το backend.
  • Τα assets φορτώνονται μέσω HTTPS και μόνο μία φορά ανά σελίδα.
Θέλετε να δείτε το τελικό αποτέλεσμα;

Το chatbot αυτής της σελίδας χρησιμοποιεί ακριβώς την ενσωμάτωση που περιγράφεται παραπάνω.