diff --git a/public/index.html b/public/index.html
index 6d1e0d8..86a73c8 100644
--- a/public/index.html
+++ b/public/index.html
@@ -157,31 +157,40 @@
3 Hours
Quick fixes and small automation improvements.
$450
- Choose Plan
+
+
5 Hours
Ideal for mid-level integrations and custom workflows.
$675
-
Choose Plan
+
10 Hours
Perfect for large projects and advanced automation.
$1.200
-
Choose Plan
+
-
ODOO & N8N Bundle
-
Perfect for taking conrtol over your company automation installation.
-
$395 per Year
-
Choose Plan
+
N8N Installation and Maintainance
+
We install N8N on your Container and maintain it for one year.
+
$75 per Year
+
diff --git a/public/widget/widget.js b/public/widget/widget.js
index d958395..571bd37 100644
--- a/public/widget/widget.js
+++ b/public/widget/widget.js
@@ -1,11 +1,10 @@
document.addEventListener('DOMContentLoaded', async () => {
try {
- let id = window.location.hostname || "localhost";
- console.log("Detected domain ID:", id);
-
+ const id = window.location.hostname || "localhost";
+ console.log("Detected domain ID:", id);
const configUrl = `http://localhost:8000/widget/custom/${id}.json`;
- console.log(configUrl)
+ console.log(configUrl);
const response = await fetch(configUrl);
if (!response.ok) throw new Error(`Config not found at ${configUrl}`);
@@ -17,10 +16,10 @@ document.addEventListener('DOMContentLoaded', async () => {
return;
}
- // Step 3: Inject HTML into page
+ // Inject HTML
document.body.insertAdjacentHTML('beforeend', widgetHTML);
- // Step 4: Select DOM elements
+ // DOM references
const chatToggle = document.getElementById('cw-chatToggle');
const chatWidget = document.getElementById('cw-chatWidget');
const chatForm = document.getElementById('cw-chatForm');
@@ -31,7 +30,7 @@ document.addEventListener('DOMContentLoaded', async () => {
const sessionId = crypto.randomUUID();
let chatOpened = false;
- // Step 5: Utility to append message
+ // Append a message to the chat
function appendMessage(text, sender) {
const msg = document.createElement('div');
msg.classList.add('cw-message', sender === 'user' ? 'user' : 'bot');
@@ -40,24 +39,11 @@ document.addEventListener('DOMContentLoaded', async () => {
chatMessages.scrollTop = chatMessages.scrollHeight;
}
- // Step 6: Toggle chat visibility
- chatToggle.addEventListener('click', () => {
- const isVisible = chatWidget.style.display === 'block';
- chatWidget.style.display = isVisible ? 'none' : 'block';
-
- if (!isVisible && !chatOpened) {
- appendMessage(preamble, 'bot');
- chatOpened = true;
- }
- });
-
- // Step 7: Handle form submission
- chatForm.addEventListener('submit', async (e) => {
- e.preventDefault();
- const input = chatInput.value.trim();
- if (!input) return;
-
- appendMessage(input, 'user');
+ // Centralized function to send a message
+ async function sendMessageToBot(messageText) {
+ console.log(messageText)
+ chatWidget.style.display = 'block';
+ appendMessage(messageText, 'user');
chatInput.value = '';
chatInput.focus();
@@ -68,10 +54,10 @@ document.addEventListener('DOMContentLoaded', async () => {
body: JSON.stringify({
action: 'sendMessage',
sessionId,
- chatInput: input
+ chatInput: messageText
})
});
- console.log(res)
+
const data = await res.json();
if (data.status) {
@@ -90,52 +76,34 @@ document.addEventListener('DOMContentLoaded', async () => {
appendMessage('Fehler beim Verbinden mit dem Server. Bitte versuchen Sie es später erneut.', 'bot');
console.error(error);
}
- });
-
- // Step 8: Attach pricing buttons if they exist
- function handleBuyClick(buttonId, message) {
- const btn = document.getElementById(buttonId);
- if (!btn) return;
-
- btn.addEventListener('click', (e) => {
- e.preventDefault();
-
- if (chatWidget.style.display !== 'block') {
- chatWidget.style.display = 'block';
- if (!chatOpened) {
- appendMessage(preamble, 'bot');
- chatOpened = true;
- }
- }
-
- appendMessage(message, 'user');
-
- fetch(api, {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({
- action: 'sendMessage',
- sessionId,
- chatInput: message
- })
- })
- .then(res => res.json())
- .then(data => {
- appendMessage(data.output, 'bot');
- })
- .catch(err => {
- appendMessage('Fehler beim Verbinden mit dem Server. Bitte versuchen Sie es später erneut.', 'bot');
- console.error(err);
- });
- });
}
- handleBuyClick('buy-3h', 'I want to buy the 3 Hours pack for $450.');
- handleBuyClick('buy-5h', 'I want to buy the 5 Hours pack for $675.');
- handleBuyClick('buy-10h', 'I want to buy the 10 Hours pack for $1200.');
- handleBuyClick('buy-bundle', 'I want to buy the ODOO and N8N bundle for $395 per year.');
+ window.sendMessageToBot = sendMessageToBot;
+ // Toggle chat widget
+ chatToggle.addEventListener('click', () => {
+ const isVisible = chatWidget.style.display === 'block';
+ chatWidget.style.display = isVisible ? 'none' : 'block';
+
+ if (!isVisible && !chatOpened) {
+ appendMessage(preamble, 'bot');
+ chatOpened = true;
+ }
+ });
+
+ // Form submission
+ chatForm.addEventListener('submit', (e) => {
+ e.preventDefault();
+ const input = chatInput.value.trim();
+ if (input) {
+ sendMessageToBot(input);
+ }
+ });
+
+ // Attach buy button listeners
+
} catch (err) {
console.error('Failed to initialize chat widget:', err);
}
+
});