+
Evie can make mistakes. Please double-check responses.
link_off
@@ -370,12 +426,15 @@ toggleFeedback(thumbsUp, thumbsDown, feedback, interactionId) {
console.error('JWT token is not available');
return;
}
+
+ const selectedLanguage = this.languageSelect.value;
+
console.log('Sending message to backend');
this.socket.emit('user_message', {
tenantId: this.tenantId,
token: this.jwtToken,
message,
- language: this.language,
+ language: selectedLanguage,
timezone: this.userTimezone
});
this.setStatusMessage('Processing started ...')
diff --git a/integrations/Wordpress/eveai-chat-widget/js/eveai-sdk.js b/integrations/Wordpress/eveai-chat-widget/js/eveai-sdk.js
index 9e53d41..1e9ccb8 100644
--- a/integrations/Wordpress/eveai-chat-widget/js/eveai-sdk.js
+++ b/integrations/Wordpress/eveai-chat-widget/js/eveai-sdk.js
@@ -1,12 +1,13 @@
// static/js/eveai-sdk.js
class EveAI {
- constructor(tenantId, apiKey, domain, language) {
+ constructor(tenantId, apiKey, domain, language, languages) {
this.tenantId = tenantId;
this.apiKey = apiKey;
this.domain = domain;
this.language = language;
+ this.languages = languages;
- console.log('EveAI constructor:', { tenantId, apiKey, domain });
+ console.log('EveAI constructor:', { tenantId, apiKey, domain, language, languages });
}
initializeChat(containerId) {
@@ -19,6 +20,7 @@ class EveAI {
chatWidget.setAttribute('api-key', this.apiKey);
chatWidget.setAttribute('domain', this.domain);
chatWidget.setAttribute('language', this.language);
+ chatWidget.setAttribute('languages', this.languages);
});
} else {
console.error('Container not found');
diff --git a/integrations/Wordpress/eveai-chat-widget/readme.txt b/integrations/Wordpress/eveai-chat-widget/readme.txt
index 4671f11..c79d911 100644
--- a/integrations/Wordpress/eveai-chat-widget/readme.txt
+++ b/integrations/Wordpress/eveai-chat-widget/readme.txt
@@ -3,7 +3,7 @@ Contributors: Josako
Tags: chat, ai
Requires at least: 5.0
Tested up to: 5.9
-Stable tag: 1.2
+Stable tag: 1.3.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -27,17 +27,32 @@ Contact your EveAI service provider to obtain your Tenant ID, API Key, and Domai
== Changelog ==
-= 1.2 =
+= 1.3.3 - =
+* ensure all attributes (also height and supportedLanguages) are set before initializing the socket
+* Bugfixing
+
+= 1.3.2 =
+* Correct supportedLanguages to be an Array
+
+= 1.3.1 =
+* Correct evie domain
+
+= 1.3.0 =
+* Enable user to select language
+* Make Question area multi-line
+* Enable height to be set in shortcode
+
+= 1.2.0 =
* Create shortcodes
-= 1.1 =
+= 1.1.0 =
* Added configurable settings
* Improved security with server-side API key handling
-= 1.0 =
+= 1.0.0 =
* Initial release
== Upgrade Notice ==
-= 1.1 =
+= 1.1.0 =
This version adds configurable settings and improves security. Please update your EveAI credentials after upgrading.
\ No newline at end of file
diff --git a/nginx/static/assets/css/eveai.css b/nginx/static/assets/css/eveai.css
index 3be6e4f..0bd24f0 100644
--- a/nginx/static/assets/css/eveai.css
+++ b/nginx/static/assets/css/eveai.css
@@ -8,6 +8,405 @@
--bs-danger: #9c2d66;
}
+/* Overriding the background gradient and text colors */
+.bg-gradient-success {
+ background: linear-gradient(90deg, var(--bs-primary) 0%, var(--bs-secondary) 100%);
+}
+
+.shadow-success {
+ box-shadow: 0px 4px 20px 0px rgba(118, 89, 154, 0.5); /* Adjusting shadow color */
+}
+
+.border-radius-lg {
+ border-radius: 1rem; /* Assuming you want to keep the large border-radius */
+}
+
+.text-white {
+ color: #f8e1a9 !important; /* Adjust text to the EveAI success color */
+}
+
+.text-sm {
+ font-size: 0.875rem; /* Adjust size if needed, keeping original */
+}
+
+/* Override for the link with text-success and text-gradient classes */
+.text-success {
+ color: var(--bs-primary) !important; /* Use EveAI primary color */
+}
+
+.text-gradient {
+ background-image: linear-gradient(90deg, var(--bs-primary), var(--bs-secondary));
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+.font-weight-bold {
+ font-weight: 700; /* Retain bold text */
+}
+
+/* Navbar customization */
+.navbar-light .navbar-brand {
+ color: var(--bs-primary) !important; /* Primary color for the brand text */
+}
+
+.navbar-light .navbar-nav .nav-link {
+ color: var(--bs-secondary) !important; /* Secondary color for the nav links */
+}
+
+/* Ensure consistent alignment for all dropdown icons */
+.navbar-nav .nav-link i.material-icons {
+ font-size: 24px; /* Ensures all icons are the same size */
+ vertical-align: middle; /* Align icons vertically with text */
+ margin-right: 8px; /* Space between icon and text */
+ line-height: 1; /* Prevents misalignment due to line-height issues */
+}
+
+.navbar-nav .nav-link {
+ display: flex;
+ align-items: center; /* Aligns icon and text vertically */
+ padding: 0; /* Remove any additional padding */
+}
+
+/* Adjust the size and spacing of the material-symbols-outlined icons */
+.navbar-nav .nav-link .material-symbols-outlined {
+ font-size: 20px; /* Adjust the icon size */
+ vertical-align: middle; /* Ensure vertical alignment with text */
+ margin-right: 8px; /* Add space between the icon and the text */
+ line-height: 1; /* Maintain alignment */
+}
+
+.navbar-light .navbar-nav .nav-link:hover,
+.navbar-light .navbar-nav .nav-link:focus {
+ color: var(--bs-primary) !important; /* Primary color on hover/focus */
+}
+
+.bg-white {
+ background-color: var(--bs-light) !important; /* Adjust the background to a custom light color if needed */
+}
+
+.btn.bg-gradient-primary {
+ background: linear-gradient(90deg, var(--bs-primary) 0%, var(--bs-secondary) 100%);
+ color: var(--bs-white) !important; /* Ensures text is readable on the gradient */
+ border: none;
+}
+
+.navbar-toggler .navbar-toggler-bar {
+ background-color: var(--bs-secondary); /* Adjusts color of the toggler bars */
+}
+
+.dropdown-menu {
+ background-color: var(--bs-light); /* Light background for dropdown */
+ border-radius: 0.375rem; /* Retains rounded corners */
+}
+
+.dropdown-item {
+ color: var(--bs-primary) !important; /* Primary color for dropdown items */
+}
+
+.dropdown-item:hover,
+.dropdown-item:focus {
+ background-color: var(--bs-secondary) !important; /* Secondary color for hover/focus background */
+ color: var(--bs-white) !important; /* White text on hover/focus */
+}
+
+.btn.bg-gradient-primary {
+ background: linear-gradient(90deg, var(--bs-primary) 0%, var(--bs-secondary) 100%);
+ color: var(--bs-white) !important;
+}
+
+/* Page header customization */
+.page-header {
+ background-size: cover;
+ background-position: center;
+ min-height: 25vh;
+ position: relative;
+}
+
+.page-header .mask {
+ background: linear-gradient(90deg, var(--bs-primary), var(--bs-secondary)) !important; /* Gradient overlay */
+ opacity: 0.8; /* Adjust opacity to let the background image show through */
+}
+
+.page-header h1 {
+ color: var(--bs-success) !important; /* Use the success color for the header text */
+ margin-top: -1.5rem; /* Adjusted margin to align text properly */
+}
+
+.page-header p.lead {
+ color: var(--bs-info) !important; /* Use the info color for the lead text */
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+}
+
+/* Ensure consistent padding */
+.page-header .container {
+ padding-top: 3rem;
+ padding-bottom: 3rem;
+}
+
+.page-header .col-lg-7 {
+ margin-top: -5rem; /* Adjust margin to improve vertical alignment */
+}
+
+/* Card and table customization */
+.card {
+ border: 1px solid var(--bs-secondary) !important; /* Secondary color for the card border */
+ border-radius: 0.5rem; /* Keeps the border-radius consistent */
+ box-shadow: 0 4px 8px rgba(118, 89, 154, 0.2); /* Soft shadow with primary color */
+}
+
+.table {
+ color: var(--bs-body-color) !important; /* Ensure the text color matches the theme */
+ background-color: var(--bs-light) !important; /* Light background color */
+ border-collapse: separate !important; /* Ensure borders do not collapse */
+ border-spacing: 0; /* Remove spacing between table cells */
+ border-radius: 0.375rem; /* Rounded corners */
+ overflow: hidden; /* Ensure the rounded corners apply to the entire table */
+ border: 1px solid var(--bs-secondary) !important; /* Apply border with secondary color */
+}
+
+.table thead th {
+ color: var(--bs-info) !important; /* Info color for the table headers */
+ background-color: var(--bs-light) !important; /* Background for table headers */
+ border-bottom: 1px solid var(--bs-secondary) !important; /* Secondary color for the header bottom border */
+}
+
+/* Ensures corners are colored */
+.table thead th:first-child {
+ border-top-left-radius: 0.375rem !important;
+}
+
+.table thead th:last-child {
+ border-top-right-radius: 0.375rem !important;
+}
+
+.table tbody tr:last-child td:first-child {
+ border-bottom-left-radius: 0.375rem !important;
+}
+
+.table tbody tr:last-child td:last-child {
+ border-bottom-right-radius: 0.375rem !important;
+}
+
+.table tbody tr {
+ border-top: 1px solid var(--bs-gray-300) !important; /* Subtle border between rows */
+}
+
+.table tbody tr:hover {
+ background-color: var(--bs-secondary) !important; /* Secondary color on row hover */
+ color: var(--bs-white) !important; /* White text on hover */
+}
+
+.table tbody tr:hover a,
+.table tbody tr:hover p,
+.table tbody tr:hover td {
+ color: var(--bs-white) !important; /* Ensure all text, links, and paragraphs change to white */
+}
+
+.table tbody tr:hover .text-xs {
+ color: var(--bs-white) !important; /* Ensure the smaller text also changes to white */
+}
+
+.table .text-xs {
+ color: var(--bs-body-color) !important; /* Consistent text color in the table cells */
+}
+
+input[type="radio"] {
+ accent-color: var(--bs-primary); /* Primary color for radio buttons */
+}
+
+/* Buttons customization */
+.btn-primary {
+ background-color: var(--bs-primary) !important;
+ border-color: var(--bs-primary) !important;
+ color: var(--bs-white) !important;
+}
+
+.btn-secondary {
+ background-color: var(--bs-secondary) !important;
+ border-color: var(--bs-secondary) !important;
+ color: var(--bs-white) !important;
+}
+
+/* Adjust the form group margin */
+.form-group {
+ margin-top: 1.5rem; /* Adjust for better spacing */
+}
+
+/* Card footer customization */
+.card-footer {
+ /*background-color: var(--bs-light) !important; !* Light background for the footer *!*/
+ padding-top: 1rem; /* Adjust padding for consistent spacing */
+ padding-bottom: 1rem; /* Adjust padding for consistent spacing */
+ /*border-top: 1px solid var(--bs-secondary) !important; !* Border with secondary color *!*/
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+}
+
+.card-footer .pagination {
+ padding-left: 0 !important; /* Remove extra padding */
+ padding-right: 0 !important; /* Remove extra padding */
+}
+
+/* Pagination customization */
+.pagination {
+ display: flex;
+ justify-content: center;
+ padding-left: 0;
+ list-style: none;
+ border-radius: 0.375rem;
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ padding-left: 0 !important; /* Add some padding inside the pagination */
+ padding-right: 0 !important; /* Add some padding inside the pagination */
+}
+
+.pagination .page-item {
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+}
+
+.page-item.disabled .page-link {
+ color: var(--bs-gray-500) !important; /* Disabled state color */
+ background-color: var(--bs-gray-200) !important; /* Disabled state background */
+ border-color: var(--bs-gray-300) !important; /* Disabled state border */
+}
+
+.page-item.active .page-link {
+ z-index: 1;
+ color: var(--bs-white) !important; /* Active page color */
+ background-color: var(--bs-primary) !important; /* Active page background */
+ border-color: var(--bs-primary) !important; /* Active page border */
+}
+
+.page-item .page-link {
+ border-radius: 50% !important; /* Ensure circular buttons */
+ margin: 0 5px; /* Add some spacing between buttons */
+}
+
+.page-link {
+ color: var(--bs-primary) !important; /* Default link color */
+ background-color: var(--bs-light) !important; /* Light background for links */
+ border: 1px solid var(--bs-secondary) !important; /* Border with secondary color */
+ border-radius: 0.375rem; /* Rounded corners */
+ padding: 0.5rem 0.75rem;
+ margin: 0 0.25rem; /* Adjust margin for spacing */
+}
+
+.page-link:hover {
+ color: var(--bs-white) !important; /* Hover state text color */
+ background-color: var(--bs-secondary) !important; /* Hover state background */
+ border-color: var(--bs-secondary) !important; /* Hover state border */
+}
+
+.page-link i.fa {
+ margin-right: 0.25rem; /* Add spacing between icon and text */
+}
+
+/* Align text centrally */
+.text-center {
+ text-align: center !important;
+}
+
+/* Form and Input Fields */
+.form-group label.form-label {
+ color: var(--bs-secondary) !important; /* Secondary color for labels */
+ font-weight: 500; /* Slightly bolder labels */
+}
+
+.form-group:last-of-type {
+ margin-bottom: 2rem; /* Adjust this value to control spacing */
+}
+
+.form-control {
+ background-color: var(--bs-light) !important; /* Light background for input fields */
+ border-color: var(--bs-secondary) !important; /* Secondary color for borders */
+ color: var(--bs-body-color) !important; /* Text color consistent with the theme */
+}
+
+.form-control:disabled {
+ background-color: var(--bs-gray-100) !important; /* Gray background for disabled fields */
+ color: var(--bs-gray-600) !important; /* Dimmed text color for disabled fields */
+}
+
+.form-check-input:checked {
+ background-color: var(--bs-primary) !important; /* Primary color for checked checkboxes */
+ border-color: var(--bs-primary) !important; /* Primary color for checkbox border */
+}
+
+.form-check-label {
+ color: var(--bs-body-color) !important; /* Consistent text color for check labels */
+}
+
+/* Tabs Navigation */
+.nav-pills .nav-link {
+ color: var(--bs-primary) !important; /* Primary color for inactive tab text */
+ border-radius: 0.375rem !important; /* Rounded corners for tabs */
+ transition: background-color 0.3s ease, color 0.3s ease; /* Smooth transitions */
+}
+
+.nav-pills .nav-link.active {
+ background-color: var(--bs-primary) !important; /* Primary background for active tab */
+ color: var(--bs-white) !important; /* White text for active tab */
+}
+
+.nav-pills .nav-link:hover {
+ background-color: var(--bs-secondary) !important; /* Secondary background on hover */
+ color: var(--bs-white) !important; /* White text on hover */
+}
+
+/* Tabs Content */
+.tab-pane {
+ padding-top: 1rem; /* Consistent padding inside tabs */
+}
+
+.moving-tab {
+ background-color: var(--bs-primary) !important; /* Primary color for the moving tab indicator */
+}
+
+/* Buttons */
+
+.btn-primary:hover {
+ background-color: var(--bs-secondary) !important;
+ border-color: var(--bs-secondary) !important;
+}
+
+#copy-message {
+ color: var(--bs-success) !important; /* Success color for the copy message */
+}
+
+/* Danger Button Styling */
+.btn-danger {
+ background-color: var(--bs-danger) !important; /* Use the danger color from the EveAI theme */
+ border-color: var(--bs-danger) !important;
+ color: var(--bs-white) !important; /* Ensure text is white for readability */
+ transition: background-color 0.3s ease, color 0.3s ease; /* Smooth transition on hover */
+}
+
+.btn-danger:hover {
+ background-color: darken(var(--bs-danger), 10%) !important; /* Darken the background on hover */
+ border-color: darken(var(--bs-danger), 10%) !important; /* Darken the border on hover */
+}
+
+/* Success Alert Styling */
+.alert-success {
+ background-color: var(--bs-success) !important; /* EveAI success background color */
+ color: var(--bs-dark) !important; /* Dark color for the text for better readability */
+ border-color: var(--bs-success) !important; /* Matching border color */
+ border-radius: 0.375rem; /* Rounded corners for the alert box */
+ padding: 1rem; /* Consistent padding */
+ box-shadow: 0px 4px 10px rgba(118, 89, 154, 0.2); /* Soft shadow for some depth */
+}
+
+.alert-success .alert-heading {
+ color: var(--bs-dark) !important; /* Ensure the heading stands out */
+ font-weight: 600; /* Slightly bolder heading */
+}
+
+.alert-success p {
+ margin-bottom: 0; /* Remove extra margin from paragraphs inside alerts */
+}
+
.form-control {
border: 1px solid #d2d6da;
padding: 0.625rem 0.75rem;