From 0b74be82a36dbf734d71caaad1f9d301ba4f3d3d Mon Sep 17 00:00:00 2001 From: Chatwoot Bot <92152627+chatwoot-bot@users.noreply.github.com> Date: Mon, 28 Jul 2025 06:33:49 -0700 Subject: [PATCH 01/26] chore: Update translations (#12037) --- .../dashboard/i18n/locale/am/inboxMgmt.json | 4 ++++ .../i18n/locale/am/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ar/inboxMgmt.json | 4 ++++ .../i18n/locale/ar/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/az/inboxMgmt.json | 4 ++++ .../i18n/locale/az/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/bg/inboxMgmt.json | 4 ++++ .../i18n/locale/bg/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ca/inboxMgmt.json | 4 ++++ .../i18n/locale/ca/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/cs/inboxMgmt.json | 4 ++++ .../i18n/locale/cs/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/da/inboxMgmt.json | 4 ++++ .../i18n/locale/da/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/de/inboxMgmt.json | 4 ++++ .../i18n/locale/de/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/el/inboxMgmt.json | 4 ++++ .../i18n/locale/el/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/es/inboxMgmt.json | 4 ++++ .../i18n/locale/es/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/fa/inboxMgmt.json | 4 ++++ .../i18n/locale/fa/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/fi/inboxMgmt.json | 4 ++++ .../i18n/locale/fi/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/fr/inboxMgmt.json | 4 ++++ .../i18n/locale/fr/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/he/inboxMgmt.json | 4 ++++ .../i18n/locale/he/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/hi/inboxMgmt.json | 4 ++++ .../i18n/locale/hi/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/hr/inboxMgmt.json | 4 ++++ .../i18n/locale/hr/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/hu/inboxMgmt.json | 4 ++++ .../i18n/locale/hu/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/hy/inboxMgmt.json | 4 ++++ .../i18n/locale/hy/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/id/inboxMgmt.json | 4 ++++ .../i18n/locale/id/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/is/inboxMgmt.json | 4 ++++ .../i18n/locale/is/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/it/inboxMgmt.json | 4 ++++ .../i18n/locale/it/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ja/inboxMgmt.json | 4 ++++ .../i18n/locale/ja/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ka/inboxMgmt.json | 4 ++++ .../i18n/locale/ka/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ko/inboxMgmt.json | 4 ++++ .../i18n/locale/ko/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/lt/inboxMgmt.json | 4 ++++ .../i18n/locale/lt/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/lv/inboxMgmt.json | 4 ++++ .../i18n/locale/lv/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ml/inboxMgmt.json | 4 ++++ .../i18n/locale/ml/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ms/inboxMgmt.json | 4 ++++ .../i18n/locale/ms/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ne/inboxMgmt.json | 4 ++++ .../i18n/locale/ne/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/nl/inboxMgmt.json | 4 ++++ .../i18n/locale/nl/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/no/inboxMgmt.json | 4 ++++ .../i18n/locale/no/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/pl/inboxMgmt.json | 4 ++++ .../i18n/locale/pl/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/pt/inboxMgmt.json | 4 ++++ .../i18n/locale/pt/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/pt_BR/inboxMgmt.json | 4 ++++ .../i18n/locale/pt_BR/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ro/inboxMgmt.json | 4 ++++ .../i18n/locale/ro/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ru/inboxMgmt.json | 4 ++++ .../i18n/locale/ru/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/sh/inboxMgmt.json | 4 ++++ .../i18n/locale/sh/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/sk/inboxMgmt.json | 4 ++++ .../i18n/locale/sk/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/sl/inboxMgmt.json | 4 ++++ .../i18n/locale/sl/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/sq/inboxMgmt.json | 4 ++++ .../i18n/locale/sq/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/sr/inboxMgmt.json | 4 ++++ .../i18n/locale/sr/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/sv/inboxMgmt.json | 4 ++++ .../i18n/locale/sv/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ta/inboxMgmt.json | 4 ++++ .../i18n/locale/ta/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/th/inboxMgmt.json | 4 ++++ .../i18n/locale/th/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/tl/inboxMgmt.json | 4 ++++ .../i18n/locale/tl/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/tr/inboxMgmt.json | 4 ++++ .../i18n/locale/tr/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/uk/inboxMgmt.json | 4 ++++ .../i18n/locale/uk/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ur/inboxMgmt.json | 4 ++++ .../i18n/locale/ur/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/ur_IN/inboxMgmt.json | 4 ++++ .../i18n/locale/ur_IN/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/vi/inboxMgmt.json | 4 ++++ .../i18n/locale/vi/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/zh_CN/inboxMgmt.json | 4 ++++ .../i18n/locale/zh_CN/whatsappTemplates.json | 4 ++++ .../dashboard/i18n/locale/zh_TW/inboxMgmt.json | 4 ++++ .../i18n/locale/zh_TW/whatsappTemplates.json | 4 ++++ config/locales/ar.yml | 16 ++++++++-------- 105 files changed, 424 insertions(+), 8 deletions(-) diff --git a/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json index eb999a0e5..12580bcac 100644 --- a/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/am/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/am/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/am/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/am/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json index 9997b7ce0..c860f0a6f 100644 --- a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "تحديث", "WHATSAPP_WEBHOOK_TITLE": "رمز التحقق من Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ar/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ar/whatsappTemplates.json index 7e1af5c74..110eeb8af 100644 --- a/app/javascript/dashboard/i18n/locale/ar/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ar/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "نماذج البحث", "NO_TEMPLATES_FOUND": "لم يتم العثور على قوالب", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "اللغة", "TEMPLATE_BODY": "نص القالب", diff --git a/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json index eb999a0e5..12580bcac 100644 --- a/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/az/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/az/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/az/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/az/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json index 307316da2..30fa620ff 100644 --- a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Обновяване", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/bg/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/bg/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/bg/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/bg/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json index f0a3dc025..3a7961688 100644 --- a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Actualitza", "WHATSAPP_WEBHOOK_TITLE": "Token de verificació del webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "Aquest testimoni s'utilitza per verificar l'autenticitat del punt final del webhook.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Actualitza la configuració del formulari de xat prèvia" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ca/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ca/whatsappTemplates.json index f293b6e02..f078ec706 100644 --- a/app/javascript/dashboard/i18n/locale/ca/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ca/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Cerca plantilles", "NO_TEMPLATES_FOUND": "No s'han trobat plantilles per a", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Idioma", "TEMPLATE_BODY": "Cos de la plantilla", diff --git a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json index becbdf6b5..8b0498ce5 100644 --- a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Aktualizovat", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/cs/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/cs/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/cs/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/cs/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json index fbeca4824..579ee2f75 100644 --- a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Opdater", "WHATSAPP_WEBHOOK_TITLE": "Webhook verifikations token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/da/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/da/whatsappTemplates.json index 615e1b198..3acb3acb3 100644 --- a/app/javascript/dashboard/i18n/locale/da/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/da/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Søg Skabeloner", "NO_TEMPLATES_FOUND": "Ingen skabeloner fundet for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Sprog", "TEMPLATE_BODY": "Skabelon Krop", diff --git a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json index f93636892..2c2eda452 100644 --- a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Aktualisieren", "WHATSAPP_WEBHOOK_TITLE": "Webhook-Verifizierungstoken", "WHATSAPP_WEBHOOK_SUBHEADER": "Mit diesem Token wird die Authentizität des Webhook Endpunktes überprüft.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Pre Chat Einstellungen aktualisieren" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/de/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/de/whatsappTemplates.json index 43d36d1a7..b5f1885ae 100644 --- a/app/javascript/dashboard/i18n/locale/de/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/de/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Vorlagen suchen", "NO_TEMPLATES_FOUND": "Keine Vorlagen gefunden für", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Sprache", "TEMPLATE_BODY": "Vorlagenbody", diff --git a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json index ed5eb6a9b..686b788f8 100644 --- a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Ενημέρωση", "WHATSAPP_WEBHOOK_TITLE": "Token Επαλήθευσης Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/el/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/el/whatsappTemplates.json index ce640b102..d78b9cb12 100644 --- a/app/javascript/dashboard/i18n/locale/el/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/el/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Αναζήτηση Προτύπων", "NO_TEMPLATES_FOUND": "Δεν βρέθηκαν πρότυπα για", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Γλώσσα", "TEMPLATE_BODY": "Σώμα Προτύπου", diff --git a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json index a1c46f0f5..848b7f3d3 100644 --- a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Actualizar", "WHATSAPP_WEBHOOK_TITLE": "Token de verificación del Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "Este token se utiliza para verificar la autenticidad del extremo del webhook.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Actualizar configuración de Formulario de Chat" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/es/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/es/whatsappTemplates.json index 85290f8e0..49a89e381 100644 --- a/app/javascript/dashboard/i18n/locale/es/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/es/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Buscar plantillas", "NO_TEMPLATES_FOUND": "No se encontraron plantillas para", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Idioma", "TEMPLATE_BODY": "Cuerpo de plantilla", diff --git a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json index a54d6afff..356766d0a 100644 --- a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "اعمال شود", "WHATSAPP_WEBHOOK_TITLE": "توکن تایید Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "این توکن برای تأیید صحت نقطه پایانی webhook استفاده می شود.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "به‌روزرسانی تنظیمات فرم قبل از گفتگو" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/fa/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/fa/whatsappTemplates.json index 048df8a7e..3b470e99f 100644 --- a/app/javascript/dashboard/i18n/locale/fa/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/fa/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "جستجوی الگوها", "NO_TEMPLATES_FOUND": "هیچ قالبی برای", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "زبان", "TEMPLATE_BODY": "بدنه الگو", diff --git a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json index 42f621738..e12f895f4 100644 --- a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Päivitä", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/fi/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/fi/whatsappTemplates.json index d8b18b589..ae8bee085 100644 --- a/app/javascript/dashboard/i18n/locale/fi/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/fi/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Etsi Pohjia", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json index c0df640e5..f5c21e5c5 100644 --- a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Mettre à jour", "WHATSAPP_WEBHOOK_TITLE": "Jeton de vérification du Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "Ce jeton est utilisé pour vérifier l'authenticité du point de terminaison du webhook.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Mettre à jour les paramètres du formulaire de pré-chat" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/fr/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/fr/whatsappTemplates.json index 2d0268652..0d4538240 100644 --- a/app/javascript/dashboard/i18n/locale/fr/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/fr/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Rechercher des modèles", "NO_TEMPLATES_FOUND": "Aucun modèle trouvé pour", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Langue", "TEMPLATE_BODY": "Corps du modèle", diff --git a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json index 12fdadab6..12724f7cc 100644 --- a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "עדכן", "WHATSAPP_WEBHOOK_TITLE": "אסימון אימות Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "עדכון הגדרות טופס טרום צ'אט" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/he/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/he/whatsappTemplates.json index 110fa450c..295b89a23 100644 --- a/app/javascript/dashboard/i18n/locale/he/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/he/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "חפש תבניות", "NO_TEMPLATES_FOUND": "לא נמצאו תבניות עבור", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "שפה", "TEMPLATE_BODY": "גוף התבנית", diff --git a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json index eeef8cd62..57d6e2638 100644 --- a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/hi/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/hi/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/hi/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/hi/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json index fc75295f1..09e1f475e 100644 --- a/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "Ovaj token se koristi za verifikaciju autentičnosti webhook endpoint-a.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/hr/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/hr/whatsappTemplates.json index 79c85ae02..d943a13c1 100644 --- a/app/javascript/dashboard/i18n/locale/hr/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/hr/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Pretraži Predloške", "NO_TEMPLATES_FOUND": "Nije pronađen predložak za", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Jezik", "TEMPLATE_BODY": "Tijelo predloška", diff --git a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json index 809801964..76d49274d 100644 --- a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Frissítés", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "Ez a token a webhook-végpont hitelességének ellenőrzésére szolgál.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Csevegés előtti űrlap beállításainak frissítése" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/hu/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/hu/whatsappTemplates.json index 056d12a33..860ef1875 100644 --- a/app/javascript/dashboard/i18n/locale/hu/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/hu/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Sablon keresése", "NO_TEMPLATES_FOUND": "Nem található sablon erre:", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Nyelv", "TEMPLATE_BODY": "Sablon törzse", diff --git a/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json index 06dbdcc73..09d6ca675 100644 --- a/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/hy/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/hy/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/hy/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/hy/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json index 7ab7c5442..d0c631673 100644 --- a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Perbarui", "WHATSAPP_WEBHOOK_TITLE": "Token Verifikasi Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "Token ini digunakan untuk memverifikasi keaslian titik akhir webhook.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Perbarui Pengaturan Formulir Pra Obrolan" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/id/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/id/whatsappTemplates.json index 2138d3686..88a806522 100644 --- a/app/javascript/dashboard/i18n/locale/id/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/id/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Cari Templat", "NO_TEMPLATES_FOUND": "Tidak ditemukan templat untuk", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Bahasa", "TEMPLATE_BODY": "Isi Templat", diff --git a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json index 5092c3e80..4e001a8b1 100644 --- a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Uppfæra", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/is/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/is/whatsappTemplates.json index 769f12f57..0be0dfc90 100644 --- a/app/javascript/dashboard/i18n/locale/is/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/is/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json index 0ad3c6161..6d075169e 100644 --- a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Aggiorna", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/it/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/it/whatsappTemplates.json index 4a27a4904..2e1db45c7 100644 --- a/app/javascript/dashboard/i18n/locale/it/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/it/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Cerca modelli", "NO_TEMPLATES_FOUND": "Nessun modello trovato per", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Lingua", "TEMPLATE_BODY": "Corpo modello", diff --git a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json index f36d38112..af6125b41 100644 --- a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "更新", "WHATSAPP_WEBHOOK_TITLE": "Webhook検証トークン", "WHATSAPP_WEBHOOK_SUBHEADER": "このトークンはWebhookエンドポイントの信頼性を検証するために使用されます。", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "プレチャットフォーム設定を更新する" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ja/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ja/whatsappTemplates.json index 665d8d3f8..de389b44c 100644 --- a/app/javascript/dashboard/i18n/locale/ja/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ja/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "テンプレートを検索", "NO_TEMPLATES_FOUND": "該当するテンプレートが見つかりません:", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "言語", "TEMPLATE_BODY": "テンプレート本文", diff --git a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json index eeef8cd62..57d6e2638 100644 --- a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ka/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ka/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/ka/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ka/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json index d8f57d823..44438a260 100644 --- a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "업데이트", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ko/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ko/whatsappTemplates.json index 5fe227b68..71fc338da 100644 --- a/app/javascript/dashboard/i18n/locale/ko/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ko/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "언어", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json index 03ce79011..e229569ff 100644 --- a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Atnaujinti", "WHATSAPP_WEBHOOK_TITLE": "Webhook Patikros Prieigos Raktas", "WHATSAPP_WEBHOOK_SUBHEADER": "Šis prieigos raktas naudojamas „webhook“ galutinio taško autentiškumui patikrinti.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Atnaujinkite išankstinio pokalbio internetu formos nustatymus" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/lt/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/lt/whatsappTemplates.json index 75eda5a04..7c9073480 100644 --- a/app/javascript/dashboard/i18n/locale/lt/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/lt/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Ieškoti šablonų", "NO_TEMPLATES_FOUND": "Šablonų nerasta", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Kalba", "TEMPLATE_BODY": "Šablono tekstas", diff --git a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json index bfb996bf1..d1df5a94b 100644 --- a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Atjaunināt", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verifikācijas Token", "WHATSAPP_WEBHOOK_SUBHEADER": "Šis marķieris tiek izmantots, lai pārbaudītu webhook endpoint autentiskumu.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Atjaunināt pirms-tērzēšanas veidlapas iestatījumus" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/lv/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/lv/whatsappTemplates.json index c2ad34cd9..330ab173d 100644 --- a/app/javascript/dashboard/i18n/locale/lv/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/lv/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Meklēt Veidnes", "NO_TEMPLATES_FOUND": "Veidnes nav atrastas", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Valoda", "TEMPLATE_BODY": "Veidnes Pamatteksts", diff --git a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json index a22c09726..ac8284ac0 100644 --- a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "അപ്‌ഡേറ്റ്", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ml/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ml/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/ml/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ml/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json index 6af7f101a..9e91cd8dc 100644 --- a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ms/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ms/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/ms/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ms/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json index a1541301d..3459f22ac 100644 --- a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ne/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ne/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/ne/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ne/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json index aefb80c0c..9f1286294 100644 --- a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Vernieuwen", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json index fbdb18c74..4061f4090 100644 --- a/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Templates zoeken", "NO_TEMPLATES_FOUND": "Geen templates gevonden voor", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Taal", "TEMPLATE_BODY": "Template bericht", diff --git a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json index 0c7feb225..88ade0a31 100644 --- a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Oppdater", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/no/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/no/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/no/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/no/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json index a1d6f5224..95028bbd5 100644 --- a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Aktualizuj", "WHATSAPP_WEBHOOK_TITLE": "Token weryfikacyjny webhooka", "WHATSAPP_WEBHOOK_SUBHEADER": "Ten token służy do weryfikacji autentyczności punktu końcowego webhooka.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Aktualizacja ustawień formularza czatu wstępnego" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/pl/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/pl/whatsappTemplates.json index 027e98826..fb87e1425 100644 --- a/app/javascript/dashboard/i18n/locale/pl/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/pl/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Wyszukaj szablony", "NO_TEMPLATES_FOUND": "Nie znaleziono szablonów dla", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Język", "TEMPLATE_BODY": "Treść szablonu", diff --git a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json index 6a6e8ae61..6fa646120 100644 --- a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Atualização", "WHATSAPP_WEBHOOK_TITLE": "Webhook de verificação do token", "WHATSAPP_WEBHOOK_SUBHEADER": "Este token é usado para verificar a autenticidade do endpoint do webhook.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Atualizar configurações do formulário pré-chat" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/pt/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/pt/whatsappTemplates.json index a653ccc2b..cba42fd01 100644 --- a/app/javascript/dashboard/i18n/locale/pt/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/pt/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Buscar templates", "NO_TEMPLATES_FOUND": "Nenhum template encontrado para", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Idioma", "TEMPLATE_BODY": "Corpo do Template", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json index 6fceba988..aac205dec 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Atualizar", "WHATSAPP_WEBHOOK_TITLE": "Token de verificação Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "Este token é usado para verificar a autenticidade do webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Atualizar configurações do Formulário Pre Chat" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/pt_BR/whatsappTemplates.json index b47ce0a0f..1149bc577 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Pesquisar modelos", "NO_TEMPLATES_FOUND": "Não há templates encontrados para", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Idioma", "TEMPLATE_BODY": "Conteúdo do Template", diff --git a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json index 23910df30..d1079d98a 100644 --- a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Actualizare", "WHATSAPP_WEBHOOK_TITLE": "Token de verificare Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "Acest simbol este utilizat pentru a verifica autenticitatea punctului final webhook.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Actualizarea setărilor formularului pre-chat" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ro/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ro/whatsappTemplates.json index c85cda192..fda8d7b10 100644 --- a/app/javascript/dashboard/i18n/locale/ro/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ro/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Caută Șabloane", "NO_TEMPLATES_FOUND": "Nu s-au găsit șabloane pentru", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Limbă", "TEMPLATE_BODY": "Corpul șablonului", diff --git a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json index 12d0263bf..01a066111 100644 --- a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Обновить", "WHATSAPP_WEBHOOK_TITLE": "Токен авторизации Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "Этот токен используется для проверки подлинности конечной точки веб-хука.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Обновить настройки формы для чата" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ru/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ru/whatsappTemplates.json index ad80dfe97..65c55ec5a 100644 --- a/app/javascript/dashboard/i18n/locale/ru/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ru/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Найти шаблоны", "NO_TEMPLATES_FOUND": "Не найдено шаблонов для", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Язык", "TEMPLATE_BODY": "Тело шаблона", diff --git a/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json index df6c99bfb..3b17580a1 100644 --- a/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/sh/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sh/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/sh/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sh/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json index 87ba5f9ca..90d9c77a9 100644 --- a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/sk/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sk/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/sk/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sk/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json index 238693790..8e21df55f 100644 --- a/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/sl/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sl/whatsappTemplates.json index ac0c45dd1..eb4acbea6 100644 --- a/app/javascript/dashboard/i18n/locale/sl/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sl/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Išči predloge", "NO_TEMPLATES_FOUND": "Ni najdenih predlog za", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Jezik", "TEMPLATE_BODY": "Telo predloge", diff --git a/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json index aa5f0adee..f8a52e0dd 100644 --- a/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/sq/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sq/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/sq/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sq/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json index 1a7b2a8a3..4e3769406 100644 --- a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Primeni", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/sr/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sr/whatsappTemplates.json index 3917f4492..27fed1503 100644 --- a/app/javascript/dashboard/i18n/locale/sr/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sr/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Pretraži šablone", "NO_TEMPLATES_FOUND": "Nijedan šablon nije pronađen", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Jezik", "TEMPLATE_BODY": "Telo šablona", diff --git a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json index 5c2e6f4ab..3b11970b5 100644 --- a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Uppdatera", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/sv/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sv/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/sv/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sv/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json index 7210fbab6..f06cd63aa 100644 --- a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "புதுப்பிப்பு", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ta/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ta/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/ta/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ta/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json index dcb41a268..e5ac0a41e 100644 --- a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "อัพเดท", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/th/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/th/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/th/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/th/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json index eb999a0e5..12580bcac 100644 --- a/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/tl/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/tl/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/tl/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/tl/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json index d5c5ffc1c..2250d18bf 100644 --- a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Güncelleme", "WHATSAPP_WEBHOOK_TITLE": "Webhook Onay Anahtarı", "WHATSAPP_WEBHOOK_SUBHEADER": "Bu belirteç, webhook uç noktasının gerçekliğini doğrulamak için kullanılır.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Sohbet Öncesi Form Ayarlarını Güncelleme" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/tr/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/tr/whatsappTemplates.json index 1cf941924..da51ff735 100644 --- a/app/javascript/dashboard/i18n/locale/tr/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/tr/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Şablon Ara", "NO_TEMPLATES_FOUND": "İçin hiç şablon bulunamadı", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Dil", "TEMPLATE_BODY": "Şablon İçeriği", diff --git a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json index e34582162..0fa97089d 100644 --- a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Оновити", "WHATSAPP_WEBHOOK_TITLE": "Токен вебхука", "WHATSAPP_WEBHOOK_SUBHEADER": "Цей токен використовується для перевірки аутентифікації кінцевої точки вебхука.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Оновити параметри форми чату" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/uk/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/uk/whatsappTemplates.json index 2e931d010..1246919f5 100644 --- a/app/javascript/dashboard/i18n/locale/uk/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/uk/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Знайти шаблони", "NO_TEMPLATES_FOUND": "Шаблонів не знайдено для", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Мова", "TEMPLATE_BODY": "Тіло шаблона", diff --git a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json index a8361a0fe..b3f5d540e 100644 --- a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ur/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ur/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/ur/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ur/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json index 934486410..03b5606f6 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ur_IN/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json index 0c09fd138..1ad17adce 100644 --- a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "Cập nhật", "WHATSAPP_WEBHOOK_TITLE": "Mã xác minh Webhook", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/vi/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/vi/whatsappTemplates.json index c51c559d9..a4abce833 100644 --- a/app/javascript/dashboard/i18n/locale/vi/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/vi/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Tìm kiếm Mẫu", "NO_TEMPLATES_FOUND": "Không tìm thấy mẫu nào cho", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Ngôn ngữ", "TEMPLATE_BODY": "Nội dung của Mẫu", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json index f87105d9e..fa567b20e 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "更新", "WHATSAPP_WEBHOOK_TITLE": "Webhook 验证令牌", "WHATSAPP_WEBHOOK_SUBHEADER": "此令牌用于验证webhook端点的真实性。", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "更新预聊天表单设置" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/zh_CN/whatsappTemplates.json index 6d1b67022..cade063c0 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "查找模板", "NO_TEMPLATES_FOUND": "没有找到对应的模版", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "语言", "TEMPLATE_BODY": "模板内容", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json index 5489bff6d..ffd0f7765 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json @@ -600,6 +600,10 @@ "WHATSAPP_SECTION_UPDATE_BUTTON": "更新", "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" }, "HELP_CENTER": { diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/zh_TW/whatsappTemplates.json index b1d22ecd1..4887d07b6 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/whatsappTemplates.json @@ -8,6 +8,10 @@ "PICKER": { "SEARCH_PLACEHOLDER": "Search Templates", "NO_TEMPLATES_FOUND": "No templates found for", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", "LABELS": { "LANGUAGE": "Language", "TEMPLATE_BODY": "Template Body", diff --git a/config/locales/ar.yml b/config/locales/ar.yml index afb5800c7..437f35eeb 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -91,7 +91,7 @@ ar: conversations_count: عدد المحادثات avg_first_response_time: متوسط وقت الرد الأول avg_resolution_time: متوسط وقت الحل - avg_reply_time: Avg reply time + avg_reply_time: معدل وقت الرد resolution_count: عدد مرات الإغلاق team_csv: team_name: اسم الفريق @@ -135,19 +135,19 @@ ar: no_content: 'لا يوجد محتوى' conversations: captain: - handoff: 'Transferring to another agent for further assistance.' + handoff: 'تحويل إلى وكيل آخر لمزيد من المساعدة.' messages: instagram_story_content: 'أشار %{story_sender} إليك في القصة: ' instagram_deleted_story_content: هذه القصة لم تعد متاحة. deleted: تم حذف هذه الرسالة whatsapp: - list_button_label: 'Choose an item' + list_button_label: 'اختر عنصر' delivery_status: error_code: 'رمز الخطأ: %{error_code}' activity: captain: - resolved: 'Conversation was marked resolved by %{user_name} due to inactivity' - open: 'Conversation was marked open by %{user_name}' + resolved: 'تم تحديد هذه المحادثة كمحلولة بواسطة %{user_name} بسبب عدم النشاط' + open: 'تم تحديد هذه المحادثة كمفتوحة بواسطة %{user_name}' status: resolved: 'تم تحديث حالة المحادثة لـ"مغلقة" بواسطة %{user_name}' contact_resolved: 'تم حل المحادثة بواسطة %{contact_name}' @@ -155,8 +155,8 @@ ar: pending: 'تم تحديث حالة المحادثة لـ"معلقة" بواسطة %{user_name}' snoozed: 'تم تأجيل المحادثة بواسطة %{user_name}' auto_resolved_days: 'تم وضع علامة على المحادثة كمحلولة من قبل النظام بسبب %{count} أيام من عدم النشاط' - auto_resolved_hours: 'Conversation was marked resolved by system due to %{count} hours of inactivity' - auto_resolved_minutes: 'Conversation was marked resolved by system due to %{count} minutes of inactivity' + auto_resolved_hours: 'تم تحديد هذه المحادثة كمحلولة بواسطة النظام بسبب عدم النشاط لمدة %{count} ساعات' + auto_resolved_minutes: 'تم تحديد هذه المحادثة كمحلولة بواسطة النظام بسبب عدم النشاط لمدة %{count} دقائق' system_auto_open: أعاد النظام فتح المحادثة بسبب رسالة واردة جديدة. priority: added: '%{user_name} حدد الأولوية إلى %{new_priority}' @@ -244,7 +244,7 @@ ar: short_description: 'Create and link Linear issues directly from conversations.' description: 'إنشاء مشكلات في Linear مباشرة من نافذة المحادثة الخاصة بك. بدلاً من ذلك، قم بربط مشكلات Linear القائمة من أجل عملية تتبع أكثر تبسيطاً وكفاءة.' notion: - name: 'Notion' + name: 'نوشن' short_description: 'Integrate databases, documents and pages directly with Captain.' description: 'Connect your Notion workspace to enable Captain to access and generate intelligent responses using content from your databases, documents, and pages to provide more contextual customer support.' shopify: From 441cc065ae414781ddf14be9a45134a33c5643e7 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Tue, 29 Jul 2025 08:14:50 +0400 Subject: [PATCH 02/26] feat: add config for OpenAI endpoint (#12051) Co-authored-by: Muhsin Keloth --- config/installation_config.yml | 4 ++ .../super_admin/app_configs_controller.rb | 2 +- .../app/services/llm/base_open_ai_service.rb | 5 +++ .../captain/copilot/chat_service_spec.rb | 43 +++++++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/config/installation_config.yml b/config/installation_config.yml index fcf4ade2f..53251fc3c 100644 --- a/config/installation_config.yml +++ b/config/installation_config.yml @@ -170,6 +170,10 @@ display_title: 'OpenAI Model' description: 'The OpenAI model configured for use in Captain AI. Default: gpt-4o-mini' locked: false +- name: CAPTAIN_OPEN_AI_ENDPOINT + display_title: 'OpenAI API Endpoint (optional)' + description: 'The OpenAI endpoint configured for use in Captain AI. Default: https://api.openai.com/' + locked: false - name: CAPTAIN_FIRECRAWL_API_KEY display_title: 'FireCrawl API Key (optional)' description: 'The FireCrawl API key for the Captain AI service' diff --git a/enterprise/app/controllers/enterprise/super_admin/app_configs_controller.rb b/enterprise/app/controllers/enterprise/super_admin/app_configs_controller.rb index 41c8411b1..5466c86a4 100644 --- a/enterprise/app/controllers/enterprise/super_admin/app_configs_controller.rb +++ b/enterprise/app/controllers/enterprise/super_admin/app_configs_controller.rb @@ -10,7 +10,7 @@ module Enterprise::SuperAdmin::AppConfigsController when 'internal' @allowed_configs = internal_config_options when 'captain' - @allowed_configs = %w[CAPTAIN_OPEN_AI_API_KEY CAPTAIN_OPEN_AI_MODEL CAPTAIN_FIRECRAWL_API_KEY] + @allowed_configs = %w[CAPTAIN_OPEN_AI_API_KEY CAPTAIN_OPEN_AI_MODEL CAPTAIN_OPEN_AI_ENDPOINT CAPTAIN_FIRECRAWL_API_KEY] else super end diff --git a/enterprise/app/services/llm/base_open_ai_service.rb b/enterprise/app/services/llm/base_open_ai_service.rb index 1f229f182..04909cbf4 100644 --- a/enterprise/app/services/llm/base_open_ai_service.rb +++ b/enterprise/app/services/llm/base_open_ai_service.rb @@ -4,6 +4,7 @@ class Llm::BaseOpenAiService def initialize @client = OpenAI::Client.new( access_token: InstallationConfig.find_by!(name: 'CAPTAIN_OPEN_AI_API_KEY').value, + uri_base: uri_base, log_errors: Rails.env.development? ) setup_model @@ -13,6 +14,10 @@ class Llm::BaseOpenAiService private + def uri_base + InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_ENDPOINT')&.value || 'https://api.openai.com/' + end + def setup_model config_value = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_MODEL')&.value @model = (config_value.presence || DEFAULT_MODEL) diff --git a/spec/enterprise/services/captain/copilot/chat_service_spec.rb b/spec/enterprise/services/captain/copilot/chat_service_spec.rb index a4274ec4e..a02063b5e 100644 --- a/spec/enterprise/services/captain/copilot/chat_service_spec.rb +++ b/spec/enterprise/services/captain/copilot/chat_service_spec.rb @@ -22,6 +22,7 @@ RSpec.describe Captain::Copilot::ChatService do before do create(:installation_config, name: 'CAPTAIN_OPEN_AI_API_KEY', value: 'test-key') + create(:installation_config, name: 'CAPTAIN_OPEN_AI_ENDPOINT', value: 'https://api.openai.com/') allow(OpenAI::Client).to receive(:new).and_return(mock_openai_client) allow(mock_openai_client).to receive(:chat).and_return({ choices: [{ message: { content: '{ "content": "Hey" }' } }] @@ -47,6 +48,48 @@ RSpec.describe Captain::Copilot::ChatService do expect(messages.second[:role]).to eq('system') expect(messages.second[:content]).to include(account.id.to_s) end + + it 'initializes OpenAI client with configured endpoint' do + expect(OpenAI::Client).to receive(:new).with( + access_token: 'test-key', + uri_base: 'https://api.openai.com/', + log_errors: Rails.env.development? + ) + + described_class.new(assistant, config) + end + + context 'when CAPTAIN_OPEN_AI_ENDPOINT is not configured' do + before do + InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_ENDPOINT')&.destroy + end + + it 'uses default OpenAI endpoint' do + expect(OpenAI::Client).to receive(:new).with( + access_token: 'test-key', + uri_base: 'https://api.openai.com/', + log_errors: Rails.env.development? + ) + + described_class.new(assistant, config) + end + end + + context 'when custom endpoint is configured' do + before do + InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_ENDPOINT').update!(value: 'https://custom.azure.com/') + end + + it 'uses custom endpoint for OpenAI client' do + expect(OpenAI::Client).to receive(:new).with( + access_token: 'test-key', + uri_base: 'https://custom.azure.com/', + log_errors: Rails.env.development? + ) + + described_class.new(assistant, config) + end + end end describe '#generate_response' do From 6475a6a59329a45d87c4216031fd14aa0ebfbab7 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Tue, 29 Jul 2025 14:24:14 +0400 Subject: [PATCH 03/26] feat: add references header to reply emails (#11719) Co-authored-by: Muhsin Keloth Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- app/mailers/conversation_reply_mailer.rb | 6 + .../conversation_reply_mailer_helper.rb | 25 ++- app/mailers/references_header_builder.rb | 101 +++++++++++ app/presenters/mail_presenter.rb | 7 + spec/fixtures/files/mail_with_references.eml | 17 ++ spec/mailboxes/reply_mailbox_spec.rb | 2 +- spec/mailboxes/support_mailbox_spec.rb | 25 ++- .../mailers/conversation_reply_mailer_spec.rb | 93 ++++++++++ .../mailers/references_header_builder_spec.rb | 164 ++++++++++++++++++ spec/presenters/mail_presenter_spec.rb | 26 +++ 10 files changed, 449 insertions(+), 17 deletions(-) create mode 100644 app/mailers/references_header_builder.rb create mode 100644 spec/fixtures/files/mail_with_references.eml create mode 100644 spec/mailers/references_header_builder_spec.rb diff --git a/app/mailers/conversation_reply_mailer.rb b/app/mailers/conversation_reply_mailer.rb index ba46a5fed..360b227cb 100644 --- a/app/mailers/conversation_reply_mailer.rb +++ b/app/mailers/conversation_reply_mailer.rb @@ -4,6 +4,7 @@ class ConversationReplyMailer < ApplicationMailer attr_reader :large_attachments include ConversationReplyMailerHelper + include ReferencesHeaderBuilder default from: ENV.fetch('MAILER_SENDER_EMAIL', 'Chatwoot ') layout :choose_layout @@ -160,6 +161,7 @@ class ConversationReplyMailer < ApplicationMailer end def conversation_reply_email_id + # Find the last incoming message's message_id to reply to content_attributes = @conversation.messages.incoming.last&.content_attributes if content_attributes && content_attributes['email'] && content_attributes['email']['message_id'] @@ -169,6 +171,10 @@ class ConversationReplyMailer < ApplicationMailer nil end + def references_header + build_references_header(@conversation, in_reply_to_email) + end + def cc_bcc_emails content_attributes = @conversation.messages.outgoing.last&.content_attributes diff --git a/app/mailers/conversation_reply_mailer_helper.rb b/app/mailers/conversation_reply_mailer_helper.rb index d34369832..55f7fe12b 100644 --- a/app/mailers/conversation_reply_mailer_helper.rb +++ b/app/mailers/conversation_reply_mailer_helper.rb @@ -6,15 +6,15 @@ module ConversationReplyMailerHelper reply_to: email_reply_to, subject: mail_subject, message_id: custom_message_id, - in_reply_to: in_reply_to_email + in_reply_to: in_reply_to_email, + references: references_header } if cc_bcc_enabled @options[:cc] = cc_bcc_emails[0] @options[:bcc] = cc_bcc_emails[1] end - ms_smtp_settings - google_smtp_settings + oauth_smtp_settings set_delivery_method # Email type detection logic: @@ -57,22 +57,17 @@ module ConversationReplyMailerHelper private - def google_smtp_settings - return unless @inbox.email? && @channel.imap_enabled && @inbox.channel.google? - - smtp_settings = base_smtp_settings('smtp.gmail.com') + def oauth_smtp_settings + return unless @inbox.email? && @channel.imap_enabled + return unless oauth_provider_domain @options[:delivery_method] = :smtp - @options[:delivery_method_options] = smtp_settings + @options[:delivery_method_options] = base_smtp_settings(oauth_provider_domain) end - def ms_smtp_settings - return unless @inbox.email? && @channel.imap_enabled && @inbox.channel.microsoft? - - smtp_settings = base_smtp_settings('smtp.office365.com') - - @options[:delivery_method] = :smtp - @options[:delivery_method_options] = smtp_settings + def oauth_provider_domain + return 'smtp.gmail.com' if @inbox.channel.google? + return 'smtp.office365.com' if @inbox.channel.microsoft? end def base_smtp_settings(domain) diff --git a/app/mailers/references_header_builder.rb b/app/mailers/references_header_builder.rb new file mode 100644 index 000000000..a48d7c9c1 --- /dev/null +++ b/app/mailers/references_header_builder.rb @@ -0,0 +1,101 @@ +# Builds RFC 5322 compliant References headers for email threading +# +# This module provides functionality to construct proper References headers +# that maintain email conversation threading according to RFC 5322 standards. +module ReferencesHeaderBuilder + # Builds a complete References header for an email reply + # + # According to RFC 5322, the References header should contain: + # - References from the message being replied to (if available) + # - The In-Reply-To message ID as the final element + # - Proper line folding if the header exceeds 998 characters + # + # If the message being replied to has no stored References, we use a minimal + # approach with only the In-Reply-To message ID rather than rebuilding. + # + # @param conversation [Conversation] The conversation containing the message thread + # @param in_reply_to_message_id [String] The message ID being replied to + # @return [String] A properly formatted and folded References header value + def build_references_header(conversation, in_reply_to_message_id) + references = get_references_from_replied_message(conversation, in_reply_to_message_id) + references << in_reply_to_message_id + + references = references.compact.uniq + fold_references_header(references) + rescue StandardError => e + Rails.logger.error("Error building references header for ##{conversation.id}: #{e.message}") + ChatwootExceptionTracker.new(e, account: conversation.account).capture_exception + '' + end + + private + + # Gets References header from the message being replied to + # + # Finds the message by its source_id matching the in_reply_to_message_id + # and extracts its stored References header. If no References are found, + # we return an empty array (minimal approach - no rebuilding). + # + # @param conversation [Conversation] The conversation containing the message thread + # @param in_reply_to_message_id [String] The message ID being replied to + # @return [Array] Array of properly formatted message IDs with angle brackets + def get_references_from_replied_message(conversation, in_reply_to_message_id) + return [] if in_reply_to_message_id.blank? + + replied_to_message = find_replied_to_message(conversation, in_reply_to_message_id) + return [] unless replied_to_message + + extract_references_from_message(replied_to_message) + end + + # Finds the message being replied to based on its source_id + # + # @param conversation [Conversation] The conversation containing the message thread + # @param in_reply_to_message_id [String] The message ID to search for + # @return [Message, nil] The message being replied to + def find_replied_to_message(conversation, in_reply_to_message_id) + return nil if in_reply_to_message_id.blank? + + # Remove angle brackets if present for comparison + normalized_id = in_reply_to_message_id.gsub(/[<>]/, '') + + # Use database query to find the message efficiently + # Search for exact match or with angle brackets + conversation.messages + .where.not(source_id: nil) + .where('source_id = ? OR source_id = ? OR source_id = ?', + normalized_id, + "<#{normalized_id}>", + in_reply_to_message_id) + .first + end + + # Extracts References header from a message's content_attributes + # + # @param message [Message] The message to extract References from + # @return [Array] Array of properly formatted message IDs with angle brackets + def extract_references_from_message(message) + return [] unless message.content_attributes&.dig('email', 'references') + + references = message.content_attributes['email']['references'] + Array.wrap(references).map do |ref| + ref.start_with?('<') ? ref : "<#{ref}>" + end + end + + # Folds References header to comply with RFC 5322 line folding requirements + # + # RFC 5322 requires that continuation lines in folded headers start with + # whitespace (space or tab). This method joins message IDs with CRLF + space, + # ensuring the first line has no leading space and all continuation lines + # start with a space as required by the RFC. + # + # @param references_array [Array] Array of message IDs to be folded + # @return [String] A properly folded header value with CRLF line endings + def fold_references_header(references_array) + return '' if references_array.empty? + return references_array.first if references_array.size == 1 + + references_array.join("\r\n ") + end +end diff --git a/app/presenters/mail_presenter.rb b/app/presenters/mail_presenter.rb index 1c951cbe3..890e97a78 100644 --- a/app/presenters/mail_presenter.rb +++ b/app/presenters/mail_presenter.rb @@ -100,6 +100,7 @@ class MailPresenter < SimpleDelegator message_id: message_id, multipart: multipart?, number_of_attachments: number_of_attachments, + references: references, subject: subject, text_content: text_content, to: to @@ -115,6 +116,12 @@ class MailPresenter < SimpleDelegator @mail.in_reply_to.is_a?(Array) ? @mail.in_reply_to.first : @mail.in_reply_to end + def references + return [] if @mail.references.blank? + + Array.wrap(@mail.references) + end + def from # changing to downcase to avoid case mismatch while finding contact (@mail.reply_to.presence || @mail.from).map(&:downcase) diff --git a/spec/fixtures/files/mail_with_references.eml b/spec/fixtures/files/mail_with_references.eml new file mode 100644 index 000000000..4fca32726 --- /dev/null +++ b/spec/fixtures/files/mail_with_references.eml @@ -0,0 +1,17 @@ +From: Sony Mathew +To: care@example.com +Mime-Version: 1.0 (Apple Message framework v1244.3) +Content-Type: multipart/alternative; boundary="Apple-Mail=_33A037C7-4BB3-4772-AE52-FCF2D7535F74" +Subject: Discussion: Let's debate these attachments +Date: Tue, 20 Apr 2020 04:20:20 -0400 +In-Reply-To: <4e6e35f5a38b4_479f13bb90078178@small-app-01.mail> +References: <4e6e35f5a38b4_479f13bb90078178@small-app-01.mail> +Message-Id: <0CB459E0-0336-41DA-BC88-E6E28C697DDBF@chatwoot.com> +X-Mailer: Apple Mail (2.1244.3) + +--Apple-Mail=_33A037C7-4BB3-4772-AE52-FCF2D7535F74 +Content-Transfer-Encoding: quoted-printable +Content-Type: text/plain; + charset=utf-8 + +Email with references header \ No newline at end of file diff --git a/spec/mailboxes/reply_mailbox_spec.rb b/spec/mailboxes/reply_mailbox_spec.rb index a9a802bb9..2320e3e07 100644 --- a/spec/mailboxes/reply_mailbox_spec.rb +++ b/spec/mailboxes/reply_mailbox_spec.rb @@ -12,7 +12,7 @@ RSpec.describe ReplyMailbox do let(:conversation) { create(:conversation, assignee: agent, inbox: create(:inbox, account: account, greeting_enabled: false), account: account) } let(:described_subject) { described_class.receive reply_mail } let(:serialized_attributes) do - %w[bcc cc content_type date from html_content in_reply_to message_id multipart number_of_attachments subject text_content to] + %w[bcc cc content_type date from html_content in_reply_to message_id multipart number_of_attachments references subject text_content to] end context 'with reply uuid present' do diff --git a/spec/mailboxes/support_mailbox_spec.rb b/spec/mailboxes/support_mailbox_spec.rb index f9e9aa2ff..f75e3ef80 100644 --- a/spec/mailboxes/support_mailbox_spec.rb +++ b/spec/mailboxes/support_mailbox_spec.rb @@ -55,7 +55,7 @@ RSpec.describe SupportMailbox do let(:support_in_reply_to_mail) { create_inbound_email_from_fixture('support_in_reply_to.eml') } let(:described_subject) { described_class.receive support_mail } let(:serialized_attributes) do - %w[bcc cc content_type date from html_content in_reply_to message_id multipart number_of_attachments subject + %w[bcc cc content_type date from html_content in_reply_to message_id multipart number_of_attachments references subject text_content to] end let(:conversation) { Conversation.where(inbox_id: channel_email.inbox).last } @@ -111,6 +111,29 @@ RSpec.describe SupportMailbox do end end + describe 'email with references header' do + let(:mail_with_references) { create_inbound_email_from_fixture('mail_with_references.eml') } + let(:described_subject) { described_class.receive mail_with_references } + + before do + # reuse the existing channel_email that's already set to 'care@example.com' + described_subject + end + + it 'includes references in the message content_attributes' do + message = conversation.messages.last + email_attributes = message.content_attributes['email'] + + expect(email_attributes['references']).to be_present + expect(email_attributes['references']).to eq(['4e6e35f5a38b4_479f13bb90078178@small-app-01.mail', 'test-reference-id']) + end + + it 'includes references in serialized email attributes' do + message = conversation.messages.last + expect(message.content_attributes['email'].keys).to include('references') + end + end + describe 'Sender without name' do let(:support_mail_without_sender_name) { create_inbound_email_from_fixture('support_without_sender_name.eml') } let(:described_subject) { described_class.receive support_mail_without_sender_name } diff --git a/spec/mailers/conversation_reply_mailer_spec.rb b/spec/mailers/conversation_reply_mailer_spec.rb index 2a0d6c8b0..ecd97333e 100644 --- a/spec/mailers/conversation_reply_mailer_spec.rb +++ b/spec/mailers/conversation_reply_mailer_spec.rb @@ -137,6 +137,99 @@ RSpec.describe ConversationReplyMailer do end end + context 'with references header' do + let(:conversation) { create(:conversation, assignee: agent, inbox: email_channel.inbox, account: account).reload } + let(:message) { create(:message, conversation: conversation, account: account, message_type: 'outgoing', content: 'Outgoing Message 2') } + let(:mail) { described_class.email_reply(message).deliver_now } + + context 'when starting a new conversation' do + let(:first_outgoing_message) do + create(:message, + conversation: conversation, + account: account, + message_type: 'outgoing', + content: 'First outgoing message') + end + let(:mail) { described_class.email_reply(first_outgoing_message).deliver_now } + + it 'has only the conversation reference' do + # When starting a conversation, references will have the default conversation ID + # Extract domain from the actual references header to handle dynamic domain selection + actual_domain = mail.references.split('@').last + expected_reference = "account/#{account.id}/conversation/#{conversation.uuid}@#{actual_domain}" + expect(mail.references).to eq(expected_reference) + end + end + + context 'when replying to a message with no references' do + let(:incoming_message) do + create(:message, + conversation: conversation, + account: account, + message_type: 'incoming', + source_id: '', + content: 'Incoming message', + content_attributes: { + 'email' => { + 'message_id' => 'incoming-123@example.com' + } + }) + end + let(:reply_message) do + create(:message, + conversation: conversation, + account: account, + message_type: 'outgoing', + content: 'Reply to incoming') + end + let(:mail) { described_class.email_reply(reply_message).deliver_now } + + before do + incoming_message + end + + it 'includes only the in_reply_to id in references' do + # References should only have the incoming message ID when no prior references exist + expect(mail.references).to eq('incoming-123@example.com') + end + end + + context 'when replying to a message that has references' do + let(:incoming_message_with_refs) do + create(:message, + conversation: conversation, + account: account, + message_type: 'incoming', + source_id: '', + content: 'Incoming with references', + content_attributes: { + 'email' => { + 'message_id' => 'incoming-456@example.com', + 'references' => ['', ''] + } + }) + end + let(:reply_message) do + create(:message, + conversation: conversation, + account: account, + message_type: 'outgoing', + content: 'Reply to message with refs') + end + let(:mail) { described_class.email_reply(reply_message).deliver_now } + + before do + incoming_message_with_refs + end + + it 'includes existing references plus the in_reply_to id' do + # Rails returns references as an array when multiple values are present + expected_references = ['ref-1@example.com', 'ref-2@example.com', 'incoming-456@example.com'] + expect(mail.references).to eq(expected_references) + end + end + end + context 'with email reply' do let(:conversation) { create(:conversation, assignee: agent, inbox: email_channel.inbox, account: account).reload } let(:message) { create(:message, conversation: conversation, account: account, message_type: 'outgoing', content: 'Outgoing Message 2') } diff --git a/spec/mailers/references_header_builder_spec.rb b/spec/mailers/references_header_builder_spec.rb new file mode 100644 index 000000000..b10d63dba --- /dev/null +++ b/spec/mailers/references_header_builder_spec.rb @@ -0,0 +1,164 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ReferencesHeaderBuilder do + include described_class + + let(:account) { create(:account) } + let(:email_channel) { create(:channel_email, account: account) } + let(:inbox) { create(:inbox, channel: email_channel, account: account) } + let(:conversation) { create(:conversation, account: account, inbox: inbox) } + + describe '#build_references_header' do + let(:in_reply_to_message_id) { '' } + + context 'when no message is found with the in_reply_to_message_id' do + it 'returns only the in_reply_to message ID' do + result = build_references_header(conversation, in_reply_to_message_id) + expect(result).to eq('') + end + end + + context 'when a message is found with matching source_id' do + context 'with stored References' do + let(:original_message) do + create(:message, conversation: conversation, account: account, + source_id: '', + content_attributes: { + 'email' => { + 'references' => ['', ''] + } + }) + end + + before do + original_message + end + + it 'includes stored References plus in_reply_to' do + result = build_references_header(conversation, in_reply_to_message_id) + expect(result).to eq("\r\n \r\n ") + end + + it 'removes duplicates while preserving order' do + # If in_reply_to is already in the References, it should appear only once at the end + original_message.content_attributes['email']['references'] = ['', ''] + original_message.save! + + result = build_references_header(conversation, in_reply_to_message_id) + message_ids = result.split("\r\n ").map(&:strip) + expect(message_ids).to eq(['', '']) + end + end + + context 'without stored References' do + let(:original_message) do + create(:message, conversation: conversation, account: account, + source_id: 'reply-to-123@example.com', # without angle brackets + content_attributes: { 'email' => {} }) + end + + before do + original_message + end + + it 'returns only the in_reply_to message ID (no rebuild)' do + result = build_references_header(conversation, in_reply_to_message_id) + expect(result).to eq('') + end + end + end + + context 'with folding multiple References' do + let(:original_message) do + create(:message, conversation: conversation, account: account, + source_id: '', + content_attributes: { + 'email' => { + 'references' => ['', '', ''] + } + }) + end + + before do + original_message + end + + it 'folds the header with CRLF between message IDs' do + result = build_references_header(conversation, in_reply_to_message_id) + + expect(result).to include("\r\n") + lines = result.split("\r\n") + + # First line has no leading space, continuation lines do + expect(lines.first).not_to start_with(' ') + expect(lines[1..]).to all(start_with(' ')) + end + end + + context 'with source_id in different formats' do + it 'finds message with source_id without angle brackets' do + create(:message, conversation: conversation, account: account, + source_id: 'test-123@example.com', + content_attributes: { + 'email' => { + 'references' => [''] + } + }) + + result = build_references_header(conversation, '') + expect(result).to eq("\r\n ") + end + + it 'finds message with source_id with angle brackets' do + create(:message, conversation: conversation, account: account, + source_id: '', + content_attributes: { + 'email' => { + 'references' => [''] + } + }) + + result = build_references_header(conversation, 'test-456@example.com') + expect(result).to eq("\r\n test-456@example.com") + end + end + end + + describe '#fold_references_header' do + it 'returns single message ID without folding' do + single_array = [''] + result = fold_references_header(single_array) + + expect(result).to eq('') + expect(result).not_to include("\r\n") + end + + it 'folds multiple message IDs with CRLF + space' do + multiple_array = ['', '', ''] + result = fold_references_header(multiple_array) + + expect(result).to eq("\r\n \r\n ") + end + + it 'ensures RFC 5322 compliance with continuation line spacing' do + multiple_array = ['', ''] + result = fold_references_header(multiple_array) + lines = result.split("\r\n") + + # First line has no leading space (not a continuation line) + expect(lines.first).to eq('') + expect(lines.first).not_to start_with(' ') + + # Second line starts with space (continuation line) + expect(lines[1]).to eq(' ') + expect(lines[1]).to start_with(' ') + end + + it 'handles empty array' do + result = fold_references_header([]) + expect(result).to eq('') + end + end +end diff --git a/spec/presenters/mail_presenter_spec.rb b/spec/presenters/mail_presenter_spec.rb index d5b313ce9..af6768e41 100644 --- a/spec/presenters/mail_presenter_spec.rb +++ b/spec/presenters/mail_presenter_spec.rb @@ -46,6 +46,7 @@ RSpec.describe MailPresenter do :message_id, :multipart, :number_of_attachments, + :references, :subject, :text_content, :to @@ -100,6 +101,31 @@ RSpec.describe MailPresenter do end end + describe '#references' do + let(:references_mail) { create_inbound_email_from_fixture('references.eml').mail } + let(:mail_presenter_with_references) { described_class.new(references_mail) } + + context 'when mail has references' do + it 'returns an array of reference IDs' do + expect(mail_presenter_with_references.references).to eq(['4e6e35f5a38b4_479f13bb90078178@small-app-01.mail', 'test-reference-id']) + end + end + + context 'when mail has no references' do + it 'returns an empty array' do + mail_presenter = described_class.new(mail_without_in_reply_to) + expect(mail_presenter.references).to eq([]) + end + end + + context 'when references are included in serialized_data' do + it 'includes references in the serialized data' do + data = mail_presenter_with_references.serialized_data + expect(data[:references]).to eq(['4e6e35f5a38b4_479f13bb90078178@small-app-01.mail', 'test-reference-id']) + end + end + end + describe 'auto_reply?' do let(:auto_reply_mail) { create_inbound_email_from_fixture('auto_reply.eml').mail } let(:auto_reply_with_auto_submitted_mail) { create_inbound_email_from_fixture('auto_reply_with_auto_submitted.eml').mail } From 75c57ad039341e6681cba726de16c35ccbc49e52 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Wed, 30 Jul 2025 08:58:27 +0400 Subject: [PATCH 04/26] feat: use captain endpoint config in legacy OpenAI base service (#12060) This PR migrates the legacy OpenAI integration (where users provide their own API keys) from using hardcoded `https://api.openai.com` endpoints to use the configurable `CAPTAIN_OPEN_AI_ENDPOINT` from the captain configuration. This ensures consistency across all OpenAI integrations in the platform. ## Changes - Updated `lib/integrations/openai_base_service.rb` to use captain endpoint config - Updated `enterprise/app/models/enterprise/concerns/article.rb` to use captain endpoint config - Removed unused `enterprise/lib/chat_gpt.rb` class - Added tests for endpoint configuration behavior --- .../app/models/enterprise/concerns/article.rb | 10 ++- enterprise/lib/chat_gpt.rb | 62 ------------------- lib/integrations/openai_base_service.rb | 9 ++- .../openai/processor_service_spec.rb | 47 ++++++++++++++ 4 files changed, 63 insertions(+), 65 deletions(-) delete mode 100644 enterprise/lib/chat_gpt.rb diff --git a/enterprise/app/models/enterprise/concerns/article.rb b/enterprise/app/models/enterprise/concerns/article.rb index b7de767ad..d3a94d7b7 100644 --- a/enterprise/app/models/enterprise/concerns/article.rb +++ b/enterprise/app/models/enterprise/concerns/article.rb @@ -68,8 +68,16 @@ module Enterprise::Concerns::Article headers = { 'Content-Type' => 'application/json', 'Authorization' => "Bearer #{ENV.fetch('OPENAI_API_KEY', nil)}" } body = { model: 'gpt-4o', messages: messages, response_format: { type: 'json_object' } }.to_json Rails.logger.info "Requesting Chat GPT with body: #{body}" - response = HTTParty.post('https://api.openai.com/v1/chat/completions', headers: headers, body: body) + response = HTTParty.post(openai_api_url, headers: headers, body: body) Rails.logger.info "Chat GPT response: #{response.body}" JSON.parse(response.parsed_response['choices'][0]['message']['content'])['search_terms'] end + + private + + def openai_api_url + endpoint = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_ENDPOINT')&.value || 'https://api.openai.com/' + endpoint = endpoint.chomp('/') + "#{endpoint}/v1/chat/completions" + end end diff --git a/enterprise/lib/chat_gpt.rb b/enterprise/lib/chat_gpt.rb deleted file mode 100644 index 44afbd641..000000000 --- a/enterprise/lib/chat_gpt.rb +++ /dev/null @@ -1,62 +0,0 @@ -class ChatGpt - def self.base_uri - 'https://api.openai.com' - end - - def initialize(context_sections = '') - @model = 'gpt-4o' - @messages = [system_message(context_sections)] - end - - def generate_response(input, previous_messages = [], role = 'user') - @messages += previous_messages - @messages << { 'role': role, 'content': input } if input.present? - - response = request_gpt - JSON.parse(response['choices'][0]['message']['content'].strip) - end - - private - - def system_message(context_sections) - { - 'role': 'system', - 'content': system_content(context_sections) - } - end - - def system_content(context_sections) - <<~SYSTEM_PROMPT_MESSAGE - You are a very enthusiastic customer support representative who loves to help people. - Your answers will always be formatted in valid JSON hash, as shown below. Never respond in non JSON format. - - ``` - { - response: '' , - context_ids: [ids], - } - ``` - - response: will be the next response to the conversation - - context_ids: will be an array of unique context IDs that were used to generate the answer. choose top 3. - - The answers will be generated using the information provided at the end of the prompt under the context sections. You will not respond outside the context of the information provided in context sections. - - If the answer is not provided in context sections, Respond to the customer and ask whether they want to talk to another support agent . If they ask to Chat with another agent, return `conversation_handoff' as the response in JSON response - - ---------------------------------- - Context sections: - #{context_sections} - SYSTEM_PROMPT_MESSAGE - end - - def request_gpt - headers = { 'Content-Type' => 'application/json', 'Authorization' => "Bearer #{ENV.fetch('OPENAI_API_KEY')}" } - body = { model: @model, messages: @messages, response_format: { type: 'json_object' } }.to_json - Rails.logger.info "Requesting Chat GPT with body: #{body}" - response = HTTParty.post("#{self.class.base_uri}/v1/chat/completions", headers: headers, body: body) - Rails.logger.info "Chat GPT response: #{response.body}" - JSON.parse(response.body) - end -end diff --git a/lib/integrations/openai_base_service.rb b/lib/integrations/openai_base_service.rb index 908e496a7..f06baf5b5 100644 --- a/lib/integrations/openai_base_service.rb +++ b/lib/integrations/openai_base_service.rb @@ -4,7 +4,6 @@ class Integrations::OpenaiBaseService # sticking with 120000 to be safe # 120000 * 4 = 480,000 characters (rounding off downwards to 400,000 to be safe) TOKEN_LIMIT = 400_000 - API_URL = 'https://api.openai.com/v1/chat/completions'.freeze GPT_MODEL = ENV.fetch('OPENAI_GPT_MODEL', 'gpt-4o-mini').freeze ALLOWED_EVENT_NAMES = %w[rephrase summarize reply_suggestion fix_spelling_grammar shorten expand make_friendly make_formal simplify].freeze @@ -81,6 +80,12 @@ class Integrations::OpenaiBaseService self.class::CACHEABLE_EVENTS.include?(event_name) end + def api_url + endpoint = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_ENDPOINT')&.value || 'https://api.openai.com/' + endpoint = endpoint.chomp('/') + "#{endpoint}/v1/chat/completions" + end + def make_api_call(body) headers = { 'Content-Type' => 'application/json', @@ -88,7 +93,7 @@ class Integrations::OpenaiBaseService } Rails.logger.info("OpenAI API request: #{body}") - response = HTTParty.post(API_URL, headers: headers, body: body) + response = HTTParty.post(api_url, headers: headers, body: body) Rails.logger.info("OpenAI API response: #{response.body}") return { error: response.parsed_response, error_code: response.code } unless response.success? diff --git a/spec/lib/integrations/openai/processor_service_spec.rb b/spec/lib/integrations/openai/processor_service_spec.rb index 8bbf5d5fb..a22c8e815 100644 --- a/spec/lib/integrations/openai/processor_service_spec.rb +++ b/spec/lib/integrations/openai/processor_service_spec.rb @@ -253,5 +253,52 @@ RSpec.describe Integrations::Openai::ProcessorService do expect(result).to eq({ :message => 'This is a reply from openai.' }) end end + + context 'when testing endpoint configuration' do + let(:event) { { 'name' => 'rephrase', 'data' => { 'content' => 'test message' } } } + + context 'when CAPTAIN_OPEN_AI_ENDPOINT is not configured' do + it 'uses default OpenAI endpoint' do + InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_ENDPOINT')&.destroy + + stub_request(:post, 'https://api.openai.com/v1/chat/completions') + .with(body: anything, headers: expected_headers) + .to_return(status: 200, body: openai_response, headers: {}) + + result = subject.perform + expect(result).to eq({ :message => 'This is a reply from openai.' }) + end + end + + context 'when CAPTAIN_OPEN_AI_ENDPOINT is configured' do + before do + create(:installation_config, name: 'CAPTAIN_OPEN_AI_ENDPOINT', value: 'https://custom.azure.com/') + end + + it 'uses custom endpoint' do + stub_request(:post, 'https://custom.azure.com/v1/chat/completions') + .with(body: anything, headers: expected_headers) + .to_return(status: 200, body: openai_response, headers: {}) + + result = subject.perform + expect(result).to eq({ :message => 'This is a reply from openai.' }) + end + end + + context 'when CAPTAIN_OPEN_AI_ENDPOINT has trailing slash' do + before do + create(:installation_config, name: 'CAPTAIN_OPEN_AI_ENDPOINT', value: 'https://custom.azure.com/') + end + + it 'properly handles trailing slash' do + stub_request(:post, 'https://custom.azure.com/v1/chat/completions') + .with(body: anything, headers: expected_headers) + .to_return(status: 200, body: openai_response, headers: {}) + + result = subject.perform + expect(result).to eq({ :message => 'This is a reply from openai.' }) + end + end + end end end From 62b36d4aec2318e2f4c7b87605bfc9b94dac568e Mon Sep 17 00:00:00 2001 From: Chatwoot Bot <92152627+chatwoot-bot@users.noreply.github.com> Date: Tue, 29 Jul 2025 23:06:32 -0700 Subject: [PATCH 05/26] chore: Update translations (#12056) --- app/javascript/dashboard/i18n/locale/pl/agentBots.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/dashboard/i18n/locale/pl/agentBots.json b/app/javascript/dashboard/i18n/locale/pl/agentBots.json index d861bdead..6060d7e43 100644 --- a/app/javascript/dashboard/i18n/locale/pl/agentBots.json +++ b/app/javascript/dashboard/i18n/locale/pl/agentBots.json @@ -2,7 +2,7 @@ "AGENT_BOTS": { "HEADER": "Boty", "LOADING_EDITOR": "Ładowanie edytora...", - "DESCRIPTION": "Agent Bots are like the most fabulous members of your team. They can handle the small stuff, so you can focus on the stuff that matters. Give them a try. You can manage your bots from this page or create new ones using the 'Add Bot' button.", + "DESCRIPTION": "Boty agentów są jak najbardziej fantastyczni członkowie Twojego zespołu. Mogą zajmować się drobnymi sprawami, dzięki czemu Ty możesz skupić się na tym, co naprawdę ważne. Wypróbuj je! Możesz zarządzać swoimi botami z tej strony lub tworzyć nowe za pomocą przycisku 'Dodaj bota'.", "LEARN_MORE": "Learn about agent bots", "GLOBAL_BOT": "System bot", "GLOBAL_BOT_BADGE": "System", @@ -30,10 +30,10 @@ } }, "LIST": { - "404": "No bots found. You can create a bot by clicking the 'Add Bot' button.", + "404": "Nie znaleziono botów. Możesz utworzyć bota klikając przycisk 'Dodaj bota'.", "LOADING": "Pobieranie botów...", "TABLE_HEADER": { - "DETAILS": "Bot Details", + "DETAILS": "Szczegóły bota", "URL": "Adres URL webhooka" } }, From 1230d1f2512e5f2135564a91aff4974d43c26094 Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Wed, 30 Jul 2025 11:07:18 +0400 Subject: [PATCH 06/26] chore: Added support for inbox variables (#11952) --- .../components/widgets/conversation/ReplyBox.vue | 1 + app/javascript/shared/constants/messages.js | 8 ++++++++ package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue index 8bf81d0c3..e5243ac04 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue @@ -372,6 +372,7 @@ export default { const variables = getMessageVariables({ conversation: this.currentChat, contact: this.currentContact, + inbox: this.inbox, }); return variables; }, diff --git a/app/javascript/shared/constants/messages.js b/app/javascript/shared/constants/messages.js index f5fa834fc..7b7b4f331 100644 --- a/app/javascript/shared/constants/messages.js +++ b/app/javascript/shared/constants/messages.js @@ -157,6 +157,14 @@ export const MESSAGE_VARIABLES = [ label: 'Agent email', key: 'agent.email', }, + { + key: 'inbox.name', + label: 'Inbox name', + }, + { + label: 'Inbox id', + key: 'inbox.id', + }, ]; export const ATTACHMENT_ICONS = { diff --git a/package.json b/package.json index e0fd2cf7b..668ea8b57 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@breezystack/lamejs": "^1.2.7", "@chatwoot/ninja-keys": "1.2.3", "@chatwoot/prosemirror-schema": "1.1.6-next", - "@chatwoot/utils": "^0.0.47", + "@chatwoot/utils": "^0.0.48", "@formkit/core": "^1.6.7", "@formkit/vue": "^1.6.7", "@hcaptcha/vue3-hcaptcha": "^1.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a88cfc084..16e830a87 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,8 @@ importers: specifier: 1.1.6-next version: 1.1.6-next '@chatwoot/utils': - specifier: ^0.0.47 - version: 0.0.47 + specifier: ^0.0.48 + version: 0.0.48 '@formkit/core': specifier: ^1.6.7 version: 1.6.7 @@ -406,8 +406,8 @@ packages: '@chatwoot/prosemirror-schema@1.1.6-next': resolution: {integrity: sha512-9lf7FrcED/B5oyGrMmIkbegkhlC/P0NrtXoX8k94YWRosZcx0hGVGhpTud+0Mhm7saAfGerKIwTRVDmmnxPuCA==} - '@chatwoot/utils@0.0.47': - resolution: {integrity: sha512-0z/MY+rBjDnf6zuWbMdzexH+zFDXU/g5fPr/kcUxnqtvPsZIQpL8PvwSPBW0+wS6R7LChndNkdviV1e9H8Yp+Q==} + '@chatwoot/utils@0.0.48': + resolution: {integrity: sha512-67M2lvpBp0Ciczv1uRzabOXSCGiEeJE3wYVoPAxkqI35CJSkotu4tSX2TFOwagUQoRyU6F8YV3xXGfCpDN9WAA==} engines: {node: '>=10'} '@codemirror/commands@6.7.0': @@ -5255,7 +5255,7 @@ snapshots: prosemirror-utils: 1.2.2(prosemirror-model@1.22.3)(prosemirror-state@1.4.3) prosemirror-view: 1.34.1 - '@chatwoot/utils@0.0.47': + '@chatwoot/utils@0.0.48': dependencies: date-fns: 2.30.0 From df4de508e70deefb8fa88b09bc69add7a0bdb798 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Wed, 30 Jul 2025 19:34:27 +0530 Subject: [PATCH 07/26] feat: New Scenarios page (#11975) --- .../dashboard/api/captain/scenarios.js | 36 ++ app/javascript/dashboard/api/captain/tools.js | 16 + .../components-next/Editor/Editor.vue | 2 + .../captain/assistant/AddNewRulesDialog.vue | 6 +- .../assistant/AddNewScenariosDialog.vue | 155 +++++++++ .../captain/assistant/RuleCard.vue | 1 - .../captain/assistant/ScenariosCard.story.vue | 45 +++ .../captain/assistant/ScenariosCard.vue | 218 ++++++++++++ .../captain/assistant/ToolsDropdown.story.vue | 37 ++ .../captain/assistant/ToolsDropdown.vue | 54 +++ .../components/widgets/WootWriter/Editor.vue | 26 +- .../widgets/conversation/TagTools.vue | 56 +++ .../helper/AnalyticsHelper/events.js | 1 + .../dashboard/helper/editorHelper.js | 11 + .../i18n/locale/en/integrations.json | 69 ++++ .../captain/assistants/guardrails/Index.vue | 5 + .../captain/assistants/guidelines/Index.vue | 7 + .../captain/assistants/scenarios/Index.vue | 320 ++++++++++++++++++ .../captain/assistants/settings/Settings.vue | 2 +- .../dashboard/captain/captain.routes.js | 16 + .../dashboard/store/captain/scenarios.js | 38 +++ .../dashboard/store/captain/tools.js | 24 ++ app/javascript/dashboard/store/index.js | 4 + .../captain/scenarios/index.json.jbuilder | 7 +- package.json | 2 +- pnpm-lock.yaml | 10 +- .../captain/scenarios_controller_spec.rb | 8 +- 27 files changed, 1161 insertions(+), 15 deletions(-) create mode 100644 app/javascript/dashboard/api/captain/scenarios.js create mode 100644 app/javascript/dashboard/api/captain/tools.js create mode 100644 app/javascript/dashboard/components-next/captain/assistant/AddNewScenariosDialog.vue create mode 100644 app/javascript/dashboard/components-next/captain/assistant/ScenariosCard.story.vue create mode 100644 app/javascript/dashboard/components-next/captain/assistant/ScenariosCard.vue create mode 100644 app/javascript/dashboard/components-next/captain/assistant/ToolsDropdown.story.vue create mode 100644 app/javascript/dashboard/components-next/captain/assistant/ToolsDropdown.vue create mode 100644 app/javascript/dashboard/components/widgets/conversation/TagTools.vue create mode 100644 app/javascript/dashboard/routes/dashboard/captain/assistants/scenarios/Index.vue create mode 100644 app/javascript/dashboard/store/captain/scenarios.js create mode 100644 app/javascript/dashboard/store/captain/tools.js diff --git a/app/javascript/dashboard/api/captain/scenarios.js b/app/javascript/dashboard/api/captain/scenarios.js new file mode 100644 index 000000000..3e61c28a3 --- /dev/null +++ b/app/javascript/dashboard/api/captain/scenarios.js @@ -0,0 +1,36 @@ +/* global axios */ +import ApiClient from '../ApiClient'; + +class CaptainScenarios extends ApiClient { + constructor() { + super('captain/assistants', { accountScoped: true }); + } + + get({ assistantId, page = 1, searchKey } = {}) { + return axios.get(`${this.url}/${assistantId}/scenarios`, { + params: { page, searchKey }, + }); + } + + show({ assistantId, id }) { + return axios.get(`${this.url}/${assistantId}/scenarios/${id}`); + } + + create({ assistantId, ...data } = {}) { + return axios.post(`${this.url}/${assistantId}/scenarios`, { + scenario: data, + }); + } + + update({ assistantId, id }, data = {}) { + return axios.put(`${this.url}/${assistantId}/scenarios/${id}`, { + scenario: data, + }); + } + + delete({ assistantId, id }) { + return axios.delete(`${this.url}/${assistantId}/scenarios/${id}`); + } +} + +export default new CaptainScenarios(); diff --git a/app/javascript/dashboard/api/captain/tools.js b/app/javascript/dashboard/api/captain/tools.js new file mode 100644 index 000000000..20edaa95e --- /dev/null +++ b/app/javascript/dashboard/api/captain/tools.js @@ -0,0 +1,16 @@ +/* global axios */ +import ApiClient from '../ApiClient'; + +class CaptainTools extends ApiClient { + constructor() { + super('captain/assistants/tools', { accountScoped: true }); + } + + get(params = {}) { + return axios.get(this.url, { + params, + }); + } +} + +export default new CaptainTools(); diff --git a/app/javascript/dashboard/components-next/Editor/Editor.vue b/app/javascript/dashboard/components-next/Editor/Editor.vue index 9e5ff6ab5..a2f139bdc 100644 --- a/app/javascript/dashboard/components-next/Editor/Editor.vue +++ b/app/javascript/dashboard/components-next/Editor/Editor.vue @@ -20,6 +20,7 @@ const props = defineProps({ enableVariables: { type: Boolean, default: false }, enableCannedResponses: { type: Boolean, default: true }, enabledMenuOptions: { type: Array, default: () => [] }, + enableCaptainTools: { type: Boolean, default: false }, }); const emit = defineEmits(['update:modelValue']); @@ -98,6 +99,7 @@ watch( :enable-variables="enableVariables" :enable-canned-responses="enableCannedResponses" :enabled-menu-options="enabledMenuOptions" + :enable-captain-tools="enableCaptainTools" @input="handleInput" @focus="handleFocus" @blur="handleBlur" diff --git a/app/javascript/dashboard/components-next/captain/assistant/AddNewRulesDialog.vue b/app/javascript/dashboard/components-next/captain/assistant/AddNewRulesDialog.vue index ecdb2d654..c1a465c64 100644 --- a/app/javascript/dashboard/components-next/captain/assistant/AddNewRulesDialog.vue +++ b/app/javascript/dashboard/components-next/captain/assistant/AddNewRulesDialog.vue @@ -1,5 +1,6 @@