From c4c1f3eb63e178f40621614a1a56bd5a20f58492 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Tue, 7 Oct 2025 18:43:54 +0530 Subject: [PATCH 01/14] chore: Adjust debounce timeouts for conversation stats fetch (#12609) --- app/javascript/dashboard/store/modules/conversationStats.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/dashboard/store/modules/conversationStats.js b/app/javascript/dashboard/store/modules/conversationStats.js index 917781bbf..353c1e59a 100644 --- a/app/javascript/dashboard/store/modules/conversationStats.js +++ b/app/javascript/dashboard/store/modules/conversationStats.js @@ -25,8 +25,8 @@ const fetchMetaData = async (commit, params) => { } }; -const debouncedFetchMetaData = debounce(fetchMetaData, 500, false, 1000); -const longDebouncedFetchMetaData = debounce(fetchMetaData, 500, false, 5000); +const debouncedFetchMetaData = debounce(fetchMetaData, 500, false, 1500); +const longDebouncedFetchMetaData = debounce(fetchMetaData, 1000, false, 8000); const superLongDebouncedFetchMetaData = debounce( fetchMetaData, 1500, @@ -36,7 +36,7 @@ const superLongDebouncedFetchMetaData = debounce( export const actions = { get: async ({ commit, state: $state }, params) => { - if ($state.allCount > 10000) { + if ($state.allCount > 5000) { superLongDebouncedFetchMetaData(commit, params); } else if ($state.allCount > 100) { longDebouncedFetchMetaData(commit, params); From 4b2ebb8877bd050b61c25032b6c3780974c13410 Mon Sep 17 00:00:00 2001 From: Chatwoot Bot <92152627+chatwoot-bot@users.noreply.github.com> Date: Tue, 7 Oct 2025 06:47:38 -0700 Subject: [PATCH 02/14] chore: Update translations (#12598) --- .../dashboard/i18n/locale/am/inboxMgmt.json | 6 +- .../i18n/locale/am/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/am/settings.json | 1 + .../dashboard/i18n/locale/ar/inboxMgmt.json | 6 +- .../i18n/locale/ar/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ar/settings.json | 1 + .../dashboard/i18n/locale/az/inboxMgmt.json | 6 +- .../i18n/locale/az/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/az/settings.json | 1 + .../dashboard/i18n/locale/bg/inboxMgmt.json | 6 +- .../i18n/locale/bg/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/bg/settings.json | 1 + .../dashboard/i18n/locale/ca/inboxMgmt.json | 6 +- .../i18n/locale/ca/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ca/settings.json | 1 + .../dashboard/i18n/locale/cs/inboxMgmt.json | 6 +- .../i18n/locale/cs/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/cs/settings.json | 1 + .../dashboard/i18n/locale/da/inboxMgmt.json | 6 +- .../i18n/locale/da/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/da/settings.json | 1 + .../dashboard/i18n/locale/de/inboxMgmt.json | 6 +- .../i18n/locale/de/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/de/settings.json | 1 + .../dashboard/i18n/locale/el/inboxMgmt.json | 6 +- .../i18n/locale/el/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/el/settings.json | 1 + .../dashboard/i18n/locale/es/inboxMgmt.json | 6 +- .../i18n/locale/es/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/es/settings.json | 1 + .../dashboard/i18n/locale/fa/inboxMgmt.json | 6 +- .../i18n/locale/fa/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/fa/settings.json | 1 + .../dashboard/i18n/locale/fi/inboxMgmt.json | 6 +- .../i18n/locale/fi/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/fi/settings.json | 1 + .../dashboard/i18n/locale/fr/inboxMgmt.json | 6 +- .../i18n/locale/fr/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/fr/settings.json | 1 + .../dashboard/i18n/locale/he/inboxMgmt.json | 6 +- .../i18n/locale/he/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/he/settings.json | 1 + .../dashboard/i18n/locale/hi/inboxMgmt.json | 6 +- .../i18n/locale/hi/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/hi/settings.json | 1 + .../dashboard/i18n/locale/hr/inboxMgmt.json | 6 +- .../i18n/locale/hr/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/hr/settings.json | 1 + .../dashboard/i18n/locale/hu/inboxMgmt.json | 6 +- .../i18n/locale/hu/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/hu/settings.json | 1 + .../dashboard/i18n/locale/hy/inboxMgmt.json | 6 +- .../i18n/locale/hy/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/hy/settings.json | 1 + .../dashboard/i18n/locale/id/inboxMgmt.json | 6 +- .../i18n/locale/id/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/id/settings.json | 1 + .../dashboard/i18n/locale/is/inboxMgmt.json | 6 +- .../i18n/locale/is/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/is/settings.json | 1 + .../dashboard/i18n/locale/it/general.json | 2 +- .../dashboard/i18n/locale/it/inboxMgmt.json | 6 +- .../i18n/locale/it/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/it/settings.json | 1 + .../dashboard/i18n/locale/ja/inboxMgmt.json | 6 +- .../i18n/locale/ja/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ja/settings.json | 1 + .../dashboard/i18n/locale/ka/inboxMgmt.json | 6 +- .../i18n/locale/ka/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ka/settings.json | 1 + .../dashboard/i18n/locale/ko/inboxMgmt.json | 6 +- .../i18n/locale/ko/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ko/settings.json | 1 + .../dashboard/i18n/locale/lt/inboxMgmt.json | 6 +- .../i18n/locale/lt/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/lt/settings.json | 1 + .../dashboard/i18n/locale/lv/inboxMgmt.json | 6 +- .../i18n/locale/lv/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/lv/settings.json | 1 + .../dashboard/i18n/locale/ml/inboxMgmt.json | 6 +- .../i18n/locale/ml/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ml/settings.json | 1 + .../dashboard/i18n/locale/ms/inboxMgmt.json | 6 +- .../i18n/locale/ms/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ms/settings.json | 1 + .../dashboard/i18n/locale/ne/inboxMgmt.json | 6 +- .../i18n/locale/ne/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ne/settings.json | 1 + .../dashboard/i18n/locale/nl/inboxMgmt.json | 6 +- .../i18n/locale/nl/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/nl/settings.json | 1 + .../dashboard/i18n/locale/no/inboxMgmt.json | 6 +- .../i18n/locale/no/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/no/settings.json | 1 + .../dashboard/i18n/locale/pl/inboxMgmt.json | 6 +- .../i18n/locale/pl/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/pl/settings.json | 1 + .../dashboard/i18n/locale/pt/inboxMgmt.json | 6 +- .../i18n/locale/pt/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/pt/settings.json | 1 + .../i18n/locale/pt_BR/inboxMgmt.json | 6 +- .../i18n/locale/pt_BR/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/pt_BR/settings.json | 1 + .../dashboard/i18n/locale/ro/inboxMgmt.json | 6 +- .../i18n/locale/ro/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ro/settings.json | 1 + .../dashboard/i18n/locale/ru/inboxMgmt.json | 6 +- .../i18n/locale/ru/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ru/settings.json | 1 + .../dashboard/i18n/locale/sh/inboxMgmt.json | 6 +- .../i18n/locale/sh/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/sh/settings.json | 1 + .../dashboard/i18n/locale/sk/inboxMgmt.json | 6 +- .../i18n/locale/sk/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/sk/settings.json | 1 + .../dashboard/i18n/locale/sl/inboxMgmt.json | 6 +- .../i18n/locale/sl/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/sl/settings.json | 1 + .../dashboard/i18n/locale/sq/inboxMgmt.json | 6 +- .../i18n/locale/sq/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/sq/settings.json | 1 + .../dashboard/i18n/locale/sr/inboxMgmt.json | 6 +- .../i18n/locale/sr/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/sr/settings.json | 1 + .../dashboard/i18n/locale/sv/inboxMgmt.json | 6 +- .../i18n/locale/sv/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/sv/settings.json | 1 + .../dashboard/i18n/locale/ta/inboxMgmt.json | 6 +- .../i18n/locale/ta/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ta/settings.json | 1 + .../dashboard/i18n/locale/th/inboxMgmt.json | 6 +- .../i18n/locale/th/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/th/settings.json | 1 + .../dashboard/i18n/locale/tl/inboxMgmt.json | 6 +- .../i18n/locale/tl/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/tl/settings.json | 1 + .../dashboard/i18n/locale/tr/inboxMgmt.json | 6 +- .../i18n/locale/tr/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/tr/settings.json | 1 + .../dashboard/i18n/locale/uk/inboxMgmt.json | 6 +- .../i18n/locale/uk/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/uk/settings.json | 1 + .../dashboard/i18n/locale/ur/inboxMgmt.json | 6 +- .../i18n/locale/ur/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ur/settings.json | 1 + .../i18n/locale/ur_IN/inboxMgmt.json | 6 +- .../i18n/locale/ur_IN/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/ur_IN/settings.json | 1 + .../dashboard/i18n/locale/vi/inboxMgmt.json | 6 +- .../i18n/locale/vi/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/vi/settings.json | 1 + .../i18n/locale/zh_CN/inboxMgmt.json | 6 +- .../i18n/locale/zh_CN/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/zh_CN/settings.json | 1 + .../i18n/locale/zh_TW/inboxMgmt.json | 6 +- .../i18n/locale/zh_TW/integrations.json | 109 ++++++++++++++++++ .../dashboard/i18n/locale/zh_TW/settings.json | 1 + config/locales/am.yml | 4 +- config/locales/ar.yml | 4 +- config/locales/az.yml | 4 +- config/locales/bg.yml | 4 +- config/locales/ca.yml | 4 +- config/locales/cs.yml | 4 +- config/locales/da.yml | 4 +- config/locales/de.yml | 4 +- config/locales/el.yml | 4 +- config/locales/es.yml | 4 +- config/locales/fa.yml | 4 +- config/locales/fi.yml | 4 +- config/locales/fr.yml | 4 +- config/locales/he.yml | 4 +- config/locales/hi.yml | 4 +- config/locales/hr.yml | 4 +- config/locales/hu.yml | 4 +- config/locales/hy.yml | 4 +- config/locales/id.yml | 4 +- config/locales/is.yml | 4 +- config/locales/it.yml | 4 +- config/locales/ja.yml | 4 +- config/locales/ka.yml | 4 +- config/locales/ko.yml | 4 +- config/locales/lt.yml | 4 +- config/locales/lv.yml | 4 +- config/locales/ml.yml | 4 +- config/locales/ms.yml | 4 +- config/locales/ne.yml | 4 +- config/locales/nl.yml | 4 +- config/locales/no.yml | 4 +- config/locales/pl.yml | 4 +- config/locales/pt.yml | 4 +- config/locales/pt_BR.yml | 4 +- config/locales/ro.yml | 4 +- config/locales/ru.yml | 4 +- config/locales/sh.yml | 4 +- config/locales/sk.yml | 4 +- config/locales/sl.yml | 4 +- config/locales/sq.yml | 4 +- config/locales/sr.yml | 4 +- config/locales/sv.yml | 4 +- config/locales/ta.yml | 4 +- config/locales/th.yml | 4 +- config/locales/tl.yml | 4 +- config/locales/tr.yml | 4 +- config/locales/uk.yml | 4 +- config/locales/ur.yml | 4 +- config/locales/ur_IN.yml | 4 +- config/locales/vi.yml | 4 +- config/locales/zh_CN.yml | 4 +- config/locales/zh_TW.yml | 4 +- 209 files changed, 6085 insertions(+), 157 deletions(-) diff --git a/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json index 60038253c..87fe57564 100644 --- a/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/am/integrations.json b/app/javascript/dashboard/i18n/locale/am/integrations.json index c59ec66df..6c1c9e484 100644 --- a/app/javascript/dashboard/i18n/locale/am/integrations.json +++ b/app/javascript/dashboard/i18n/locale/am/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/am/settings.json b/app/javascript/dashboard/i18n/locale/am/settings.json index 9ddc3b805..812b0cd8b 100644 --- a/app/javascript/dashboard/i18n/locale/am/settings.json +++ b/app/javascript/dashboard/i18n/locale/am/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json index 1314ed561..61bfaa199 100644 --- a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ar/integrations.json b/app/javascript/dashboard/i18n/locale/ar/integrations.json index ca7e7c553..f5cc4427b 100644 --- a/app/javascript/dashboard/i18n/locale/ar/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ar/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "نعم، احذف", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "الوصف", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "لا شيء", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "مفتاح API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "كلمة المرور", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "النوع" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "العدد", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "مطلوب" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ar/settings.json b/app/javascript/dashboard/i18n/locale/ar/settings.json index 1a24cf67f..22b9cb254 100644 --- a/app/javascript/dashboard/i18n/locale/ar/settings.json +++ b/app/javascript/dashboard/i18n/locale/ar/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "الرئيسية", "AGENTS": "وكيل الدعم", "AGENT_BOTS": "الروبوتات", diff --git a/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json index 60038253c..87fe57564 100644 --- a/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/az/integrations.json b/app/javascript/dashboard/i18n/locale/az/integrations.json index c59ec66df..6c1c9e484 100644 --- a/app/javascript/dashboard/i18n/locale/az/integrations.json +++ b/app/javascript/dashboard/i18n/locale/az/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/az/settings.json b/app/javascript/dashboard/i18n/locale/az/settings.json index 9ddc3b805..812b0cd8b 100644 --- a/app/javascript/dashboard/i18n/locale/az/settings.json +++ b/app/javascript/dashboard/i18n/locale/az/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json index e540e8c1e..46f61010e 100644 --- a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/bg/integrations.json b/app/javascript/dashboard/i18n/locale/bg/integrations.json index 0ebfc0fc8..1d9c9c370 100644 --- a/app/javascript/dashboard/i18n/locale/bg/integrations.json +++ b/app/javascript/dashboard/i18n/locale/bg/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Описание", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Тип" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/bg/settings.json b/app/javascript/dashboard/i18n/locale/bg/settings.json index 1b7fabeaf..7879190b6 100644 --- a/app/javascript/dashboard/i18n/locale/bg/settings.json +++ b/app/javascript/dashboard/i18n/locale/bg/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Агенти", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json index c8670b02d..30614f2dd 100644 --- a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ca/integrations.json b/app/javascript/dashboard/i18n/locale/ca/integrations.json index 29d1d9546..e354ccc2e 100644 --- a/app/javascript/dashboard/i18n/locale/ca/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ca/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Sí, esborra", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Descripció", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Ningú", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Contrasenya", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tipus" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Número", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Necessari" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ca/settings.json b/app/javascript/dashboard/i18n/locale/ca/settings.json index f843b0b6d..bf9ec5edc 100644 --- a/app/javascript/dashboard/i18n/locale/ca/settings.json +++ b/app/javascript/dashboard/i18n/locale/ca/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Inici", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json index 9bced9936..ac45d9edd 100644 --- a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/cs/integrations.json b/app/javascript/dashboard/i18n/locale/cs/integrations.json index 5480257cc..97744ae27 100644 --- a/app/javascript/dashboard/i18n/locale/cs/integrations.json +++ b/app/javascript/dashboard/i18n/locale/cs/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Nic", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Heslo", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/cs/settings.json b/app/javascript/dashboard/i18n/locale/cs/settings.json index c0a307d56..616e16942 100644 --- a/app/javascript/dashboard/i18n/locale/cs/settings.json +++ b/app/javascript/dashboard/i18n/locale/cs/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Domů", "AGENTS": "Agenti", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json index 03345d326..5fc3eb6e9 100644 --- a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/da/integrations.json b/app/javascript/dashboard/i18n/locale/da/integrations.json index f0ee6e29f..4f5290ba6 100644 --- a/app/javascript/dashboard/i18n/locale/da/integrations.json +++ b/app/javascript/dashboard/i18n/locale/da/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Beskrivelse", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Ingen", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Nøgle" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Adgangskode", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Nummer", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Påkrævet" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/da/settings.json b/app/javascript/dashboard/i18n/locale/da/settings.json index 3c312894d..b2db02ef5 100644 --- a/app/javascript/dashboard/i18n/locale/da/settings.json +++ b/app/javascript/dashboard/i18n/locale/da/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Hjem", "AGENTS": "Agenter", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json index ad1134cb3..1b23f7613 100644 --- a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/de/integrations.json b/app/javascript/dashboard/i18n/locale/de/integrations.json index a8c115ea1..485ab7110 100644 --- a/app/javascript/dashboard/i18n/locale/de/integrations.json +++ b/app/javascript/dashboard/i18n/locale/de/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Ja, löschen", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Beschreibung", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Keine", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API-Schlüssel" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Passwort", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Typ" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Nummer", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Benötigt" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/de/settings.json b/app/javascript/dashboard/i18n/locale/de/settings.json index 5a97adb72..190880321 100644 --- a/app/javascript/dashboard/i18n/locale/de/settings.json +++ b/app/javascript/dashboard/i18n/locale/de/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Hauptseite", "AGENTS": "Agenten", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json index 92b7e5c59..bc15d16ab 100644 --- a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/el/integrations.json b/app/javascript/dashboard/i18n/locale/el/integrations.json index f0e2bf220..a79ab4253 100644 --- a/app/javascript/dashboard/i18n/locale/el/integrations.json +++ b/app/javascript/dashboard/i18n/locale/el/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Περιγραφή", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Κανένα", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "Κλειδί API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Κωδικός", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Τύπος" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Αριθμός", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Υποχρεωτικό" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/el/settings.json b/app/javascript/dashboard/i18n/locale/el/settings.json index a71c447f9..da4c4dec5 100644 --- a/app/javascript/dashboard/i18n/locale/el/settings.json +++ b/app/javascript/dashboard/i18n/locale/el/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Αρχική", "AGENTS": "Πράκτορες", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json index b1aac6d09..a6decf95f 100644 --- a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/es/integrations.json b/app/javascript/dashboard/i18n/locale/es/integrations.json index aa720521d..c81a18d41 100644 --- a/app/javascript/dashboard/i18n/locale/es/integrations.json +++ b/app/javascript/dashboard/i18n/locale/es/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Sí, eliminar", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Descripción", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Ninguna", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "Clave de API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Contraseña", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tipo" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Número", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Requerido" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "Preguntas frecuentes", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/es/settings.json b/app/javascript/dashboard/i18n/locale/es/settings.json index 35be4335c..37a1bfda4 100644 --- a/app/javascript/dashboard/i18n/locale/es/settings.json +++ b/app/javascript/dashboard/i18n/locale/es/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Asistentes", "CAPTAIN_DOCUMENTS": "Documentos", "CAPTAIN_RESPONSES": "Preguntas frecuentes", + "CAPTAIN_TOOLS": "Tools", "HOME": "Inicio", "AGENTS": "Agentes", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json index 3a8e24b35..de1ebdb78 100644 --- a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/fa/integrations.json b/app/javascript/dashboard/i18n/locale/fa/integrations.json index e911eb7e3..18402ea9c 100644 --- a/app/javascript/dashboard/i18n/locale/fa/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fa/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "بله، حذف شود", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "توضیحات", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "هیچکدام", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "رمز عبور", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "نوع" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "شماره", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "ضروری" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/fa/settings.json b/app/javascript/dashboard/i18n/locale/fa/settings.json index 84c1c7455..ae309c5bc 100644 --- a/app/javascript/dashboard/i18n/locale/fa/settings.json +++ b/app/javascript/dashboard/i18n/locale/fa/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "صفحه اصلی", "AGENTS": "ایجنت ها", "AGENT_BOTS": "ربات‌ها", diff --git a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json index 8409f4bab..3d352511e 100644 --- a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/fi/integrations.json b/app/javascript/dashboard/i18n/locale/fi/integrations.json index c49e18379..270dcd525 100644 --- a/app/javascript/dashboard/i18n/locale/fi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fi/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Kuvaus", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Salasana", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/fi/settings.json b/app/javascript/dashboard/i18n/locale/fi/settings.json index f5755c52a..3fbcfe345 100644 --- a/app/javascript/dashboard/i18n/locale/fi/settings.json +++ b/app/javascript/dashboard/i18n/locale/fi/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Koti", "AGENTS": "Edustajat", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json index 583de65a9..f974e2cd6 100644 --- a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/fr/integrations.json b/app/javascript/dashboard/i18n/locale/fr/integrations.json index 379f91eb9..3ee092519 100644 --- a/app/javascript/dashboard/i18n/locale/fr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fr/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Outils", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Oui, supprimer", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Aucun", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "Clé de l'API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Mot de passe", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Nombre", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Obligatoire" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/fr/settings.json b/app/javascript/dashboard/i18n/locale/fr/settings.json index a951d668b..f04045ea6 100644 --- a/app/javascript/dashboard/i18n/locale/fr/settings.json +++ b/app/javascript/dashboard/i18n/locale/fr/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Outils", "HOME": "Accueil", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json index 7bb57e2e7..32c03ad13 100644 --- a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/he/integrations.json b/app/javascript/dashboard/i18n/locale/he/integrations.json index a1b30db1a..37ca8a139 100644 --- a/app/javascript/dashboard/i18n/locale/he/integrations.json +++ b/app/javascript/dashboard/i18n/locale/he/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "תיאור", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "כלום", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "מפתח API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "סיסמה", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "סוג" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "מספר", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "נדרש" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/he/settings.json b/app/javascript/dashboard/i18n/locale/he/settings.json index bc4a2ec7c..1601016eb 100644 --- a/app/javascript/dashboard/i18n/locale/he/settings.json +++ b/app/javascript/dashboard/i18n/locale/he/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "בית", "AGENTS": "סוכנים", "AGENT_BOTS": "בוטים", diff --git a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json index 00a9c78f0..e85b262c0 100644 --- a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/hi/integrations.json b/app/javascript/dashboard/i18n/locale/hi/integrations.json index f2d79d5d7..97fffa5c8 100644 --- a/app/javascript/dashboard/i18n/locale/hi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hi/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/hi/settings.json b/app/javascript/dashboard/i18n/locale/hi/settings.json index 52f28443b..256f77c04 100644 --- a/app/javascript/dashboard/i18n/locale/hi/settings.json +++ b/app/javascript/dashboard/i18n/locale/hi/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json index 2b64f5d43..f2bb07484 100644 --- a/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/hr/integrations.json b/app/javascript/dashboard/i18n/locale/hr/integrations.json index d73281dbb..8976cbb2a 100644 --- a/app/javascript/dashboard/i18n/locale/hr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hr/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Da, izbriši", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Broj", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/hr/settings.json b/app/javascript/dashboard/i18n/locale/hr/settings.json index 4c9d58c66..51e35e25b 100644 --- a/app/javascript/dashboard/i18n/locale/hr/settings.json +++ b/app/javascript/dashboard/i18n/locale/hr/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agenti", "AGENT_BOTS": "Botovi", diff --git a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json index 3f585db3e..7d719877d 100644 --- a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/hu/integrations.json b/app/javascript/dashboard/i18n/locale/hu/integrations.json index 544358514..2112ef0c8 100644 --- a/app/javascript/dashboard/i18n/locale/hu/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hu/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Igen, törlés", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Leírás", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Nincs", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API kulcs" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Jelszó", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Típus" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Szám", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Kötelező" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/hu/settings.json b/app/javascript/dashboard/i18n/locale/hu/settings.json index 1788fbdcd..0bda60edd 100644 --- a/app/javascript/dashboard/i18n/locale/hu/settings.json +++ b/app/javascript/dashboard/i18n/locale/hu/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Nyitólap", "AGENTS": "Ügynökök", "AGENT_BOTS": "Botok", diff --git a/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json index e8cf88458..1f9aeae27 100644 --- a/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/hy/integrations.json b/app/javascript/dashboard/i18n/locale/hy/integrations.json index 03898d278..081ddbde8 100644 --- a/app/javascript/dashboard/i18n/locale/hy/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hy/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/hy/settings.json b/app/javascript/dashboard/i18n/locale/hy/settings.json index 9ddc3b805..812b0cd8b 100644 --- a/app/javascript/dashboard/i18n/locale/hy/settings.json +++ b/app/javascript/dashboard/i18n/locale/hy/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json index 5409c4bb7..9ddc88efe 100644 --- a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/id/integrations.json b/app/javascript/dashboard/i18n/locale/id/integrations.json index 9dd89b13b..4da713720 100644 --- a/app/javascript/dashboard/i18n/locale/id/integrations.json +++ b/app/javascript/dashboard/i18n/locale/id/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Ya, hapus", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Deskripsi", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Tidak ada", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Kata Sandi", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tipe" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Nomor", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Diperlukan" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/id/settings.json b/app/javascript/dashboard/i18n/locale/id/settings.json index 863f7e562..75324f02f 100644 --- a/app/javascript/dashboard/i18n/locale/id/settings.json +++ b/app/javascript/dashboard/i18n/locale/id/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Beranda", "AGENTS": "Agen", "AGENT_BOTS": "Bot Agen", diff --git a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json index e78d89c1a..5db8fe769 100644 --- a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/is/integrations.json b/app/javascript/dashboard/i18n/locale/is/integrations.json index 53a81dc2f..e8193f541 100644 --- a/app/javascript/dashboard/i18n/locale/is/integrations.json +++ b/app/javascript/dashboard/i18n/locale/is/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Enginn", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Lykill" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Lykilorð", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Nauðsynlegt" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/is/settings.json b/app/javascript/dashboard/i18n/locale/is/settings.json index 776cbf10a..076f19542 100644 --- a/app/javascript/dashboard/i18n/locale/is/settings.json +++ b/app/javascript/dashboard/i18n/locale/is/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Þjónustufulltrúar", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/it/general.json b/app/javascript/dashboard/i18n/locale/it/general.json index aca059969..3c3d2f0fa 100644 --- a/app/javascript/dashboard/i18n/locale/it/general.json +++ b/app/javascript/dashboard/i18n/locale/it/general.json @@ -7,6 +7,6 @@ }, "CLOSE": "Chiudi", "BETA": "Beta", - "BETA_DESCRIPTION": "This feature is in beta and may change as we improve it." + "BETA_DESCRIPTION": "Questa funzione è in beta e può cambiare mentre la miglioriamo." } } diff --git a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json index b4ba15a0d..0443b482a 100644 --- a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/it/integrations.json b/app/javascript/dashboard/i18n/locale/it/integrations.json index 7b6dee7f7..390923320 100644 --- a/app/javascript/dashboard/i18n/locale/it/integrations.json +++ b/app/javascript/dashboard/i18n/locale/it/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Descrizione", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Nessuno", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "Chiave API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tipo" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Numero", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Obbligatorio" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/it/settings.json b/app/javascript/dashboard/i18n/locale/it/settings.json index 7dc7d5d01..8a014ceae 100644 --- a/app/javascript/dashboard/i18n/locale/it/settings.json +++ b/app/javascript/dashboard/i18n/locale/it/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agenti", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json index 99953d1cc..25c9b494b 100644 --- a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "承認済み", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ja/integrations.json b/app/javascript/dashboard/i18n/locale/ja/integrations.json index 978ab5172..e287b8bb9 100644 --- a/app/javascript/dashboard/i18n/locale/ja/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ja/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "はい、削除します", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "説明", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "なし", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "APIキー" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "パスワード", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "タイプ" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "数値", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "必須" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQ", "ADD_NEW": "新しいFAQを作成", diff --git a/app/javascript/dashboard/i18n/locale/ja/settings.json b/app/javascript/dashboard/i18n/locale/ja/settings.json index 7020d5f38..297fb854a 100644 --- a/app/javascript/dashboard/i18n/locale/ja/settings.json +++ b/app/javascript/dashboard/i18n/locale/ja/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "アシスタント", "CAPTAIN_DOCUMENTS": "ドキュメント", "CAPTAIN_RESPONSES": "FAQ", + "CAPTAIN_TOOLS": "Tools", "HOME": "ホーム", "AGENTS": "担当者", "AGENT_BOTS": "ボット", diff --git a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json index 00a9c78f0..e85b262c0 100644 --- a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ka/integrations.json b/app/javascript/dashboard/i18n/locale/ka/integrations.json index 03898d278..081ddbde8 100644 --- a/app/javascript/dashboard/i18n/locale/ka/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ka/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ka/settings.json b/app/javascript/dashboard/i18n/locale/ka/settings.json index 52f28443b..256f77c04 100644 --- a/app/javascript/dashboard/i18n/locale/ka/settings.json +++ b/app/javascript/dashboard/i18n/locale/ka/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json index 1e21c4d18..f459867e6 100644 --- a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ko/integrations.json b/app/javascript/dashboard/i18n/locale/ko/integrations.json index 929cecfc0..bb4e23b89 100644 --- a/app/javascript/dashboard/i18n/locale/ko/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ko/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "내용", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "없음", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "비밀번호", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "숫자", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ko/settings.json b/app/javascript/dashboard/i18n/locale/ko/settings.json index c24c08f1b..4e4af2242 100644 --- a/app/javascript/dashboard/i18n/locale/ko/settings.json +++ b/app/javascript/dashboard/i18n/locale/ko/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "홈", "AGENTS": "에이전트", "AGENT_BOTS": "봇", diff --git a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json index 20e34fa24..6331e3e72 100644 --- a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/lt/integrations.json b/app/javascript/dashboard/i18n/locale/lt/integrations.json index c655e1868..d1ee89a6f 100644 --- a/app/javascript/dashboard/i18n/locale/lt/integrations.json +++ b/app/javascript/dashboard/i18n/locale/lt/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Taip, Trinti", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Aprašymas", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Nėra", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API raktas" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Slaptažodis", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tipas" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Numeris", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Reikalingas" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/lt/settings.json b/app/javascript/dashboard/i18n/locale/lt/settings.json index 53fd20b6d..7b0b24e1c 100644 --- a/app/javascript/dashboard/i18n/locale/lt/settings.json +++ b/app/javascript/dashboard/i18n/locale/lt/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Pagrindinis", "AGENTS": "Agentai", "AGENT_BOTS": "Botai", diff --git a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json index 888760213..365c91af1 100644 --- a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Apstiprināts", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/lv/integrations.json b/app/javascript/dashboard/i18n/locale/lv/integrations.json index a6d4764ee..35df60e06 100644 --- a/app/javascript/dashboard/i18n/locale/lv/integrations.json +++ b/app/javascript/dashboard/i18n/locale/lv/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Jā, dzēst", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Apraksts", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Nav", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API atslēga" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Parole", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tips" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Numurs", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Nepieciešams" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "Bieži uzdotie jautājumi", "ADD_NEW": "Izveidot jaunu sarakstu ar bieži uzdotiem jautājumiem", diff --git a/app/javascript/dashboard/i18n/locale/lv/settings.json b/app/javascript/dashboard/i18n/locale/lv/settings.json index 94c2307e9..663754aec 100644 --- a/app/javascript/dashboard/i18n/locale/lv/settings.json +++ b/app/javascript/dashboard/i18n/locale/lv/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Asistenti", "CAPTAIN_DOCUMENTS": "Dokumenti", "CAPTAIN_RESPONSES": "Bieži uzdotie jautājumi", + "CAPTAIN_TOOLS": "Tools", "HOME": "Sākums", "AGENTS": "Aģenti", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json index b957d22c7..5543d4cf2 100644 --- a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ml/integrations.json b/app/javascript/dashboard/i18n/locale/ml/integrations.json index b9011e415..e09e2008d 100644 --- a/app/javascript/dashboard/i18n/locale/ml/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ml/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "വിവരണം", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "പാസ്‌വേഡ്", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ml/settings.json b/app/javascript/dashboard/i18n/locale/ml/settings.json index f698f0dd7..4fa67d25e 100644 --- a/app/javascript/dashboard/i18n/locale/ml/settings.json +++ b/app/javascript/dashboard/i18n/locale/ml/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "ഹോം", "AGENTS": "ഏജന്റുമാർ", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json index 389123146..b63a7df5c 100644 --- a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ms/integrations.json b/app/javascript/dashboard/i18n/locale/ms/integrations.json index 572e58b04..bc6839c3c 100644 --- a/app/javascript/dashboard/i18n/locale/ms/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ms/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Nombor", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ms/settings.json b/app/javascript/dashboard/i18n/locale/ms/settings.json index 36df89c78..57032fa82 100644 --- a/app/javascript/dashboard/i18n/locale/ms/settings.json +++ b/app/javascript/dashboard/i18n/locale/ms/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Ejen", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json index d9fc7e643..21a0d4986 100644 --- a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ne/integrations.json b/app/javascript/dashboard/i18n/locale/ne/integrations.json index cfdd76b7c..9bdcfa2b2 100644 --- a/app/javascript/dashboard/i18n/locale/ne/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ne/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ne/settings.json b/app/javascript/dashboard/i18n/locale/ne/settings.json index 5779c540b..28cc081e0 100644 --- a/app/javascript/dashboard/i18n/locale/ne/settings.json +++ b/app/javascript/dashboard/i18n/locale/ne/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json index 24f4701bd..d333bac2d 100644 --- a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/nl/integrations.json b/app/javascript/dashboard/i18n/locale/nl/integrations.json index 73fe8761c..d75ac2e3a 100644 --- a/app/javascript/dashboard/i18n/locale/nl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/nl/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Ja, verwijderen", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Beschrijving", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Geen", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API sleutel" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Wachtwoord", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Getal", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/nl/settings.json b/app/javascript/dashboard/i18n/locale/nl/settings.json index 0b2d4ac90..e75351d6d 100644 --- a/app/javascript/dashboard/i18n/locale/nl/settings.json +++ b/app/javascript/dashboard/i18n/locale/nl/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Startpagina", "AGENTS": "Medewerkers", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json index beca8fb5a..f8f0bb64f 100644 --- a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/no/integrations.json b/app/javascript/dashboard/i18n/locale/no/integrations.json index 62e54852c..80eb47d35 100644 --- a/app/javascript/dashboard/i18n/locale/no/integrations.json +++ b/app/javascript/dashboard/i18n/locale/no/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Beskrivelse", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Passord", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/no/settings.json b/app/javascript/dashboard/i18n/locale/no/settings.json index f4e7d03dd..7ed01e244 100644 --- a/app/javascript/dashboard/i18n/locale/no/settings.json +++ b/app/javascript/dashboard/i18n/locale/no/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Hjem", "AGENTS": "Agenter", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json index 7ee2d9779..e848df371 100644 --- a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/pl/integrations.json b/app/javascript/dashboard/i18n/locale/pl/integrations.json index b3f26646a..eab58299c 100644 --- a/app/javascript/dashboard/i18n/locale/pl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pl/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Tak, usuń", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Opis", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Brak", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "Klucz API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Hasło", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Typ" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Numer", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Wymagane" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/pl/settings.json b/app/javascript/dashboard/i18n/locale/pl/settings.json index 5fecc7f77..0314c4375 100644 --- a/app/javascript/dashboard/i18n/locale/pl/settings.json +++ b/app/javascript/dashboard/i18n/locale/pl/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Strona główna", "AGENTS": "Agenci", "AGENT_BOTS": "Boty", diff --git a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json index 3c0bbf337..d6032baa3 100644 --- a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/pt/integrations.json b/app/javascript/dashboard/i18n/locale/pt/integrations.json index 785036a76..992991440 100644 --- a/app/javascript/dashboard/i18n/locale/pt/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pt/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Ferramentas", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Sim, excluir", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Descrição", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Nenhuma", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "Chave da API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Palavra-passe", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tipo" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Número", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Obrigatório" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/pt/settings.json b/app/javascript/dashboard/i18n/locale/pt/settings.json index 72b46a67a..8e71ed9a2 100644 --- a/app/javascript/dashboard/i18n/locale/pt/settings.json +++ b/app/javascript/dashboard/i18n/locale/pt/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Ferramentas", "HOME": "Principal", "AGENTS": "Agentes", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json index 5212f63d4..13153cedf 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Aceito", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json index 63a4bc0a3..fba12cd5f 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Ferramentas", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Sim, excluir", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Descrição", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Nenhuma", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "Chave API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Senha", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tipo" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Número", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Obrigatório" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Criar nova FAQ", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json index 7f5944967..8c4f3050c 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistentes", "CAPTAIN_DOCUMENTS": "Documentos", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Ferramentas", "HOME": "Principal", "AGENTS": "Agentes", "AGENT_BOTS": "Robôs", diff --git a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json index 049398332..343024e17 100644 --- a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ro/integrations.json b/app/javascript/dashboard/i18n/locale/ro/integrations.json index 9d192cd77..bd460905d 100644 --- a/app/javascript/dashboard/i18n/locale/ro/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ro/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Descriere", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Nimic", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "Cheie API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Parola", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tip" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Număr", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Necesar" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ro/settings.json b/app/javascript/dashboard/i18n/locale/ro/settings.json index 2ae1524e6..def3181f6 100644 --- a/app/javascript/dashboard/i18n/locale/ro/settings.json +++ b/app/javascript/dashboard/i18n/locale/ro/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Acasa", "AGENTS": "Agenți", "AGENT_BOTS": "Boți", diff --git a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json index 3b0a8802b..2033217a8 100644 --- a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Одобрено", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ru/integrations.json b/app/javascript/dashboard/i18n/locale/ru/integrations.json index 929c76186..3ff5e6d4e 100644 --- a/app/javascript/dashboard/i18n/locale/ru/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ru/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Да, удалить", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Описание", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Ничего", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "Ключ API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Пароль", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Тип" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Число", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Обязательно" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQ", "ADD_NEW": "Создать новый FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ru/settings.json b/app/javascript/dashboard/i18n/locale/ru/settings.json index 788f86940..8651142e8 100644 --- a/app/javascript/dashboard/i18n/locale/ru/settings.json +++ b/app/javascript/dashboard/i18n/locale/ru/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Ассистенты", "CAPTAIN_DOCUMENTS": "Документы", "CAPTAIN_RESPONSES": "FAQ", + "CAPTAIN_TOOLS": "Tools", "HOME": "Главная", "AGENTS": "Операторы", "AGENT_BOTS": "Боты", diff --git a/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json index 77024f23c..29c36f7be 100644 --- a/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/sh/integrations.json b/app/javascript/dashboard/i18n/locale/sh/integrations.json index 03898d278..081ddbde8 100644 --- a/app/javascript/dashboard/i18n/locale/sh/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sh/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/sh/settings.json b/app/javascript/dashboard/i18n/locale/sh/settings.json index 9ddc3b805..812b0cd8b 100644 --- a/app/javascript/dashboard/i18n/locale/sh/settings.json +++ b/app/javascript/dashboard/i18n/locale/sh/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json index fa3214620..9b4950a7e 100644 --- a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/sk/integrations.json b/app/javascript/dashboard/i18n/locale/sk/integrations.json index 1bf86ffe2..efb87fb1b 100644 --- a/app/javascript/dashboard/i18n/locale/sk/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sk/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Žiadne", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API kľúč" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Povinné" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/sk/settings.json b/app/javascript/dashboard/i18n/locale/sk/settings.json index 44457e288..719146e9e 100644 --- a/app/javascript/dashboard/i18n/locale/sk/settings.json +++ b/app/javascript/dashboard/i18n/locale/sk/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agenti", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json index 69290a1a2..9871ec605 100644 --- a/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/sl/integrations.json b/app/javascript/dashboard/i18n/locale/sl/integrations.json index e4216f051..660e1cf2c 100644 --- a/app/javascript/dashboard/i18n/locale/sl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sl/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Da, izbriši", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Geslo", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Številka", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/sl/settings.json b/app/javascript/dashboard/i18n/locale/sl/settings.json index f137e56c9..b5df89409 100644 --- a/app/javascript/dashboard/i18n/locale/sl/settings.json +++ b/app/javascript/dashboard/i18n/locale/sl/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Boti", diff --git a/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json index 0cf3267ff..f79a29e5b 100644 --- a/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/sq/integrations.json b/app/javascript/dashboard/i18n/locale/sq/integrations.json index a4c2bb121..7e94c3097 100644 --- a/app/javascript/dashboard/i18n/locale/sq/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sq/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/sq/settings.json b/app/javascript/dashboard/i18n/locale/sq/settings.json index dda91af84..a05b4a5d8 100644 --- a/app/javascript/dashboard/i18n/locale/sq/settings.json +++ b/app/javascript/dashboard/i18n/locale/sq/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json index a4fece97a..c8a2c6f55 100644 --- a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/sr/integrations.json b/app/javascript/dashboard/i18n/locale/sr/integrations.json index 97bbdcb69..ab939f0d1 100644 --- a/app/javascript/dashboard/i18n/locale/sr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sr/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Opis", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Niko", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API ključ" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Lozinka", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tip" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Broj", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Obavezno" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/sr/settings.json b/app/javascript/dashboard/i18n/locale/sr/settings.json index 070361cd9..2bcf552c1 100644 --- a/app/javascript/dashboard/i18n/locale/sr/settings.json +++ b/app/javascript/dashboard/i18n/locale/sr/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Početak", "AGENTS": "Agenti", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json index cfa768b2d..9ef4bb21c 100644 --- a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/sv/integrations.json b/app/javascript/dashboard/i18n/locale/sv/integrations.json index c9eef1a7f..a77873a93 100644 --- a/app/javascript/dashboard/i18n/locale/sv/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sv/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Beskrivning", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Lösenord", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/sv/settings.json b/app/javascript/dashboard/i18n/locale/sv/settings.json index 1041ef3d9..f545647b2 100644 --- a/app/javascript/dashboard/i18n/locale/sv/settings.json +++ b/app/javascript/dashboard/i18n/locale/sv/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Hem", "AGENTS": "Agenter", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json index 32f0db539..93713c076 100644 --- a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ta/integrations.json b/app/javascript/dashboard/i18n/locale/ta/integrations.json index ada1a1f10..8f4a50584 100644 --- a/app/javascript/dashboard/i18n/locale/ta/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ta/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "பாஸ்வேர்ட்", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ta/settings.json b/app/javascript/dashboard/i18n/locale/ta/settings.json index 9f3df3486..8881d2028 100644 --- a/app/javascript/dashboard/i18n/locale/ta/settings.json +++ b/app/javascript/dashboard/i18n/locale/ta/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "முகப்பு", "AGENTS": "ஏஜென்ட்கள்", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json index 3ed841223..b158f3d9d 100644 --- a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/th/integrations.json b/app/javascript/dashboard/i18n/locale/th/integrations.json index 295e55571..5fc74f233 100644 --- a/app/javascript/dashboard/i18n/locale/th/integrations.json +++ b/app/javascript/dashboard/i18n/locale/th/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "คำอธิบาย", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "ไม่มี", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "หรัสผ่าน", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "ประเภท" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "ตัวเลข", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "โปรดระบุ" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/th/settings.json b/app/javascript/dashboard/i18n/locale/th/settings.json index 49cb4e087..065d9fcb2 100644 --- a/app/javascript/dashboard/i18n/locale/th/settings.json +++ b/app/javascript/dashboard/i18n/locale/th/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "หน้าหลัก", "AGENTS": "พนักงาน", "AGENT_BOTS": "บอท", diff --git a/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json index 60038253c..87fe57564 100644 --- a/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/tl/integrations.json b/app/javascript/dashboard/i18n/locale/tl/integrations.json index c59ec66df..6c1c9e484 100644 --- a/app/javascript/dashboard/i18n/locale/tl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/tl/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/tl/settings.json b/app/javascript/dashboard/i18n/locale/tl/settings.json index 9ddc3b805..812b0cd8b 100644 --- a/app/javascript/dashboard/i18n/locale/tl/settings.json +++ b/app/javascript/dashboard/i18n/locale/tl/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json index cb131e8fc..e8c39e733 100644 --- a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Değerlendirme mevcut değil" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Mevcut değil" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/tr/integrations.json b/app/javascript/dashboard/i18n/locale/tr/integrations.json index c214105c6..74c9fd61e 100644 --- a/app/javascript/dashboard/i18n/locale/tr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/tr/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Araçlar", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Evet, sil", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Açıklama", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Hiç", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Anahtarı" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Parola", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Tip" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Sayı", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Zorunlu" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/tr/settings.json b/app/javascript/dashboard/i18n/locale/tr/settings.json index 22cc50c9c..120acd2f4 100644 --- a/app/javascript/dashboard/i18n/locale/tr/settings.json +++ b/app/javascript/dashboard/i18n/locale/tr/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Araçlar", "HOME": "Anasayfa", "AGENTS": "Kullanıcılar", "AGENT_BOTS": "Botlar", diff --git a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json index b3b2108b0..7b63997e5 100644 --- a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/uk/integrations.json b/app/javascript/dashboard/i18n/locale/uk/integrations.json index 52d74e197..d08bbf1c7 100644 --- a/app/javascript/dashboard/i18n/locale/uk/integrations.json +++ b/app/javascript/dashboard/i18n/locale/uk/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Так, видалити", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Опис", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Нiчого", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API ключ" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Пароль", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Тип" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Номер", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Обов'язково" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/uk/settings.json b/app/javascript/dashboard/i18n/locale/uk/settings.json index d973668e9..6d480d63b 100644 --- a/app/javascript/dashboard/i18n/locale/uk/settings.json +++ b/app/javascript/dashboard/i18n/locale/uk/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Головна", "AGENTS": "Агенти", "AGENT_BOTS": "Боти", diff --git a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json index 7c36d716f..fabfa956f 100644 --- a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ur/integrations.json b/app/javascript/dashboard/i18n/locale/ur/integrations.json index 5b33237af..4bae35b73 100644 --- a/app/javascript/dashboard/i18n/locale/ur/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ur/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ur/settings.json b/app/javascript/dashboard/i18n/locale/ur/settings.json index a91b5c96e..dda7ab163 100644 --- a/app/javascript/dashboard/i18n/locale/ur/settings.json +++ b/app/javascript/dashboard/i18n/locale/ur/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "ایجنٹ", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json index 757ba2ca8..b683eacff 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json index 03898d278..081ddbde8 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/settings.json b/app/javascript/dashboard/i18n/locale/ur_IN/settings.json index 52f28443b..256f77c04 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/settings.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Home", "AGENTS": "Agents", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json index 81bc1b8eb..8c56eccf7 100644 --- a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/vi/integrations.json b/app/javascript/dashboard/i18n/locale/vi/integrations.json index 4968ebfc6..6d8fee8ae 100644 --- a/app/javascript/dashboard/i18n/locale/vi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/vi/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Có, xoá", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "Mô tả", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "Không có", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "Khoá API" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Mật khẩu", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Kiểu" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Số", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Bắt buộc" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/vi/settings.json b/app/javascript/dashboard/i18n/locale/vi/settings.json index 6196b02bf..1f5c43834 100644 --- a/app/javascript/dashboard/i18n/locale/vi/settings.json +++ b/app/javascript/dashboard/i18n/locale/vi/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "Trang Chủ", "AGENTS": "Đại lý", "AGENT_BOTS": "Bots", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json index 93e79d04d..009ac5eff 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "已批准", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json index 6558e5a4b..fdc96f2ba 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "工具", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "是的,删除", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "描述信息", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "啥都没有", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API 密钥" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "密码", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "类型" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "号码", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "必填项" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "常见问题", "ADD_NEW": "创建新常见问题", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/settings.json b/app/javascript/dashboard/i18n/locale/zh_CN/settings.json index 25c7e3f0d..478816f53 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/settings.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "助手", "CAPTAIN_DOCUMENTS": "文档", "CAPTAIN_RESPONSES": "常见问题", + "CAPTAIN_TOOLS": "工具", "HOME": "首页", "AGENTS": "客服代理", "AGENT_BOTS": "机器人", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json index 02fd64aff..95a0f6f20 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json @@ -648,14 +648,16 @@ "TIER_1K": "1K customers per 24h", "TIER_10K": "10K customers per 24h", "TIER_100K": "100K customers per 24h", - "TIER_UNLIMITED": "Unlimited customers per 24h" + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" }, "STATUSES": { "APPROVED": "Approved", "PENDING_REVIEW": "Pending Review", "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", "REJECTED": "Rejected", - "DECLINED": "Declined" + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" }, "MODES": { "SANDBOX": "Sandbox", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json index cf00f291a..a781e7728 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json @@ -752,6 +752,115 @@ } } }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "是的,刪除", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required" + }, + "DESCRIPTION": { + "LABEL": "描述資訊", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "無", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "密碼", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "類別" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "數字", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, "RESPONSES": { "HEADER": "FAQs", "ADD_NEW": "Create new FAQ", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/settings.json b/app/javascript/dashboard/i18n/locale/zh_TW/settings.json index 3a544d72f..7840c4bad 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/settings.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/settings.json @@ -304,6 +304,7 @@ "CAPTAIN_ASSISTANTS": "Assistants", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", "HOME": "首頁", "AGENTS": "客服", "AGENT_BOTS": "機器人", diff --git a/config/locales/am.yml b/config/locales/am.yml index c91f19922..28b6f375a 100644 --- a/config/locales/am.yml +++ b/config/locales/am.yml @@ -86,7 +86,7 @@ am: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ am: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 777216dd5..369e73507 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -86,7 +86,7 @@ ar: validations: name: لا ينبغي أن تبدأ أو تنتهي بالرموز، ولا ينبغي أن يكون أقل من > / \ أحرف @ . custom_filters: - number_of_records: تم الوصول إلى الحد الأقصى. الحد الأقصى لعدد عوامل التصفية المخصصة المسموح به للمستخدم لكل حساب هو 50. + number_of_records: تم الوصول إلى الحد الأقصى. الحد الأقصى لعدد عوامل التصفية المخصصة المسموح به للمستخدم لكل حساب هو 1000. invalid_attribute: مفتاح السمة غير صالح - [%{key}]. يجب أن يكون المفتاح واحد من [%{allowed_keys}] أو سمة مخصصة محددة في الحساب. invalid_operator: مشغل غير صالح. المشغل المسموح به لـ %{attribute_name} هو [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ar: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: البحث عن مقالة حسب العنوان أو الجسم... diff --git a/config/locales/az.yml b/config/locales/az.yml index 582e5d233..3b04a2a82 100644 --- a/config/locales/az.yml +++ b/config/locales/az.yml @@ -86,7 +86,7 @@ az: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ az: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/bg.yml b/config/locales/bg.yml index be1ebaf87..0b65acf7e 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -86,7 +86,7 @@ bg: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ bg: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/ca.yml b/config/locales/ca.yml index e678aa96d..62537fbb2 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -86,7 +86,7 @@ ca: validations: name: no hauria de començar ni acabar amb símbols, i no hauria de tenir caràcters < > / \ @. custom_filters: - number_of_records: S'ha arribat al límit. El nombre màxim de filtres personalitzats permesos per a un usuari per compte és de 50. + number_of_records: S'ha arribat al límit. El nombre màxim de filtres personalitzats permesos per a un usuari per compte és de 1000. invalid_attribute: 'Clau d''atribut no vàlida: [%{key}]. La clau hauria de ser una de [%{allowed_keys}] o un atribut personalitzat definit al compte.' invalid_operator: Operador no vàlid. Els operadors permesos per a %{attribute_name} son [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ca: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Cerca l'article per títol o cos... diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 270a955c6..39d56b284 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -86,7 +86,7 @@ cs: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ cs: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/da.yml b/config/locales/da.yml index d449604c7..b15244766 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -86,7 +86,7 @@ da: validations: name: bør ikke starte eller slutte med symboler, og det skal ikke have < > / \ @ tegn. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ da: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/de.yml b/config/locales/de.yml index d9d6fb23d..44863a78f 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -86,7 +86,7 @@ de: validations: name: Sollte nicht mit Symbolen beginnen oder enden, und es sollte keine < > / \ @ Zeichen enthalten. custom_filters: - number_of_records: Limit erreicht. Die maximale Anzahl an benutzerdefinierten Filtern pro Benutzerkonto beträgt 50. + number_of_records: Limit erreicht. Die maximale Anzahl an benutzerdefinierten Filtern pro Benutzerkonto beträgt 1000. invalid_attribute: Ungültiger Attribut schlüssel - [%{key}]. Der Schlüssel sollte einer von [%{allowed_keys}] oder ein benutzerdefiniertes Attribut sein, das im Konto definiert ist. invalid_operator: Ungültiger Operator. Die erlaubten Operatoren für %{attribute_name} sind [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ de: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Artikel nach Titel oder Text suchen... diff --git a/config/locales/el.yml b/config/locales/el.yml index 034462107..c9578bbbf 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -86,7 +86,7 @@ el: validations: name: δεν πρέπει να ξεκινά ή να τελειώνει με σύμβολα, και δεν πρέπει να περιέχει τους χαρακτήρες < > / \ @ custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ el: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Αναζήτηση άρθρου με τίτλο ή περιεχόμενο... diff --git a/config/locales/es.yml b/config/locales/es.yml index 6f81f1d67..6e679273d 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -86,7 +86,7 @@ es: validations: name: no debe comenzar ni terminar con símbolos, y no debe tener caracteres < > / \ @. custom_filters: - number_of_records: Límite alcanzado. El número máximo de filtros personalizados permitidos para un usuario por cuenta es de 50. + number_of_records: Límite alcanzado. El número máximo de filtros personalizados permitidos para un usuario por cuenta es de 1000. invalid_attribute: Clave de atributo no válida - [%{key}]. La clave debe ser una de [%{allowed_keys}] o un atributo personalizado definido en la cuenta. invalid_operator: Operador no válido. Los operadores permitidos para %{attribute_name} son [%{allowed_keys}]. invalid_query_operator: El operador de consulta debe ser "Y" o "O". @@ -322,6 +322,8 @@ es: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Buscar artículo por título o cuerpo... diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 232396757..bbe2fc8cf 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -86,7 +86,7 @@ fa: validations: name: نباید با نمادها شروع یا ختم شود و نباید دارای کاراکترهای < > / \ @ باشد. custom_filters: - number_of_records: سررسید محدودیت. حداکثر تعداد قابل قبول فیلترها برای یک کاربر در هر اکانت 50 می باشند. + number_of_records: سررسید محدودیت. حداکثر تعداد قابل قبول فیلترها برای یک کاربر در هر اکانت 1000 می باشند. invalid_attribute: کلید ویژگی معتبر نیست (%{key}). کلید باید یکی از %{allowed_keys} باشد یا یک ویژگی سفارشی ایجاد شده در حساب. invalid_operator: این عملیات مجاز نیست. عملیات های مجاز برای %{attribute_name} شامل %{allowed_keys} می باشد. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ fa: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: جستجوی مقاله براساس عنوان یا متن... diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 6e7db9ad7..09d6451d3 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -86,7 +86,7 @@ fi: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ fi: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/fr.yml b/config/locales/fr.yml index edab001cb..284a87ac0 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -86,7 +86,7 @@ fr: validations: name: 'ne doit pas commencer ou se terminer par des symboles, et ne doit pas comporter les caractères suivants : "< > / \ @".' custom_filters: - number_of_records: Limite atteinte. Le nombre maximum de filtres personnalisés autorisés pour un utilisateur par compte est de 50. + number_of_records: Limite atteinte. Le nombre maximum de filtres personnalisés autorisés pour un utilisateur par compte est de 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ fr: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Rechercher un article par titre ou contenu... diff --git a/config/locales/he.yml b/config/locales/he.yml index a2f309a3a..f006ed806 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -86,7 +86,7 @@ he: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ he: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/hi.yml b/config/locales/hi.yml index 82f962f92..98bbda2ec 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -86,7 +86,7 @@ hi: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ hi: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 3828ebd40..2eb2b7756 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -86,7 +86,7 @@ hr: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ hr: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 8ded57a47..901148f83 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -86,7 +86,7 @@ hu: validations: name: nem kezdődhet vagy végződhet szimbólummal, és nem tartalmazhat < > / \ @ karaktereket. custom_filters: - number_of_records: Limit túllépve. Maximum 50 speciális szűrőt használhat egy fiók. + number_of_records: Limit túllépve. Maximum 1000 speciális szűrőt használhat egy fiók. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ hu: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Keress a bejegyzések címében és tartalmában... diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 3119df585..b1a0ca023 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -86,7 +86,7 @@ hy: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ hy: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/id.yml b/config/locales/id.yml index ffe340f74..3b4527420 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -86,7 +86,7 @@ id: validations: name: tidak boleh dimulai atau diakhiri dengan simbol, dan tidak boleh memiliki karakter < > / \ @. custom_filters: - number_of_records: Batas tercapai. Jumlah maksimum filter ubahsuaian yang diizinkan untuk satu pengguna per akun adalah 50. + number_of_records: Batas tercapai. Jumlah maksimum filter ubahsuaian yang diizinkan untuk satu pengguna per akun adalah 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ id: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Telusuri artikel menurut judul atau isi... diff --git a/config/locales/is.yml b/config/locales/is.yml index c9b96fd74..24c01f849 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -86,7 +86,7 @@ is: validations: name: ætti ekki að byrja eða enda á táknum, og það ætti ekki að hafa < > / \ @ táknin. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ is: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/it.yml b/config/locales/it.yml index 2d2720acd..806c3e0a9 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -86,7 +86,7 @@ it: validations: name: non dovrebbe iniziare o terminare con i simboli, e non dovrebbe avere < > / \ @ caratteri. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ it: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 5e44bda34..336f70b91 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -86,7 +86,7 @@ ja: validations: name: 記号で開始または終了しないでください。< > / \ @ を使用しないでください。 custom_filters: - number_of_records: 制限に達しました。1つのアカウントにつき、ユーザーごとに許可されるカスタムフィルターの最大数は 50 です。 + number_of_records: 制限に達しました。1つのアカウントにつき、ユーザーごとに許可されるカスタムフィルターの最大数は 1000 です。 invalid_attribute: 無効な属性キー - [%{key}]。キーは[%{allowed_keys}]のいずれかである必要があります。または、アカウント内で定義されたカスタム属性でなければなりません。 invalid_operator: 無効な演算子です。%{attribute_name} に許可されている演算子は [%{allowed_keys}] です。 invalid_query_operator: クエリ演算子は "AND" または "OR" でなければなりません。 @@ -322,6 +322,8 @@ ja: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: タイトルまたは本文で記事を検索... diff --git a/config/locales/ka.yml b/config/locales/ka.yml index cb3d5637b..c8f9d200d 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -86,7 +86,7 @@ ka: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ka: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 2a655fcce..042e2fae4 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -86,7 +86,7 @@ ko: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ko: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: 게시물을 제목이나 내용으로 검색하세요... diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 51018d3aa..63b508066 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -86,7 +86,7 @@ lt: validations: name: neturėtų prasidėti ar baigtis simboliais ir jame neturėtų būti simbolių < > / \ @. custom_filters: - number_of_records: Pasiekta riba. Didžiausias leistinas personalizuotų filtrų skaičius vienam vartotojui yra 50. + number_of_records: Pasiekta riba. Didžiausias leistinas personalizuotų filtrų skaičius vienam vartotojui yra 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ lt: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Ieškokite straipsnio pagal pavadinimą arba turinį... diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 639194239..12b1d85a7 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -86,7 +86,7 @@ lv: validations: name: nevajadzētu sākties vai beigties ar simboliem, un nevajadzētu saturēt <> / \ @ rakstzīmes. custom_filters: - number_of_records: Sasniegts limits. Maksimālais atļauto pielāgoto filtru skaits vienam lietotājam ir 50. + number_of_records: Sasniegts limits. Maksimālais atļauto pielāgoto filtru skaits vienam lietotājam ir 1000. invalid_attribute: Nederīga atribūta atslēga - [%{key}]. Atslēgai ir jābūt vienai no [%{allowed_keys}] vai pielāgotam atribūtam, kas definēts kontā. invalid_operator: Nederīgs operators. Atļautie operatori priekš %{attribute_name} ir [%{allowed_keys}]. invalid_query_operator: Vaicājuma operatoram ir jābūt "UN" vai "VAI". @@ -322,6 +322,8 @@ lv: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Meklēt rakstu pēc nosaukuma vai pamatteksta... diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 2f411ea56..80bd12a50 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -86,7 +86,7 @@ ml: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ml: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 7a1902b8e..5d6963421 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -86,7 +86,7 @@ ms: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ms: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/ne.yml b/config/locales/ne.yml index 2690a7d47..b4477805a 100644 --- a/config/locales/ne.yml +++ b/config/locales/ne.yml @@ -86,7 +86,7 @@ ne: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ne: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 641516129..1d361f807 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -86,7 +86,7 @@ nl: validations: name: mag niet beginnen of eindigen met symbolen, en mag geen < > / \ @ karakters hebben. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ nl: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/no.yml b/config/locales/no.yml index c1b736fb3..ebb23976d 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -86,7 +86,7 @@ validations: name: ikke kan starte eller slutte med symboler, og den kan ikke ha < > / \ @ tegn. custom_filters: - number_of_records: Grense nådd. Maksimalt antall tillatte filtre for en bruker per konto er 50. + number_of_records: Grense nådd. Maksimalt antall tillatte filtre for en bruker per konto er 1000. invalid_attribute: Ugyldig attributtnøkkel - [%{key}]. Nøkkelen bør være en av [%{allowed_keys}] eller en egendefinert attributt definert på kontoen. invalid_operator: Ugyldig operatør. De tillatte operatørene for %{attribute_name} er [%{allowed_keys}]. invalid_query_operator: Spørrings-operatør må være enten "AND" eller "OR". @@ -322,6 +322,8 @@ processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/pl.yml b/config/locales/pl.yml index c21d42d0f..9ade3104a 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -86,7 +86,7 @@ pl: validations: name: nie powinno zaczynać się ani kończyć symbolami i nie powinno zawierać znaków < > / \ @. custom_filters: - number_of_records: Osiągnięto limit. Maksymalna liczba dozwolonych filtrów niestandardowych dla użytkownika na konto wynosi 50. + number_of_records: Osiągnięto limit. Maksymalna liczba dozwolonych filtrów niestandardowych dla użytkownika na konto wynosi 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ pl: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Wyszukaj artykuł według tytułu lub treści... diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 8b78ee036..cf5b51e07 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -86,7 +86,7 @@ pt: validations: name: não deve iniciar ou terminar com símbolos, nem deve ter < > / \ @ caracteres. custom_filters: - number_of_records: Limite atingido. O número máximo de filtros personalizados permitidos para um utilizador por conta é de 50. + number_of_records: Limite atingido. O número máximo de filtros personalizados permitidos para um utilizador por conta é de 1000. invalid_attribute: Chave de atributo inválida - [%{key}]. A chave deve ser uma das [%{allowed_keys}] ou um atributo personalizado definido na conta. invalid_operator: Operador inválido. Os operadores permitidos para %{attribute_name} são [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ pt: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Pesquisar artigo por título ou corpo... diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml index 80c4eb574..01e532aad 100644 --- a/config/locales/pt_BR.yml +++ b/config/locales/pt_BR.yml @@ -86,7 +86,7 @@ pt_BR: validations: name: 'não deve iniciar ou terminar com símbolos e não deve ter os caracteres: < > / \ @.' custom_filters: - number_of_records: Limite atingido. O número máximo de filtros personalizados permitidos para um usuário por conta é de 50. + number_of_records: Limite atingido. O número máximo de filtros personalizados permitidos para um usuário por conta é de 1000. invalid_attribute: Chave de atributo inválido - [%{key}]. A chave deve ser uma das [%{allowed_keys}] ou um atributo personalizado definido na conta. invalid_operator: Operador inválido. Os operadores permitidos para %{attribute_name} são [%{allowed_keys}]. invalid_query_operator: Operador de consulta deve ser "E" ou "OU". @@ -322,6 +322,8 @@ pt_BR: processing_pages: 'Processando páginas %{start}-%{end} (iteração %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Erro ao processar as páginas %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Pesquisar por artigo por título ou corpo... diff --git a/config/locales/ro.yml b/config/locales/ro.yml index bdf8f6237..ae7ca5605 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -86,7 +86,7 @@ ro: validations: name: nu ar trebui să înceapă sau să se termine cu simboluri și nu ar trebui să aibă < > / \ @ caractere. custom_filters: - number_of_records: Limita atinsă. Numărul maxim de filtre personalizate permise pentru un utilizator per cont este de 50. + number_of_records: Limita atinsă. Numărul maxim de filtre personalizate permise pentru un utilizator per cont este de 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ro: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Căutați articol după titlu sau corp... diff --git a/config/locales/ru.yml b/config/locales/ru.yml index ee104a126..3dc011305 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -86,7 +86,7 @@ ru: validations: name: Не должен начинаться или заканчиваться символами, и у него Не должно быть < > / \ @ символов. custom_filters: - number_of_records: Достигнут лимит. Максимальное количество разрешенных пользовательских фильтров для каждого пользователя - 50. + number_of_records: Достигнут лимит. Максимальное количество разрешенных пользовательских фильтров для каждого пользователя - 1000. invalid_attribute: Недопустимый ключ атрибута - [%{key}]. Ключ должен быть одним из [%{allowed_keys}] или пользовательским атрибутом, указанным в учетной записи. invalid_operator: Неверный оператор. Допустимыми операторами для %{attribute_name} являются [%{allowed_keys}]. invalid_query_operator: Оператор запроса должен быть "AND" или "OR". @@ -322,6 +322,8 @@ ru: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Поиск статьи по названию или содержанию... diff --git a/config/locales/sh.yml b/config/locales/sh.yml index e4598bccf..b52dd4af5 100644 --- a/config/locales/sh.yml +++ b/config/locales/sh.yml @@ -86,7 +86,7 @@ sh: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ sh: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 09067eed7..9c0b5c0a3 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -86,7 +86,7 @@ sk: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ sk: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 1e4c32133..76b21fb83 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -86,7 +86,7 @@ sl: validations: name: se ne sme začeti ali končati s simboli in ne sme vsebovati znakov < > / \ @. custom_filters: - number_of_records: Omejitev dosežena. Največje dovoljeno število filtrov po meri za uporabnika na račun je 50. + number_of_records: Omejitev dosežena. Največje dovoljeno število filtrov po meri za uporabnika na račun je 1000. invalid_attribute: Neveljaven ključ atributa - [%{key}]. Ključ mora biti eden od [%{allowed_keys}] ali atribut po meri, določen v računu. invalid_operator: Neveljaven operater. Dovoljeni operaterji za %{attribute_name} so [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ sl: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Iskanje članka po naslovu ali telesu ... diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 8717b39fa..d87ab44e2 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -86,7 +86,7 @@ sq: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ sq: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 99140fa02..a8f9b23a8 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -86,7 +86,7 @@ sr-Latn: validations: name: ne treba početi ili se završiti sa simbolima i ne treba da sadrži < > / \ @ karaktere. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ sr-Latn: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/sv.yml b/config/locales/sv.yml index fc0170c3a..77a3a1e84 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -86,7 +86,7 @@ sv: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ sv: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Sök efter artikel baserat på rubrik eller brödtext... diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 2323ab68e..2af7ba7bb 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -86,7 +86,7 @@ ta: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ta: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/th.yml b/config/locales/th.yml index 137cfd4fd..287f6d4f2 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -86,7 +86,7 @@ th: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ th: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/tl.yml b/config/locales/tl.yml index 947ca15f9..fb6de4e8c 100644 --- a/config/locales/tl.yml +++ b/config/locales/tl.yml @@ -86,7 +86,7 @@ tl: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ tl: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/tr.yml b/config/locales/tr.yml index ab3fce25d..f046ee82e 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -86,7 +86,7 @@ tr: validations: name: sembollerle başlamamalı veya bitmemeli, < > / \ @ karakterlerini içermemeli. custom_filters: - number_of_records: Limit aşıldı. Bir kullanıcının bir hesap için izin verilen özel filtre sayısı 50'dir. + number_of_records: Limit aşıldı. Bir kullanıcının bir hesap için izin verilen özel filtre sayısı 1000'dir. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ tr: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Başlık veya içerikle makale arayın... diff --git a/config/locales/uk.yml b/config/locales/uk.yml index da1f328ac..29006859a 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -86,7 +86,7 @@ uk: validations: name: не повинно починатись або закінчуватися символами, і він не повинен мати < > / \ @ символів. custom_filters: - number_of_records: Досягнуто ліміту. Максимальна кількість дозволених користувацьких фільтрів для користувача на рахунок становить 50. + number_of_records: Досягнуто ліміту. Максимальна кількість дозволених користувацьких фільтрів для користувача на рахунок становить 1000. invalid_attribute: Некоректний ключ атрибута - [%{key}]. Ключ повинен бути одним з [%{allowed_keys}] або налаштованим атрибутом, визначеним в обліковому записі. invalid_operator: Некоректний оператор. Дозволені оператори для %{attribute_name} є [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ uk: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Пошук статті за заголовком або змістом... diff --git a/config/locales/ur.yml b/config/locales/ur.yml index 5fd822348..1f033f2a6 100644 --- a/config/locales/ur.yml +++ b/config/locales/ur.yml @@ -86,7 +86,7 @@ ur: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ur: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/ur_IN.yml b/config/locales/ur_IN.yml index 3ed18d377..304c8f405 100644 --- a/config/locales/ur_IN.yml +++ b/config/locales/ur_IN.yml @@ -86,7 +86,7 @@ ur: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ ur: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 9f2597037..ba84f6bbd 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -86,7 +86,7 @@ vi: validations: name: không nên bắt đầu hoặc kết thúc bằng các ký hiệu và không nên có kí tự < > / \ @. custom_filters: - number_of_records: Đã đạt giới hạn. Số lượng tuỳ chọn lọc tối đa cho mỗi mỗi người dùng mỗi tài khoản là 50. + number_of_records: Đã đạt giới hạn. Số lượng tuỳ chọn lọc tối đa cho mỗi mỗi người dùng mỗi tài khoản là 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ vi: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Tìm bài viết theo tiêu đề hoặc nội dung... diff --git a/config/locales/zh_CN.yml b/config/locales/zh_CN.yml index 4702af460..234c3758d 100644 --- a/config/locales/zh_CN.yml +++ b/config/locales/zh_CN.yml @@ -86,7 +86,7 @@ zh_CN: validations: name: 不应该以符号开头或结尾,它不应该有 < > / \ @ 字符。 custom_filters: - number_of_records: 已达到上限。每个账户允许用户自定义过滤器的最大数目为50个。 + number_of_records: 已达到上限。每个账户允许用户自定义过滤器的最大数目为1000个。 invalid_attribute: 无效的属性键 - [%{key}]。键应为 [%{allowed_keys}] 之一或帐户中定义的自定义属性。 invalid_operator: 无效的操作符。%{attribute_name} 允许的操作符为 [%{allowed_keys}]。 invalid_query_operator: 查询操作符必须为 "AND" 或 "OR"。 @@ -322,6 +322,8 @@ zh_CN: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: 搜索文章的标题或正文... diff --git a/config/locales/zh_TW.yml b/config/locales/zh_TW.yml index ad47d8333..572271664 100644 --- a/config/locales/zh_TW.yml +++ b/config/locales/zh_TW.yml @@ -86,7 +86,7 @@ zh_TW: validations: name: should not start or end with symbols, and it should not have < > / \ @ characters. custom_filters: - number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 50. + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. invalid_query_operator: Query operator must be either "AND" or "OR". @@ -322,6 +322,8 @@ zh_TW: processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' public_portal: search: search_placeholder: Search for article by title or body... From 978f4c431a36bfe9d2d7b4413218200dcd5231a0 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Tue, 7 Oct 2025 20:32:29 +0530 Subject: [PATCH 03/14] feat: Add relay state for SAML SSO (#12597) Co-authored-by: Muhsin Keloth --- .../omniauth_callbacks_controller.rb | 13 +++++++ app/javascript/v3/views/login/Index.vue | 2 + app/javascript/v3/views/login/Saml.vue | 5 +++ app/javascript/v3/views/routes.js | 1 + .../app/controllers/api/v1/auth_controller.rb | 17 ++++++++- .../omniauth_callbacks_controller.rb | 38 ++++++++++++++++++- .../config/initializers/omniauth_saml.rb | 4 ++ .../api/v1/auth_controller_spec.rb | 24 ++++++++++++ 8 files changed, 101 insertions(+), 3 deletions(-) diff --git a/app/controllers/devise_overrides/omniauth_callbacks_controller.rb b/app/controllers/devise_overrides/omniauth_callbacks_controller.rb index fd3dba87c..900125670 100644 --- a/app/controllers/devise_overrides/omniauth_callbacks_controller.rb +++ b/app/controllers/devise_overrides/omniauth_callbacks_controller.rb @@ -19,6 +19,19 @@ class DeviseOverrides::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCa redirect_to login_page_url(email: encoded_email, sso_auth_token: @resource.generate_sso_auth_token) end + def sign_in_user_on_mobile + @resource.skip_confirmation! if confirmable_enabled? + + # once the resource is found and verified + # we can just send them to the login page again with the SSO params + # that will log them in + encoded_email = ERB::Util.url_encode(@resource.email) + params = { email: encoded_email, sso_auth_token: @resource.generate_sso_auth_token }.to_query + + mobile_deep_link_base = GlobalConfigService.load('MOBILE_DEEP_LINK_BASE', 'chatwootapp') + redirect_to "#{mobile_deep_link_base}://auth/saml?#{params}", allow_other_host: true + end + def sign_up_user return redirect_to login_page_url(error: 'no-account-found') unless account_signup_allowed? return redirect_to login_page_url(error: 'business-account-only') unless validate_signup_email_is_business_domain? diff --git a/app/javascript/v3/views/login/Index.vue b/app/javascript/v3/views/login/Index.vue index 028af4f72..04fb939c8 100644 --- a/app/javascript/v3/views/login/Index.vue +++ b/app/javascript/v3/views/login/Index.vue @@ -22,6 +22,8 @@ import MfaVerification from 'dashboard/components/auth/MfaVerification.vue'; const ERROR_MESSAGES = { 'no-account-found': 'LOGIN.OAUTH.NO_ACCOUNT_FOUND', 'business-account-only': 'LOGIN.OAUTH.BUSINESS_ACCOUNTS_ONLY', + 'saml-authentication-failed': 'LOGIN.SAML.API.ERROR_MESSAGE', + 'saml-not-enabled': 'LOGIN.SAML.API.ERROR_MESSAGE', }; const IMPERSONATION_URL_SEARCH_KEY = 'impersonation'; diff --git a/app/javascript/v3/views/login/Saml.vue b/app/javascript/v3/views/login/Saml.vue index bbb61914d..95749d7e2 100644 --- a/app/javascript/v3/views/login/Saml.vue +++ b/app/javascript/v3/views/login/Saml.vue @@ -15,6 +15,10 @@ const props = defineProps({ type: String, default: '', }, + target: { + type: String, + default: 'web', + }, }); const store = useStore(); @@ -107,6 +111,7 @@ onMounted(async () => { name="authenticity_token" :value="csrfToken" /> + ({ authError: route.query.error, + target: route.query.target, }), }, { diff --git a/enterprise/app/controllers/api/v1/auth_controller.rb b/enterprise/app/controllers/api/v1/auth_controller.rb index 091d4f8f8..b0d8e1366 100644 --- a/enterprise/app/controllers/api/v1/auth_controller.rb +++ b/enterprise/app/controllers/api/v1/auth_controller.rb @@ -5,7 +5,9 @@ class Api::V1::AuthController < Api::BaseController def saml_login return if @account.nil? - saml_initiation_url = "/auth/saml?account_id=#{@account.id}" + relay_state = params[:target] || 'web' + + saml_initiation_url = "/auth/saml?account_id=#{@account.id}&RelayState=#{relay_state}" redirect_to saml_initiation_url, status: :temporary_redirect end @@ -44,7 +46,18 @@ class Api::V1::AuthController < Api::BaseController end def render_saml_error - redirect_to sso_login_page_url(error: 'saml-authentication-failed') + error = 'saml-authentication-failed' + + if mobile_target? + mobile_deep_link_base = GlobalConfigService.load('MOBILE_DEEP_LINK_BASE', 'chatwootapp') + redirect_to "#{mobile_deep_link_base}://auth/saml?error=#{ERB::Util.url_encode(error)}", allow_other_host: true + else + redirect_to sso_login_page_url(error: error) + end + end + + def mobile_target? + params[:target]&.casecmp('mobile')&.zero? end def sso_login_page_url(error: nil) diff --git a/enterprise/app/controllers/enterprise/devise_overrides/omniauth_callbacks_controller.rb b/enterprise/app/controllers/enterprise/devise_overrides/omniauth_callbacks_controller.rb index 973f26650..4856ca443 100644 --- a/enterprise/app/controllers/enterprise/devise_overrides/omniauth_callbacks_controller.rb +++ b/enterprise/app/controllers/enterprise/devise_overrides/omniauth_callbacks_controller.rb @@ -32,17 +32,40 @@ module Enterprise::DeviseOverrides::OmniauthCallbacksController end end + def omniauth_failure + return super unless params[:provider] == 'saml' + + relay_state = saml_relay_state + error = params[:message] || 'authentication-failed' + + if for_mobile?(relay_state) + redirect_to_mobile_error(error, relay_state) + else + redirect_to login_page_url(error: "saml-#{error}") + end + end + private def handle_saml_auth account_id = extract_saml_account_id - return redirect_to login_page_url(error: 'saml-not-enabled') unless saml_enabled_for_account?(account_id) + relay_state = saml_relay_state + + unless saml_enabled_for_account?(account_id) + return redirect_to_mobile_error('saml-not-enabled') if for_mobile?(relay_state) + + return redirect_to login_page_url(error: 'saml-not-enabled') + end @resource = SamlUserBuilder.new(auth_hash, account_id).perform if @resource.persisted? + return sign_in_user_on_mobile if for_mobile?(relay_state) + sign_in_user else + return redirect_to_mobile_error('saml-authentication-failed') if for_mobile?(relay_state) + redirect_to login_page_url(error: 'saml-authentication-failed') end end @@ -51,6 +74,19 @@ module Enterprise::DeviseOverrides::OmniauthCallbacksController params[:account_id] || session[:saml_account_id] || request.env['omniauth.params']&.dig('account_id') end + def saml_relay_state + session[:saml_relay_state] || request.env['omniauth.params']&.dig('RelayState') + end + + def for_mobile?(relay_state) + relay_state.to_s.casecmp('mobile').zero? + end + + def redirect_to_mobile_error(error) + mobile_deep_link_base = GlobalConfigService.load('MOBILE_DEEP_LINK_BASE', 'chatwootapp') + redirect_to "#{mobile_deep_link_base}://auth/saml?error=#{ERB::Util.url_encode(error)}", allow_other_host: true + end + def saml_enabled_for_account?(account_id) return false if account_id.blank? diff --git a/enterprise/config/initializers/omniauth_saml.rb b/enterprise/config/initializers/omniauth_saml.rb index f73e3a109..f39e9d511 100644 --- a/enterprise/config/initializers/omniauth_saml.rb +++ b/enterprise/config/initializers/omniauth_saml.rb @@ -9,18 +9,22 @@ SAML_SETUP_PROC = proc do |env| account_id = request.params['account_id'] || request.session[:saml_account_id] || env['omniauth.params']&.dig('account_id') + relay_state = request.params['RelayState'] || '' if account_id # Store in session and omniauth params for callback request.session[:saml_account_id] = account_id + request.session[:saml_relay_state] = relay_state env['omniauth.params'] ||= {} env['omniauth.params']['account_id'] = account_id + env['omniauth.params']['RelayState'] = relay_state # Find SAML settings for this account settings = AccountSamlSettings.find_by(account_id: account_id) if settings # Configure the strategy options dynamically + env['omniauth.strategy'].options[:idp_sso_service_url_runtime_params] = { RelayState: :RelayState } env['omniauth.strategy'].options[:assertion_consumer_service_url] = "#{ENV.fetch('FRONTEND_URL', 'http://localhost:3000')}/omniauth/saml/callback?account_id=#{account_id}" env['omniauth.strategy'].options[:sp_entity_id] = settings.sp_entity_id env['omniauth.strategy'].options[:idp_entity_id] = settings.idp_entity_id diff --git a/spec/enterprise/controllers/api/v1/auth_controller_spec.rb b/spec/enterprise/controllers/api/v1/auth_controller_spec.rb index f1e2ef1c7..767011a50 100644 --- a/spec/enterprise/controllers/api/v1/auth_controller_spec.rb +++ b/spec/enterprise/controllers/api/v1/auth_controller_spec.rb @@ -36,6 +36,12 @@ RSpec.describe 'Api::V1::Auth', type: :request do expect(response.location).to eq('http://www.example.com/app/login/sso?error=saml-authentication-failed') end + + it 'redirects to mobile deep link with error when target is mobile' do + post '/api/v1/auth/saml_login', params: { email: 'nonexistent@example.com', target: 'mobile' } + + expect(response.location).to eq('chatwootapp://auth/saml?error=saml-authentication-failed') + end end context 'when user exists but has no SAML enabled accounts' do @@ -48,6 +54,12 @@ RSpec.describe 'Api::V1::Auth', type: :request do expect(response.location).to eq('http://www.example.com/app/login/sso?error=saml-authentication-failed') end + + it 'redirects to mobile deep link with error when target is mobile' do + post '/api/v1/auth/saml_login', params: { email: user.email, target: 'mobile' } + + expect(response.location).to eq('chatwootapp://auth/saml?error=saml-authentication-failed') + end end context 'when user has account without SAML feature enabled' do @@ -65,6 +77,12 @@ RSpec.describe 'Api::V1::Auth', type: :request do expect(response.location).to eq('http://www.example.com/app/login/sso?error=saml-authentication-failed') end + + it 'redirects to mobile deep link with error when target is mobile' do + post '/api/v1/auth/saml_login', params: { email: user.email, target: 'mobile' } + + expect(response.location).to eq('chatwootapp://auth/saml?error=saml-authentication-failed') + end end context 'when user has valid SAML configuration' do @@ -82,6 +100,12 @@ RSpec.describe 'Api::V1::Auth', type: :request do expect(response.location).to include("/auth/saml?account_id=#{account.id}") end + + it 'redirects to SAML initiation URL with mobile relay state' do + post '/api/v1/auth/saml_login', params: { email: user.email, target: 'mobile' } + + expect(response.location).to include("/auth/saml?account_id=#{account.id}&RelayState=mobile") + end end context 'when user has multiple accounts with SAML' do From 78ebdbbbd857c30bff09a4573183a3496618659b Mon Sep 17 00:00:00 2001 From: Aguinaldo Tupy <44652991+aguinaldotupy@users.noreply.github.com> Date: Wed, 8 Oct 2025 07:03:06 -0300 Subject: [PATCH 04/14] fix: Normalize URLs with spaces in WhatsApp template parameters (#12594) This PR fixes URL parsing errors when WhatsApp template parameters contain URLs with spaces or special characters. The solution adds proper URL normalization using Addressable::URI before validation, which automatically handles space encoding and special character normalization. Related with https://github.com/chatwoot/chatwoot/pull/12462 ## Type of change - [x] Bug fix (non-breaking change which fixes an issue) ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [x] Any dependent changes have been merged and published in downstream modules --------- Co-authored-by: Muhsin Keloth Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../populate_template_parameters_service.rb | 16 ++++- ...pulate_template_parameters_service_spec.rb | 70 +++++++++++++++++++ 2 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 spec/services/whatsapp/populate_template_parameters_service_spec.rb diff --git a/app/services/whatsapp/populate_template_parameters_service.rb b/app/services/whatsapp/populate_template_parameters_service.rb index 3f9f64b91..6ea3e6e05 100644 --- a/app/services/whatsapp/populate_template_parameters_service.rb +++ b/app/services/whatsapp/populate_template_parameters_service.rb @@ -34,8 +34,9 @@ class Whatsapp::PopulateTemplateParametersService return nil if url.blank? sanitized_url = sanitize_parameter(url) - validate_url(sanitized_url) - build_media_type_parameter(sanitized_url, media_type.downcase, media_name) + normalized_url = normalize_url(sanitized_url) + validate_url(normalized_url) + build_media_type_parameter(normalized_url, media_type.downcase, media_name) end def build_named_parameter(parameter_name, value) @@ -138,9 +139,20 @@ class Whatsapp::PopulateTemplateParametersService sanitized[0...1000] # Limit length to prevent DoS end + def normalize_url(url) + # Use Addressable::URI for better URL normalization + # It handles spaces, special characters, and encoding automatically + Addressable::URI.parse(url).normalize.to_s + rescue Addressable::URI::InvalidURIError + # Fallback: simple space encoding if Addressable fails + url.gsub(' ', '%20') + end + def validate_url(url) return if url.blank? + # url is already normalized by the caller + uri = URI.parse(url) raise ArgumentError, "Invalid URL scheme: #{uri.scheme}. Only http and https are allowed" unless %w[http https].include?(uri.scheme) raise ArgumentError, 'URL too long (max 2000 characters)' if url.length > 2000 diff --git a/spec/services/whatsapp/populate_template_parameters_service_spec.rb b/spec/services/whatsapp/populate_template_parameters_service_spec.rb new file mode 100644 index 000000000..05390bd90 --- /dev/null +++ b/spec/services/whatsapp/populate_template_parameters_service_spec.rb @@ -0,0 +1,70 @@ +require 'rails_helper' + +describe Whatsapp::PopulateTemplateParametersService do + let(:service) { described_class.new } + + describe '#normalize_url' do + it 'normalizes URLs with spaces' do + url_with_spaces = 'https://example.com/path with spaces' + normalized = service.send(:normalize_url, url_with_spaces) + + expect(normalized).to eq('https://example.com/path%20with%20spaces') + end + + it 'handles URLs with special characters' do + url = 'https://example.com/path?query=test value' + normalized = service.send(:normalize_url, url) + + expect(normalized).to include('https://example.com/path') + expect(normalized).not_to include(' ') + end + + it 'returns valid URLs unchanged' do + url = 'https://example.com/valid-path' + normalized = service.send(:normalize_url, url) + + expect(normalized).to eq(url) + end + end + + describe '#build_media_parameter' do + context 'when URL contains spaces' do + it 'normalizes the URL before building media parameter' do + url_with_spaces = 'https://example.com/image with spaces.jpg' + result = service.build_media_parameter(url_with_spaces, 'IMAGE') + + expect(result[:type]).to eq('image') + expect(result[:image][:link]).to eq('https://example.com/image%20with%20spaces.jpg') + end + end + + context 'when URL contains special characters in query string' do + it 'normalizes the URL correctly' do + url = 'https://example.com/video.mp4?title=My Video' + result = service.build_media_parameter(url, 'VIDEO', 'test_video') + + expect(result[:type]).to eq('video') + expect(result[:video][:link]).not_to include(' ') + end + end + + context 'when URL is already valid' do + it 'builds media parameter without changing URL' do + url = 'https://example.com/document.pdf' + result = service.build_media_parameter(url, 'DOCUMENT', 'test.pdf') + + expect(result[:type]).to eq('document') + expect(result[:document][:link]).to eq(url) + expect(result[:document][:filename]).to eq('test.pdf') + end + end + + context 'when URL is blank' do + it 'returns nil' do + result = service.build_media_parameter('', 'IMAGE') + + expect(result).to be_nil + end + end + end +end From e9c1c61fe4b5b3f27348aa30b616a1f8ad07a042 Mon Sep 17 00:00:00 2001 From: Vishnu Narayanan Date: Wed, 8 Oct 2025 17:27:52 +0530 Subject: [PATCH 05/14] chore(deps): bump uri from 1.0.3 to 1.0.4 (#12619) fix CVE-2025-61594 --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 105bf8c13..283cf3b83 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -935,7 +935,7 @@ GEM unicode-emoji (~> 4.0, >= 4.0.4) unicode-emoji (4.0.4) uniform_notifier (1.17.0) - uri (1.0.3) + uri (1.0.4) uri_template (0.7.0) valid_email2 (5.2.6) activemodel (>= 3.2) From 606adffeeb2e5a18b981cce44da2200aa06a9763 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Wed, 8 Oct 2025 18:39:51 +0530 Subject: [PATCH 06/14] fix: I18n::MissingInterpolationArgument for assignee activity messages (#12617) # Pull Request Template ## Description This PR fixes the following error: `I18n::MissingInterpolationArgument: missing interpolation argument :assignee_name in "Asignado a %{assignee_name} por %{user_name}" ({user_name: "Marketing Telpronet"} given) (I18n::MissingInterpolationArgument)` **Issue** In the Spanish locale, an `I18n::MissingInterpolationArgument` error occurred during bulk assignee operations. This happened because `assignee&.name` was returning `nil`, and the `.compact` method removed the `assignee_name` key entirely from the params. image **Solution** * Always include the `assignee_name` key with an empty string (`''`) when its value is `nil`. * Removed the `.compact` method call to ensure the interpolation key is always present. Fixes https://linear.app/chatwoot/issue/CW-5747/i18nmissinginterpolationargument-missing-interpolation-argument ## Type of change - [x] Bug fix (non-breaking change which fixes an issue) ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules Co-authored-by: Muhsin Keloth --- app/models/concerns/activity_message_handler.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/concerns/activity_message_handler.rb b/app/models/concerns/activity_message_handler.rb index 54e58b4d9..c25aba47f 100644 --- a/app/models/concerns/activity_message_handler.rb +++ b/app/models/concerns/activity_message_handler.rb @@ -106,7 +106,7 @@ module ActivityMessageHandler end def generate_assignee_change_activity_content(user_name) - params = { assignee_name: assignee&.name, user_name: user_name }.compact + params = { assignee_name: assignee&.name || '', user_name: user_name } key = assignee_id ? 'assigned' : 'removed' key = 'self_assigned' if self_assign? assignee_id I18n.t("conversations.activity.assignee.#{key}", **params) From 170ea7691f10ff4ef130ab288fdc126ff09b727d Mon Sep 17 00:00:00 2001 From: Vinay Keerthi <11478411+stonecharioteer@users.noreply.github.com> Date: Wed, 8 Oct 2025 20:23:43 +0530 Subject: [PATCH 07/14] feat: Add company model and API with tests (#12548) # Pull Request Template ## Description * add Company model with validations for name, domain, description and avatar * Add database migration fo * Implement endpoints for company CRUD operations * Add optional company relationship for contacts * Add test for models, controllers, factories and policies * Add authorization policies restricting delete to admins * support JSON API responses Please include a summary of the change and issue(s) fixed. Also, mention relevant motivation, context, and any dependencies that this change requires. Fixes #(cw-5650) ## Type of change Please delete options that are not relevant. - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality not to work as expected) - [ ] This change requires a documentation update ## How Has This Been Tested? Tests are implemented using `RSpec` ``` $ bundle exec rails db:migrate $ bundle exec rspec spec/models/company_spec.rb spec/controllers/api/v1/accounts/companies_controller_spec.rb ``` ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --- app/models/contact.rb | 3 + app/models/super_admin.rb | 2 +- app/models/user.rb | 2 +- config/locales/en.yml | 3 + config/routes.rb | 1 + db/migrate/20250929105219_create_companies.rb | 14 ++ .../20250929132305_add_company_to_contacts.rb | 5 + db/schema.rb | 14 ++ .../api/v1/accounts/companies_controller.rb | 40 +++++ enterprise/app/models/company.rb | 33 ++++ .../app/models/enterprise/concerns/account.rb | 1 + .../app/models/enterprise/concerns/contact.rb | 6 + enterprise/app/policies/company_policy.rb | 21 +++ .../accounts/companies/_company.json.jbuilder | 7 + .../accounts/companies/create.json.jbuilder | 3 + .../v1/accounts/companies/index.json.jbuilder | 5 + .../v1/accounts/companies/show.json.jbuilder | 3 + .../accounts/companies/update.json.jbuilder | 3 + lib/limits.rb | 2 + .../v1/accounts/companies_controller_spec.rb | 141 ++++++++++++++++++ spec/enterprise/models/company_spec.rb | 38 +++++ .../policies/company_policy_spec.rb | 33 ++++ spec/factories/companies.rb | 20 +++ 23 files changed, 398 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20250929105219_create_companies.rb create mode 100644 db/migrate/20250929132305_add_company_to_contacts.rb create mode 100644 enterprise/app/controllers/api/v1/accounts/companies_controller.rb create mode 100644 enterprise/app/models/company.rb create mode 100644 enterprise/app/models/enterprise/concerns/contact.rb create mode 100644 enterprise/app/policies/company_policy.rb create mode 100644 enterprise/app/views/api/v1/accounts/companies/_company.json.jbuilder create mode 100644 enterprise/app/views/api/v1/accounts/companies/create.json.jbuilder create mode 100644 enterprise/app/views/api/v1/accounts/companies/index.json.jbuilder create mode 100644 enterprise/app/views/api/v1/accounts/companies/show.json.jbuilder create mode 100644 enterprise/app/views/api/v1/accounts/companies/update.json.jbuilder create mode 100644 spec/enterprise/controllers/api/v1/accounts/companies_controller_spec.rb create mode 100644 spec/enterprise/models/company_spec.rb create mode 100644 spec/enterprise/policies/company_policy_spec.rb create mode 100644 spec/factories/companies.rb diff --git a/app/models/contact.rb b/app/models/contact.rb index a3570b2af..0dc92b51e 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -21,6 +21,7 @@ # created_at :datetime not null # updated_at :datetime not null # account_id :integer not null +# company_id :bigint # # Indexes # @@ -28,6 +29,7 @@ # index_contacts_on_account_id_and_contact_type (account_id,contact_type) # index_contacts_on_account_id_and_last_activity_at (account_id,last_activity_at DESC NULLS LAST) # index_contacts_on_blocked (blocked) +# index_contacts_on_company_id (company_id) # index_contacts_on_lower_email_account_id (lower((email)::text), account_id) # index_contacts_on_name_email_phone_number_identifier (name,email,phone_number,identifier) USING gin # index_contacts_on_nonempty_fields (account_id,email,phone_number,identifier) WHERE (((email)::text <> ''::text) OR ((phone_number)::text <> ''::text) OR ((identifier)::text <> ''::text)) @@ -244,3 +246,4 @@ class Contact < ApplicationRecord Rails.configuration.dispatcher.dispatch(CONTACT_DELETED, Time.zone.now, contact: self) end end +Contact.include_mod_with('Concerns::Contact') diff --git a/app/models/super_admin.rb b/app/models/super_admin.rb index 316d60c7b..9bcee9b8a 100644 --- a/app/models/super_admin.rb +++ b/app/models/super_admin.rb @@ -19,7 +19,7 @@ # message_signature :text # name :string not null # otp_backup_codes :text -# otp_required_for_login :boolean default(FALSE), not null +# otp_required_for_login :boolean default(FALSE) # otp_secret :string # provider :string default("email"), not null # pubsub_token :string diff --git a/app/models/user.rb b/app/models/user.rb index 4923d0a35..cc25357f6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -19,7 +19,7 @@ # message_signature :text # name :string not null # otp_backup_codes :text -# otp_required_for_login :boolean default(FALSE), not null +# otp_required_for_login :boolean default(FALSE) # otp_secret :string # provider :string default("email"), not null # pubsub_token :string diff --git a/config/locales/en.yml b/config/locales/en.yml index 0c76f8beb..6afab9253 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -76,6 +76,9 @@ en: invalid: Invalid email phone_number: invalid: should be in e164 format + companies: + domain: + invalid: must be a valid domain name categories: locale: unique: should be unique in the category and portal diff --git a/config/routes.rb b/config/routes.rb index 757d20620..639c51da7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -153,6 +153,7 @@ Rails.application.routes.draw do end end + resources :companies, only: [:index, :show, :create, :update, :destroy] resources :contacts, only: [:index, :show, :update, :create, :destroy] do collection do get :active diff --git a/db/migrate/20250929105219_create_companies.rb b/db/migrate/20250929105219_create_companies.rb new file mode 100644 index 000000000..10fa415c1 --- /dev/null +++ b/db/migrate/20250929105219_create_companies.rb @@ -0,0 +1,14 @@ +class CreateCompanies < ActiveRecord::Migration[7.1] + def change + create_table :companies do |t| + t.string :name, null: false + t.string :domain + t.text :description + t.references :account, null: false + + t.timestamps + end + add_index :companies, [:name, :account_id] + add_index :companies, [:domain, :account_id] + end +end diff --git a/db/migrate/20250929132305_add_company_to_contacts.rb b/db/migrate/20250929132305_add_company_to_contacts.rb new file mode 100644 index 000000000..e79de34b8 --- /dev/null +++ b/db/migrate/20250929132305_add_company_to_contacts.rb @@ -0,0 +1,5 @@ +class AddCompanyToContacts < ActiveRecord::Migration[7.1] + def change + add_reference :contacts, :company, null: true + end +end diff --git a/db/schema.rb b/db/schema.rb index f31d05cc3..c0d539f6a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -570,6 +570,18 @@ ActiveRecord::Schema[7.1].define(version: 2025_10_03_091242) do t.index ["phone_number"], name: "index_channel_whatsapp_on_phone_number", unique: true end + create_table "companies", force: :cascade do |t| + t.string "name", null: false + t.string "domain" + t.text "description" + t.bigint "account_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["account_id"], name: "index_companies_on_account_id" + t.index ["domain", "account_id"], name: "index_companies_on_domain_and_account_id" + t.index ["name", "account_id"], name: "index_companies_on_name_and_account_id" + end + create_table "contact_inboxes", force: :cascade do |t| t.bigint "contact_id" t.bigint "inbox_id" @@ -602,6 +614,7 @@ ActiveRecord::Schema[7.1].define(version: 2025_10_03_091242) do t.string "location", default: "" t.string "country_code", default: "" t.boolean "blocked", default: false, null: false + t.bigint "company_id" t.index "lower((email)::text), account_id", name: "index_contacts_on_lower_email_account_id" t.index ["account_id", "contact_type"], name: "index_contacts_on_account_id_and_contact_type" t.index ["account_id", "email", "phone_number", "identifier"], name: "index_contacts_on_nonempty_fields", where: "(((email)::text <> ''::text) OR ((phone_number)::text <> ''::text) OR ((identifier)::text <> ''::text))" @@ -609,6 +622,7 @@ ActiveRecord::Schema[7.1].define(version: 2025_10_03_091242) do t.index ["account_id"], name: "index_contacts_on_account_id" t.index ["account_id"], name: "index_resolved_contact_account_id", where: "(((email)::text <> ''::text) OR ((phone_number)::text <> ''::text) OR ((identifier)::text <> ''::text))" t.index ["blocked"], name: "index_contacts_on_blocked" + t.index ["company_id"], name: "index_contacts_on_company_id" t.index ["email", "account_id"], name: "uniq_email_per_account_contact", unique: true t.index ["identifier", "account_id"], name: "uniq_identifier_per_account_contact", unique: true t.index ["name", "email", "phone_number", "identifier"], name: "index_contacts_on_name_email_phone_number_identifier", opclass: :gin_trgm_ops, using: :gin diff --git a/enterprise/app/controllers/api/v1/accounts/companies_controller.rb b/enterprise/app/controllers/api/v1/accounts/companies_controller.rb new file mode 100644 index 000000000..a33e4c6b2 --- /dev/null +++ b/enterprise/app/controllers/api/v1/accounts/companies_controller.rb @@ -0,0 +1,40 @@ +class Api::V1::Accounts::CompaniesController < Api::V1::Accounts::EnterpriseAccountsController + before_action :check_authorization + before_action :fetch_company, only: [:show, :update, :destroy] + + def index + @companies = Current.account.companies.ordered_by_name + end + + def show; end + + def create + @company = Current.account.companies.build(company_params) + @company.save! + end + + def update + @company.update!(company_params) + end + + def destroy + @company.destroy! + head :ok + end + + private + + def check_authorization + raise Pundit::NotAuthorizedError unless ChatwootApp.enterprise? + + authorize(Company) + end + + def fetch_company + @company = Current.account.companies.find(params[:id]) + end + + def company_params + params.require(:company).permit(:name, :domain, :description, :avatar) + end +end diff --git a/enterprise/app/models/company.rb b/enterprise/app/models/company.rb new file mode 100644 index 000000000..764cb2a9c --- /dev/null +++ b/enterprise/app/models/company.rb @@ -0,0 +1,33 @@ +# == Schema Information +# +# Table name: companies +# +# id :bigint not null, primary key +# description :text +# domain :string +# name :string not null +# created_at :datetime not null +# updated_at :datetime not null +# account_id :bigint not null +# +# Indexes +# +# index_companies_on_account_id (account_id) +# index_companies_on_domain_and_account_id (domain,account_id) +# index_companies_on_name_and_account_id (name,account_id) +# +class Company < ApplicationRecord + include Avatarable + validates :account_id, presence: true + validates :name, presence: true, length: { maximum: Limits::COMPANY_NAME_LENGTH_LIMIT } + validates :domain, allow_blank: true, format: { + with: /\A[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)+\z/, + message: I18n.t('errors.companies.domain.invalid') + } + validates :description, length: { maximum: Limits::COMPANY_DESCRIPTION_LENGTH_LIMIT } + + belongs_to :account + has_many :contacts, dependent: :nullify + + scope :ordered_by_name, -> { order(:name) } +end diff --git a/enterprise/app/models/enterprise/concerns/account.rb b/enterprise/app/models/enterprise/concerns/account.rb index b82d84b0a..cae32e86c 100644 --- a/enterprise/app/models/enterprise/concerns/account.rb +++ b/enterprise/app/models/enterprise/concerns/account.rb @@ -13,6 +13,7 @@ module Enterprise::Concerns::Account has_many :captain_custom_tools, dependent: :destroy_async, class_name: 'Captain::CustomTool' has_many :copilot_threads, dependent: :destroy_async + has_many :companies, dependent: :destroy_async has_many :voice_channels, dependent: :destroy_async, class_name: '::Channel::Voice' has_one :saml_settings, dependent: :destroy_async, class_name: 'AccountSamlSettings' diff --git a/enterprise/app/models/enterprise/concerns/contact.rb b/enterprise/app/models/enterprise/concerns/contact.rb new file mode 100644 index 000000000..9139fc67e --- /dev/null +++ b/enterprise/app/models/enterprise/concerns/contact.rb @@ -0,0 +1,6 @@ +module Enterprise::Concerns::Contact + extend ActiveSupport::Concern + included do + belongs_to :company, optional: true + end +end diff --git a/enterprise/app/policies/company_policy.rb b/enterprise/app/policies/company_policy.rb new file mode 100644 index 000000000..1c252967c --- /dev/null +++ b/enterprise/app/policies/company_policy.rb @@ -0,0 +1,21 @@ +class CompanyPolicy < ApplicationPolicy + def index? + true + end + + def show? + true + end + + def create? + true + end + + def update? + true + end + + def destroy? + @account_user.administrator? + end +end diff --git a/enterprise/app/views/api/v1/accounts/companies/_company.json.jbuilder b/enterprise/app/views/api/v1/accounts/companies/_company.json.jbuilder new file mode 100644 index 000000000..71c4d3b9b --- /dev/null +++ b/enterprise/app/views/api/v1/accounts/companies/_company.json.jbuilder @@ -0,0 +1,7 @@ +json.id company.id +json.name company.name +json.domain company.domain +json.description company.description +json.avatar_url company.avatar_url +json.created_at company.created_at +json.updated_at company.updated_at diff --git a/enterprise/app/views/api/v1/accounts/companies/create.json.jbuilder b/enterprise/app/views/api/v1/accounts/companies/create.json.jbuilder new file mode 100644 index 000000000..b3bc80cfd --- /dev/null +++ b/enterprise/app/views/api/v1/accounts/companies/create.json.jbuilder @@ -0,0 +1,3 @@ +json.payload do + json.partial! 'company', company: @company +end diff --git a/enterprise/app/views/api/v1/accounts/companies/index.json.jbuilder b/enterprise/app/views/api/v1/accounts/companies/index.json.jbuilder new file mode 100644 index 000000000..e68bd8543 --- /dev/null +++ b/enterprise/app/views/api/v1/accounts/companies/index.json.jbuilder @@ -0,0 +1,5 @@ +json.payload do + json.array! @companies do |company| + json.partial! 'company', company: company + end +end diff --git a/enterprise/app/views/api/v1/accounts/companies/show.json.jbuilder b/enterprise/app/views/api/v1/accounts/companies/show.json.jbuilder new file mode 100644 index 000000000..b3bc80cfd --- /dev/null +++ b/enterprise/app/views/api/v1/accounts/companies/show.json.jbuilder @@ -0,0 +1,3 @@ +json.payload do + json.partial! 'company', company: @company +end diff --git a/enterprise/app/views/api/v1/accounts/companies/update.json.jbuilder b/enterprise/app/views/api/v1/accounts/companies/update.json.jbuilder new file mode 100644 index 000000000..b3bc80cfd --- /dev/null +++ b/enterprise/app/views/api/v1/accounts/companies/update.json.jbuilder @@ -0,0 +1,3 @@ +json.payload do + json.partial! 'company', company: @company +end diff --git a/lib/limits.rb b/lib/limits.rb index 5da178bf4..c0fc03806 100644 --- a/lib/limits.rb +++ b/lib/limits.rb @@ -6,6 +6,8 @@ module Limits GREETING_MESSAGE_MAX_LENGTH = 10_000 CATEGORIES_PER_PAGE = 1000 AUTO_ASSIGNMENT_BULK_LIMIT = 100 + COMPANY_NAME_LENGTH_LIMIT = 100 + COMPANY_DESCRIPTION_LENGTH_LIMIT = 1000 MAX_CUSTOM_FILTERS_PER_USER = 1000 def self.conversation_message_per_minute_limit diff --git a/spec/enterprise/controllers/api/v1/accounts/companies_controller_spec.rb b/spec/enterprise/controllers/api/v1/accounts/companies_controller_spec.rb new file mode 100644 index 000000000..f62991ad1 --- /dev/null +++ b/spec/enterprise/controllers/api/v1/accounts/companies_controller_spec.rb @@ -0,0 +1,141 @@ +require 'rails_helper' + +RSpec.describe 'Companies API', type: :request do + let(:account) { create(:account) } + + describe 'GET /api/v1/accounts/{account.id}/companies' do + context 'when it is an unauthenticated user' do + it 'returns unauthorized' do + get "/api/v1/accounts/#{account.id}/companies" + expect(response).to have_http_status(:unauthorized) + end + end + + context 'when it is an authenticated user' do + let(:admin) { create(:user, account: account, role: :administrator) } + let!(:company1) { create(:company, name: 'Company 1', account: account) } + let!(:company2) { create(:company, account: account) } + + it 'returns all companies' do + get "/api/v1/accounts/#{account.id}/companies", + headers: admin.create_new_auth_token, + as: :json + expect(response).to have_http_status(:success) + response_body = response.parsed_body + expect(response_body['payload'].size).to eq(2) + expect(response_body['payload'].map { |c| c['name'] }).to contain_exactly(company1.name, company2.name) + end + end + end + + describe 'GET /api/v1/accounts/{account.id}/companies/{id}' do + context 'when it is an authenticated user' do + let(:admin) { create(:user, account: account, role: :administrator) } + let(:company) { create(:company, account: account) } + + it 'returns the company' do + get "/api/v1/accounts/#{account.id}/companies/#{company.id}", + headers: admin.create_new_auth_token, + as: :json + expect(response).to have_http_status(:success) + response_body = response.parsed_body + expect(response_body['payload']['name']).to eq(company.name) + expect(response_body['payload']['id']).to eq(company.id) + end + end + end + + describe 'POST /api/v1/accounts/{account.id}/companies' do + context 'when it is an authenticated user' do + let(:admin) { create(:user, account: account, role: :administrator) } + let(:valid_params) do + { + company: { + name: 'New Company', + domain: 'newcompany.com', + description: 'A new company' + } + } + end + + it 'creates a new company' do + expect do + post "/api/v1/accounts/#{account.id}/companies", + params: valid_params, + headers: admin.create_new_auth_token, + as: :json + end.to change(Company, :count).by(1) + + expect(response).to have_http_status(:success) + response_body = response.parsed_body + expect(response_body['payload']['name']).to eq('New Company') + expect(response_body['payload']['domain']).to eq('newcompany.com') + end + + it 'returns error for invalid params' do + invalid_params = { company: { name: '' } } + + post "/api/v1/accounts/#{account.id}/companies", + params: invalid_params, + headers: admin.create_new_auth_token, + as: :json + expect(response).to have_http_status(:unprocessable_entity) + end + end + end + + describe 'PATCH /api/v1/accounts/{account.id}/companies/{id}' do + context 'when it is an authenticated user' do + let(:admin) { create(:user, account: account, role: :administrator) } + let(:company) { create(:company, account: account) } + let(:update_params) do + { + company: { + name: 'Updated Company Name', + domain: 'updated.com' + } + } + end + + it 'updates the company' do + patch "/api/v1/accounts/#{account.id}/companies/#{company.id}", + params: update_params, + headers: admin.create_new_auth_token, + as: :json + expect(response).to have_http_status(:success) + response_body = response.parsed_body + expect(response_body['payload']['name']).to eq('Updated Company Name') + expect(response_body['payload']['domain']).to eq('updated.com') + end + end + end + + describe 'DELETE /api/v1/accounts/{account.id}/companies/{id}' do + context 'when it is an authenticated administrator' do + let(:admin) { create(:user, account: account, role: :administrator) } + let(:company) { create(:company, account: account) } + + it 'deletes the company' do + company + expect do + delete "/api/v1/accounts/#{account.id}/companies/#{company.id}", + headers: admin.create_new_auth_token, + as: :json + end.to change(Company, :count).by(-1) + expect(response).to have_http_status(:ok) + end + end + + context 'when it is a regular agent' do + let(:agent) { create(:user, account: account, role: :agent) } + let(:company) { create(:company, account: account) } + + it 'returns unauthorized' do + delete "/api/v1/accounts/#{account.id}/companies/#{company.id}", + headers: agent.create_new_auth_token, + as: :json + expect(response).to have_http_status(:unauthorized) + end + end + end +end diff --git a/spec/enterprise/models/company_spec.rb b/spec/enterprise/models/company_spec.rb new file mode 100644 index 000000000..820e6ee7d --- /dev/null +++ b/spec/enterprise/models/company_spec.rb @@ -0,0 +1,38 @@ +require 'rails_helper' + +RSpec.describe Company, type: :model do + context 'with validations' do + it { is_expected.to validate_presence_of(:account_id) } + it { is_expected.to validate_presence_of(:name) } + it { is_expected.to validate_length_of(:name).is_at_most(100) } + it { is_expected.to validate_length_of(:description).is_at_most(1000) } + + describe 'domain validation' do + it { is_expected.to allow_value('example.com').for(:domain) } + it { is_expected.to allow_value('sub.example.com').for(:domain) } + it { is_expected.to allow_value('').for(:domain) } + it { is_expected.to allow_value(nil).for(:domain) } + it { is_expected.not_to allow_value('invalid-domain').for(:domain) } + it { is_expected.not_to allow_value('.example.com').for(:domain) } + end + end + + context 'with associations' do + it { is_expected.to belong_to(:account) } + it { is_expected.to have_many(:contacts).dependent(:nullify) } + end + + describe 'scopes' do + let(:account) { create(:account) } + let!(:company_b) { create(:company, name: 'B Company', account: account) } + let!(:company_a) { create(:company, name: 'A Company', account: account) } + let!(:company_c) { create(:company, name: 'C Company', account: account) } + + describe '.ordered_by_name' do + it 'orders companies by name alphabetically' do + companies = described_class.where(account: account).ordered_by_name + expect(companies.map(&:name)).to eq([company_a.name, company_b.name, company_c.name]) + end + end + end +end diff --git a/spec/enterprise/policies/company_policy_spec.rb b/spec/enterprise/policies/company_policy_spec.rb new file mode 100644 index 000000000..9f7d9f0cc --- /dev/null +++ b/spec/enterprise/policies/company_policy_spec.rb @@ -0,0 +1,33 @@ +require 'rails_helper' + +RSpec.describe CompanyPolicy, type: :policy do + subject(:company_policy) { described_class } + + let(:account) { create(:account) } + let(:administrator) { create(:user, :administrator, account: account) } + let(:agent) { create(:user, account: account) } + let(:company) { create(:company, account: account) } + + let(:administrator_context) { { user: administrator, account: account, account_user: account.account_users.first } } + let(:agent_context) { { user: agent, account: account, account_user: account.account_users.first } } + + permissions :index?, :show?, :create?, :update? do + context 'when administrator' do + it { expect(company_policy).to permit(administrator_context, company) } + end + + context 'when agent' do + it { expect(company_policy).to permit(agent_context, company) } + end + end + + permissions :destroy? do + context 'when administrator' do + it { expect(company_policy).to permit(administrator_context, company) } + end + + context 'when agent' do + it { expect(company_policy).not_to permit(agent_context, company) } + end + end +end diff --git a/spec/factories/companies.rb b/spec/factories/companies.rb new file mode 100644 index 000000000..bdf7e9e9f --- /dev/null +++ b/spec/factories/companies.rb @@ -0,0 +1,20 @@ +FactoryBot.define do + factory :company do + sequence(:name) { |n| "Company #{n}" } + sequence(:domain) { |n| "company#{n}.com" } + description { 'A sample company description' } + account + + trait :without_domain do + domain { nil } + end + + trait :with_avatar do + avatar { fixture_file_upload(Rails.root.join('spec/assets/avatar.png'), 'image/png') } + end + + trait :with_long_description do + description { 'A' * 500 } + end + end +end From 7c5bb343c67ae371ee47eeb4fadb354794a0505d Mon Sep 17 00:00:00 2001 From: Vishnu Narayanan Date: Thu, 9 Oct 2025 16:04:50 +0530 Subject: [PATCH 08/14] fix: Optimize message reindexing to reduce sidekiq job creation (#12618) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes searchkick callback behavior to check `should_index?` before creating reindex jobs, preventing unnecessary job creation for messages that don't need indexing (activity messages, unpaid accounts, etc.). Previously, `callbacks: :async` created reindex jobs for all messages (~5,100/min or 7.3M/day in production), which were then filtered by `should_index?` inside the job worker - resulting in 98% wasted jobs, Redis memory pressure, and avoidable p0 alerts. Now, `should_index?` is checked before job creation via `after_commit` callback, reducing job creation to actual incoming/outgoing messages from paid accounts. Changes: - Disable automatic searchkick callbacks - Add manual `after_commit` callback with `should_index?` condition - Add specs to verify callback behavior Expected impact: - 98% reduction in sidekiq job creation (~7.3M → ~150K jobs/day) - Reduced redis memory usage - Same async indexing behavior for eligible messages --- app/models/message.rb | 7 ++++- spec/models/message_spec.rb | 56 +++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/app/models/message.rb b/app/models/message.rb index dbab19df3..2079e31a9 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -39,7 +39,7 @@ # class Message < ApplicationRecord - searchkick callbacks: :async if ChatwootApp.advanced_search_allowed? + searchkick callbacks: false if ChatwootApp.advanced_search_allowed? include MessageFilterHelpers include Liquidable @@ -135,6 +135,7 @@ class Message < ApplicationRecord after_create_commit :execute_after_create_commit_callbacks after_update_commit :dispatch_update_event + after_commit :reindex_for_search, if: :should_index?, on: [:create, :update] def channel_token @token ||= inbox.channel.try(:page_access_token) @@ -436,6 +437,10 @@ class Message < ApplicationRecord conversation.update_columns(last_activity_at: created_at) # rubocop:enable Rails/SkipsModelValidations end + + def reindex_for_search + reindex(mode: :async) + end end Message.prepend_mod_with('Message') diff --git a/spec/models/message_spec.rb b/spec/models/message_spec.rb index a0bd48e39..c5e080677 100644 --- a/spec/models/message_spec.rb +++ b/spec/models/message_spec.rb @@ -4,6 +4,12 @@ require 'rails_helper' require Rails.root.join 'spec/models/concerns/liquidable_shared.rb' RSpec.describe Message do + before do + # rubocop:disable RSpec/AnyInstance + allow_any_instance_of(described_class).to receive(:reindex_for_search).and_return(true) + # rubocop:enable RSpec/AnyInstance + end + context 'with validations' do it { is_expected.to validate_presence_of(:inbox_id) } it { is_expected.to validate_presence_of(:conversation_id) } @@ -678,4 +684,54 @@ RSpec.describe Message do end end end + + describe '#reindex_for_search callback' do + let(:account) { create(:account) } + let(:conversation) { create(:conversation, account: account) } + + before do + allow(ChatwootApp).to receive(:advanced_search_allowed?).and_return(true) + account.enable_features('advanced_search_indexing') + end + + context 'when message should be indexed' do + it 'calls reindex_for_search for incoming message on create' do + message = build(:message, conversation: conversation, account: account, message_type: :incoming) + expect(message).to receive(:reindex_for_search) + message.save! + end + + it 'calls reindex_for_search for outgoing message on update' do + # rubocop:disable RSpec/AnyInstance + allow_any_instance_of(described_class).to receive(:reindex_for_search).and_return(true) + # rubocop:enable RSpec/AnyInstance + message = create(:message, conversation: conversation, account: account, message_type: :outgoing) + expect(message).to receive(:reindex_for_search).and_return(true) + message.update!(content: 'Updated content') + end + end + + context 'when message should not be indexed' do + it 'does not call reindex_for_search for activity message' do + message = build(:message, conversation: conversation, account: account, message_type: :activity) + expect(message).not_to receive(:reindex_for_search) + message.save! + end + + it 'does not call reindex_for_search for unpaid account on cloud' do + allow(ChatwootApp).to receive(:chatwoot_cloud?).and_return(true) + account.disable_features('advanced_search_indexing') + message = build(:message, conversation: conversation, account: account, message_type: :incoming) + expect(message).not_to receive(:reindex_for_search) + message.save! + end + + it 'does not call reindex_for_search when advanced search is not allowed' do + allow(ChatwootApp).to receive(:advanced_search_allowed?).and_return(false) + message = build(:message, conversation: conversation, account: account, message_type: :incoming) + expect(message).not_to receive(:reindex_for_search) + message.save! + end + end + end end From f89ed562586a27dfc13877c12ac519a8b26245ca Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 9 Oct 2025 16:50:28 +0530 Subject: [PATCH 09/14] feat: update rack version (#12628) Fixes CI failing at bundle audit for a [rack vulnerability](https://github.com/rack/rack/security/advisories/GHSA-wpv5-97wm-hp9c) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 283cf3b83..18eeffc3b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -644,7 +644,7 @@ GEM activesupport (>= 3.0.0) raabro (1.4.0) racc (1.8.1) - rack (3.2.0) + rack (3.2.2) rack-attack (6.7.0) rack (>= 1.0, < 4) rack-contrib (2.5.0) From 6cc69f444b83d4a0db11f14b8ff1ee75510daab8 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Thu, 9 Oct 2025 16:51:25 +0530 Subject: [PATCH 10/14] chore: Include 11:59 PM slot in business hours display (#12610) --- .../settings/inbox/components/BusinessDay.vue | 13 +++-- .../settings/inbox/helpers/businessHour.js | 8 +++ .../inbox/helpers/specs/businessHour.spec.js | 58 ++++++++++++++++++- 3 files changed, 70 insertions(+), 9 deletions(-) diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/BusinessDay.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/BusinessDay.vue index 14ba5b371..b90ea92ad 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/BusinessDay.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/BusinessDay.vue @@ -96,11 +96,12 @@ export default { return parse(this.toTime, 'hh:mm a', new Date()); }, totalHours() { - if (this.timeSlot.openAllDay) { - return 24; - } - const totalHours = differenceInMinutes(this.toDate, this.fromDate) / 60; - return totalHours; + if (this.timeSlot.openAllDay) return '24h'; + + const totalMinutes = differenceInMinutes(this.toDate, this.fromDate); + const [h, m] = [Math.floor(totalMinutes / 60), totalMinutes % 60]; + + return [h && `${h}h`, m && `${m}m`].filter(Boolean).join(' ') || '0m'; }, hasError() { return !this.timeSlot.valid; @@ -211,7 +212,7 @@ export default { v-if="isDayEnabled && !hasError" class="label bg-n-brand/10 dark:bg-n-brand/30 text-n-blue-text text-xs inline-block px-2 py-1 rounded-lg cursor-default whitespace-nowrap" > - {{ totalHours }} {{ $t('INBOX_MGMT.BUSINESS_HOURS.DAY.HOURS') }} + {{ totalHours }} diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/businessHour.js b/app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/businessHour.js index 69089bf3c..b73368035 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/businessHour.js +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/businessHour.js @@ -53,6 +53,7 @@ export const generateTimeSlots = (step = 15) => { Generates a list of time strings from 12:00 AM to next 24 hours. Each new string will be generated by adding `step` minutes to the previous one. The list is generated by starting with a random day and adding step minutes till end of the same day. + Always includes 11:59 PM as the final slot to complete the day. */ const date = new Date(1970, 1, 1); const slots = []; @@ -66,6 +67,13 @@ export const generateTimeSlots = (step = 15) => { ); date.setMinutes(date.getMinutes() + step); } + + // Always add 11:59 PM as the final slot if it's not already included + const lastSlot = '11:59 PM'; + if (!slots.includes(lastSlot)) { + slots.push(lastSlot); + } + return slots; }; diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/specs/businessHour.spec.js b/app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/specs/businessHour.spec.js index 077337ae6..c9cfa2d24 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/specs/businessHour.spec.js +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/specs/businessHour.spec.js @@ -7,10 +7,19 @@ import { } from '../businessHour'; describe('#generateTimeSlots', () => { - it('returns correct number of time slots', () => { - expect(generateTimeSlots(15).length).toStrictEqual((60 / 15) * 24); + it('returns correct number of time slots for 15-minute intervals', () => { + const slots = generateTimeSlots(15); + // 24 hours * 4 slots per hour + 1 for 11:59 PM = 97 slots + expect(slots.length).toStrictEqual(97); }); - it('returns correct time slots', () => { + + it('returns correct number of time slots for 30-minute intervals', () => { + const slots = generateTimeSlots(30); + // 24 hours * 2 slots per hour + 1 for 11:59 PM = 49 slots + expect(slots.length).toStrictEqual(49); + }); + + it('returns correct time slots for 4-hour intervals', () => { expect(generateTimeSlots(240)).toStrictEqual([ '12:00 AM', '04:00 AM', @@ -18,8 +27,51 @@ describe('#generateTimeSlots', () => { '12:00 PM', '04:00 PM', '08:00 PM', + '11:59 PM', ]); }); + + it('always starts with 12:00 AM', () => { + expect(generateTimeSlots(15)[0]).toStrictEqual('12:00 AM'); + expect(generateTimeSlots(30)[0]).toStrictEqual('12:00 AM'); + expect(generateTimeSlots(60)[0]).toStrictEqual('12:00 AM'); + }); + + it('always ends with 11:59 PM', () => { + const slots15 = generateTimeSlots(15); + const slots30 = generateTimeSlots(30); + const slots60 = generateTimeSlots(60); + + expect(slots15[slots15.length - 1]).toStrictEqual('11:59 PM'); + expect(slots30[slots30.length - 1]).toStrictEqual('11:59 PM'); + expect(slots60[slots60.length - 1]).toStrictEqual('11:59 PM'); + }); + + it('includes 11:59 PM even when it would not be in regular intervals', () => { + const slots = generateTimeSlots(30); + expect(slots).toContain('11:59 PM'); + expect(slots).toContain('11:30 PM'); // Regular interval + }); + + it('does not duplicate 11:59 PM if it already exists in regular intervals', () => { + // Test with a step that would naturally include 11:59 PM + const slots = generateTimeSlots(1); // 1-minute intervals + const count11_59 = slots.filter(slot => slot === '11:59 PM').length; + expect(count11_59).toStrictEqual(1); + }); + + it('generates correct time format', () => { + const slots = generateTimeSlots(60); + expect(slots).toContain('01:00 AM'); + expect(slots).toContain('12:00 PM'); + expect(slots).toContain('01:00 PM'); + expect(slots).toContain('11:00 PM'); + }); + + it('handles edge case with very large step', () => { + const slots = generateTimeSlots(1440); // 24 hours + expect(slots).toStrictEqual(['12:00 AM', '11:59 PM']); + }); }); describe('#getTime', () => { From 6829328182df37a66e4afe5cff50bf60ab8b87d2 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 9 Oct 2025 18:19:20 +0530 Subject: [PATCH 11/14] fix(filters): correct null matching logic [CW-5741] (#12627) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR fixes a bug came from assuming the old null check only mattered for the `is_not_present` filter. The fix keeps `not_equal_to` working but lets each operator decide what to do with `null`. Presence filters look at a shared `isNullish` flag, text filters still rely on `contains`, and date filters skip conversations with no timestamp. The new spec covers the null-assignee scenario for both `equal_to` and `not_equal_to` so we don’t miss this again. --- .../conversations/helpers/filterHelpers.js | 19 +++-- .../helpers/specs/filterHelpers.spec.js | 78 +++++++++++++++++++ 2 files changed, 90 insertions(+), 7 deletions(-) diff --git a/app/javascript/dashboard/store/modules/conversations/helpers/filterHelpers.js b/app/javascript/dashboard/store/modules/conversations/helpers/filterHelpers.js index 3d627e3ef..96f4a0123 100644 --- a/app/javascript/dashboard/store/modules/conversations/helpers/filterHelpers.js +++ b/app/javascript/dashboard/store/modules/conversations/helpers/filterHelpers.js @@ -154,7 +154,10 @@ const equalTo = (filterValue, conversationValue) => { * It only works with string values and returns false for non-string types. */ const contains = (filterValue, conversationValue) => { - if (typeof conversationValue === 'string') { + if ( + typeof conversationValue === 'string' && + typeof filterValue === 'string' + ) { return conversationValue.toLowerCase().includes(filterValue.toLowerCase()); } return false; @@ -190,10 +193,8 @@ const compareDates = (conversationValue, filterValue, compareFn) => { const matchesCondition = (conversationValue, filter) => { const { filter_operator: filterOperator, values } = filter; - // Handle null/undefined values - if (conversationValue === null || conversationValue === undefined) { - return filterOperator === 'is_not_present'; - } + const isNullish = + conversationValue === null || conversationValue === undefined; const filterValue = Array.isArray(values) ? values.map(resolveValue) @@ -213,10 +214,10 @@ const matchesCondition = (conversationValue, filter) => { return !contains(filterValue, conversationValue); case 'is_present': - return true; // We already handled null/undefined above + return !isNullish; case 'is_not_present': - return false; // We already handled null/undefined above + return isNullish; case 'is_greater_than': return compareDates(conversationValue, filterValue, (a, b) => a > b); @@ -225,6 +226,10 @@ const matchesCondition = (conversationValue, filter) => { return compareDates(conversationValue, filterValue, (a, b) => a < b); case 'days_before': { + if (isNullish) { + return false; + } + const today = new Date(); const daysInMilliseconds = filterValue * 24 * 60 * 60 * 1000; const targetDate = new Date(today.getTime() - daysInMilliseconds); diff --git a/app/javascript/dashboard/store/modules/conversations/helpers/specs/filterHelpers.spec.js b/app/javascript/dashboard/store/modules/conversations/helpers/specs/filterHelpers.spec.js index 096481c69..db1017407 100644 --- a/app/javascript/dashboard/store/modules/conversations/helpers/specs/filterHelpers.spec.js +++ b/app/javascript/dashboard/store/modules/conversations/helpers/specs/filterHelpers.spec.js @@ -192,6 +192,32 @@ describe('filterHelpers', () => { expect(matchesFilters(conversation, filters)).toBe(true); }); + it('should not match conversation with equal_to operator when assignee is null', () => { + const conversation = { meta: { assignee: null } }; + const filters = [ + { + attribute_key: 'assignee_id', + filter_operator: 'equal_to', + values: { id: 1, name: 'John Doe' }, + query_operator: 'and', + }, + ]; + expect(matchesFilters(conversation, filters)).toBe(false); + }); + + it('should match conversation with not_equal_to operator when assignee is null', () => { + const conversation = { meta: { assignee: null } }; + const filters = [ + { + attribute_key: 'assignee_id', + filter_operator: 'not_equal_to', + values: { id: 1, name: 'John Doe' }, + query_operator: 'and', + }, + ]; + expect(matchesFilters(conversation, filters)).toBe(true); + }); + it('should match conversation with is_not_present operator for assignee_id', () => { const conversation = { meta: { assignee: null } }; const filters = [ @@ -285,6 +311,58 @@ describe('filterHelpers', () => { expect(matchesFilters(conversation, filters)).toBe(false); }); + it('should not match contains operator when display_id is null', () => { + const conversation = { id: null }; + const filters = [ + { + attribute_key: 'display_id', + filter_operator: 'contains', + values: '234', + query_operator: 'and', + }, + ]; + expect(matchesFilters(conversation, filters)).toBe(false); + }); + + it('should not match contains operator when filter value is null', () => { + const conversation = { id: '12345' }; + const filters = [ + { + attribute_key: 'display_id', + filter_operator: 'contains', + values: null, + query_operator: 'and', + }, + ]; + expect(matchesFilters(conversation, filters)).toBe(false); + }); + + it('should match does_not_contain operator when display_id is null', () => { + const conversation = { id: null }; + const filters = [ + { + attribute_key: 'display_id', + filter_operator: 'does_not_contain', + values: '234', + query_operator: 'and', + }, + ]; + expect(matchesFilters(conversation, filters)).toBe(true); + }); + + it('should match does_not_contain operator when filter value is null', () => { + const conversation = { id: '12345' }; + const filters = [ + { + attribute_key: 'display_id', + filter_operator: 'does_not_contain', + values: null, + query_operator: 'and', + }, + ]; + expect(matchesFilters(conversation, filters)).toBe(true); + }); + it('should match conversation with does_not_contain operator when value is not present', () => { const conversation = { id: '12345' }; const filters = [ From d8da1f5bf30a6485f644eee3f7ff056717ad23b8 Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Thu, 9 Oct 2025 21:05:53 +0530 Subject: [PATCH 12/14] fix: Handle video file types in Slack file shares (#12630) Fixes https://linear.app/chatwoot/issue/CW-5752/fix-nomethoderror-when-processing-video-files-in-slack-integration #### Problem When users shared video files (like MP4) through Slack, the `file_type` method in `SlackMessageHelper` would return `nil` for unsupported file types. This caused a `NoMethodError (undefined method 'to_sym' for nil)` when the attachment was being processed, as the system expected a symbol value for the `file_type` attribute. #### Solution - Added video file type support in the `file_type` method case statement - Added `else` clause to default unknown file types to `:file` instead of returning `nil` - This ensures `file_type` always returns a symbol, preventing the `to_sym` error --- lib/integrations/slack/slack_message_helper.rb | 4 +++- .../slack/incoming_message_builder_spec.rb | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/integrations/slack/slack_message_helper.rb b/lib/integrations/slack/slack_message_helper.rb index 52ec4caad..0ee328fb3 100644 --- a/lib/integrations/slack/slack_message_helper.rb +++ b/lib/integrations/slack/slack_message_helper.rb @@ -70,7 +70,9 @@ module Integrations::Slack::SlackMessageHelper case attachment[:filetype] when 'png', 'jpeg', 'gif', 'bmp', 'tiff', 'jpg' :image - when 'pdf' + when 'mp4', 'avi', 'mov', 'wmv', 'flv', 'webm' + :video + else :file end end diff --git a/spec/lib/integrations/slack/incoming_message_builder_spec.rb b/spec/lib/integrations/slack/incoming_message_builder_spec.rb index 608324e8f..2ce206489 100644 --- a/spec/lib/integrations/slack/incoming_message_builder_spec.rb +++ b/spec/lib/integrations/slack/incoming_message_builder_spec.rb @@ -157,6 +157,19 @@ describe Integrations::Slack::IncomingMessageBuilder do expect(conversation.messages.count).to eql(messages_count) end + + it 'handles different file types correctly' do + expect(hook).not_to be_nil + video_attachment_params = message_with_attachments.deep_dup + video_attachment_params[:event][:files][0][:filetype] = 'mp4' + video_attachment_params[:event][:files][0][:mimetype] = 'video/mp4' + + builder = described_class.new(video_attachment_params) + allow(builder).to receive(:sender).and_return(nil) + + expect { builder.perform }.not_to raise_error + expect(conversation.messages.last.attachments).to be_any + end end context 'when link shared' do From cb65d615eaa7a20acfc6a29783a82a35c82faae1 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:27:30 +0530 Subject: [PATCH 13/14] chore: Add auto-refresh and self-hosted redirect logic to the billing page (#12615) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Pull Request Template ## Description This PR includes billing page improvements with the following updates: ### Self-hosted Users * Automatically redirected to the dashboard when accessing the billing page. ### Cloud Users – No Billing Plan (First Visit) * Shows a loading spinner with the `Your billing account is being configured. Please refresh the page and try again.` message. * Automatically refreshes the page after 5 seconds to check for billing setup. ### Cloud Users – No Billing Plan (After Refresh) * Prevents infinite refresh loops using `sessionStorage` tracking. * Displays the standard `Your billing account is being configured. Please refresh the page and try again.` message without further refresh attempts. * Cleans up session flags for future visits. ### Cloud Users – With Billing Plan * Displays the existing billing page normally with no refresh or redirection logic. Fixes https://linear.app/chatwoot/issue/CW-5559/your-billing-page-is-being-set-up-message-on-billing-page-is-confusing ## Type of change - [x] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? ### Loom video https://www.loom.com/share/d0ea13d6b90b4ab1acbc581b524f6382?sid=d3dd19f3-85aa-4127-9233-7eecb1be0884 ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --------- Co-authored-by: Muhsin Keloth --- .../dashboard/settings/billing/Index.vue | 61 ++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/app/javascript/dashboard/routes/dashboard/settings/billing/Index.vue b/app/javascript/dashboard/routes/dashboard/settings/billing/Index.vue index fc3905014..8ba3d69a9 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/billing/Index.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/billing/Index.vue @@ -1,9 +1,11 @@