-
+
+
<%= @portal.name %>
<%= portal.header_text %>
-
<%= I18n.t('public_portal.hero.sub_title') %>
+
<%= I18n.t('public_portal.hero.sub_title') %>
diff --git a/app/views/public/api/v1/portals/_mobile_menu.html.erb b/app/views/public/api/v1/portals/_mobile_menu.html.erb
new file mode 100644
index 000000000..d4c88da32
--- /dev/null
+++ b/app/views/public/api/v1/portals/_mobile_menu.html.erb
@@ -0,0 +1,83 @@
+
+
+
+
+
+
diff --git a/config/locales/am.yml b/config/locales/am.yml
index 3c756c85f..c773e3081 100644
--- a/config/locales/am.yml
+++ b/config/locales/am.yml
@@ -172,6 +172,8 @@ am:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ am:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 7c587b0a3..5a6463359 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -172,6 +172,8 @@ ar:
sla:
added: '%{user_name} أضاف سياسة مستوى الخدمة %{sla_name}'
removed: '%{user_name} أزال سياسة مستوى الخدمة %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} كتم صوت المحادثة'
unmuted: '%{user_name} قام بإلغاء كتم المحادثة'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ar:
made_with: صنع بـ
header:
go_to_homepage: الموقع الإلكتروني
+ visit_website: Visit website
appearance:
system: النظام
light: فاتح
diff --git a/config/locales/az.yml b/config/locales/az.yml
index cc80814e1..c9d2c1ac9 100644
--- a/config/locales/az.yml
+++ b/config/locales/az.yml
@@ -172,6 +172,8 @@ az:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ az:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 88dd447b2..2ab74952f 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -172,6 +172,8 @@ bg:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ bg:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index eb2f76d89..7daabbd99 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -172,6 +172,8 @@ ca:
sla:
added: '%{user_name} ha afegit la política de SLA %{sla_name}'
removed: '%{user_name} ha eliminat la política de SLA %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} ha silenciat la conversa'
unmuted: '%{user_name} ha desactivat el silenci de la conversa'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ca:
made_with: Fet amb
header:
go_to_homepage: Lloc web
+ visit_website: Visit website
appearance:
system: Sistema
light: Clar
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index caceea531..75a840336 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -172,6 +172,8 @@ cs:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} ztlumil/a konverzaci'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ cs:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/da.yml b/config/locales/da.yml
index d05f4e485..5f4a816da 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -172,6 +172,8 @@ da:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} har slukket for samtalen'
unmuted: '%{user_name} har genaktiveret samtalen'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ da:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 8a53d4284..29ca84b45 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -172,6 +172,8 @@ de:
sla:
added: '%{user_name} hat SLA-Richtlinie %{sla_name} hinzugefügt'
removed: '%{user_name} hat SLA-Richtlinie %{sla_name} entfernt'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} hat das Gespräch stumm geschaltet'
unmuted: '%{user_name} hat das Gespräch laut gestellt'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ de:
made_with: Erstellt mit
header:
go_to_homepage: Webseite
+ visit_website: Visit website
appearance:
system: System
light: Hell
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 74b13bdd9..8e15701ae 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -172,6 +172,8 @@ el:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: 'Ο χρήστης %{user_name} σίγασε την συνομιλία'
unmuted: 'Ο χρήστης %{user_name} επανάφερε από την σίγαση την συνομιλία'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ el:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 74177f7dd..463aa713e 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -152,6 +152,8 @@ en:
instagram_story_content: '%{story_sender} mentioned you in the story: '
instagram_deleted_story_content: This story is no longer available.
deleted: This message was deleted
+ whatsapp:
+ list_button_label: 'Choose an item'
delivery_status:
error_code: 'Error code: %{error_code}'
activity:
@@ -186,6 +188,8 @@ en:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -286,6 +290,7 @@ en:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 85197fc27..82b604ddb 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -172,6 +172,8 @@ es:
sla:
added: '%{user_name} agregó la política de SLA %{sla_name}'
removed: '%{user_name} eliminó la política de SLA %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} ha silenciado la conversación'
unmuted: '%{user_name} ha anulado el silenciado de la conversación'
auto_resolution_message: 'Resolviendo la conversación, ya que ha estado inactiva durante un tiempo. Por favor, inicia una nueva conversación si necesitas más ayuda.'
@@ -272,6 +274,7 @@ es:
made_with: Hecho con
header:
go_to_homepage: Sitio web
+ visit_website: Visit website
appearance:
system: Sistema
light: Claro
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 1297f75d0..6cdc532a7 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -172,6 +172,8 @@ fa:
sla:
added: '%{user_name} سیاست SLA %{sla_name} را اضافه کرد'
removed: '%{user_name} سیاست SLA %{sla_name} را حذف کرد'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} مکالمه را بی صدا کرد'
unmuted: '%{user_name} مکالمه را از حالت بی صدا خراج کرد'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ fa:
made_with: ساخته شده با
header:
go_to_homepage: وب سایت
+ visit_website: Visit website
appearance:
system: سیستم
light: روشن
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 919570bb7..94ff6cb9c 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -172,6 +172,8 @@ fi:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} mykisti keskustelun'
unmuted: '%{user_name} poisti keskustelun mykistyksen'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ fi:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 1cf7220d0..406d69b55 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -172,6 +172,8 @@ fr:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} a mis la conversation en sourdine'
unmuted: '%{user_name} a rétabli le son de la conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ fr:
made_with: Réalisé avec
header:
go_to_homepage: Site internet
+ visit_website: Visit website
appearance:
system: Système
light: Clair
diff --git a/config/locales/he.yml b/config/locales/he.yml
index d8dd32e10..0945e2f50 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -172,6 +172,8 @@ he:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ he:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/hi.yml b/config/locales/hi.yml
index 1523a74c0..76055318c 100644
--- a/config/locales/hi.yml
+++ b/config/locales/hi.yml
@@ -172,6 +172,8 @@ hi:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ hi:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index 3b28e8fe0..23aa9555e 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -172,6 +172,8 @@ hr:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ hr:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index f7b484d63..b9bb386a5 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -172,6 +172,8 @@ hu:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} elnémította a beszélgetést'
unmuted: '%{user_name} kikapcsolta a beszélgetés elnémítását'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ hu:
made_with: 'Ezzel készítve: '
header:
go_to_homepage: Honlap
+ visit_website: Visit website
appearance:
system: Rendszer
light: Világos mód
diff --git a/config/locales/hy.yml b/config/locales/hy.yml
index 26505f10b..acf78ed4d 100644
--- a/config/locales/hy.yml
+++ b/config/locales/hy.yml
@@ -172,6 +172,8 @@ hy:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ hy:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 944262d17..4c039011c 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -172,6 +172,8 @@ id:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} me-mute percakapan'
unmuted: '%{user_name} telah un-mute percakapan'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ id:
made_with: Dibuat oleh
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: Sistem
light: Light
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 3cfe3fbff..cf97814e2 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -172,6 +172,8 @@ is:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ is:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 047fca00d..e6ab55115 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -172,6 +172,8 @@ it:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} ha silenziato la conversazione'
unmuted: '%{user_name} ha riattivato l''audio della conversazione'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ it:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index f1d571634..928ac3e71 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -172,6 +172,8 @@ ja:
sla:
added: '%{user_name} がSLAポリシー "%{sla_name}" を追加しました'
removed: '%{user_name} がSLAポリシー "%{sla_name}" を削除しました'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} が会話をミュートしました'
unmuted: '%{user_name} が会話のミュートを解除しました'
auto_resolution_message: '会話がしばらく非アクティブのため、解決済みとして処理します。引き続きサポートが必要な場合は、新しい会話を開始してください。'
@@ -272,6 +274,7 @@ ja:
made_with: 作成
header:
go_to_homepage: ウェブサイト
+ visit_website: Visit website
appearance:
system: システム
light: ライト
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 638963262..4154ddf14 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -172,6 +172,8 @@ ka:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ka:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 6e249a23c..e76883f44 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -172,6 +172,8 @@ ko:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ko:
made_with: Made with
header:
go_to_homepage: 홈페이지
+ visit_website: Visit website
appearance:
system: 시스템
light: 밝게
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 1f9e894e8..dc093901f 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -172,6 +172,8 @@ lt:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} nutildė pokalbį'
unmuted: '%{user_name} įjungė pokalbio garsą'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ lt:
made_with: Padaryta su
header:
go_to_homepage: Internetinis puslapis
+ visit_website: Visit website
appearance:
system: Sistema
light: Šviesus
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index 362bf889b..dab14d39f 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -172,6 +172,8 @@ lv:
sla:
added: '%{user_name} pievienoja SLA politiku %{sla_name}'
removed: '%{user_name} noņēma SLA politiku %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} izslēdza sarunu'
unmuted: '%{user_name} ieslēdza sarunu'
auto_resolution_message: 'Saruna tiek pabeigta, jo tā kādu laiku ir bijusi neaktīva. Ja nepieciešama papildu palīdzība, lūdzu, sāciet jaunu sarunu.'
@@ -272,6 +274,7 @@ lv:
made_with: Veidots ar
header:
go_to_homepage: Tīmekļa vietne
+ visit_website: Visit website
appearance:
system: Sistēma
light: Gaišs
diff --git a/config/locales/ml.yml b/config/locales/ml.yml
index 3acea5598..df5f3f329 100644
--- a/config/locales/ml.yml
+++ b/config/locales/ml.yml
@@ -172,6 +172,8 @@ ml:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ml:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/ms.yml b/config/locales/ms.yml
index b8a1749d0..536fe8134 100644
--- a/config/locales/ms.yml
+++ b/config/locales/ms.yml
@@ -172,6 +172,8 @@ ms:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ms:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/ne.yml b/config/locales/ne.yml
index 841c574f6..a1e2e478d 100644
--- a/config/locales/ne.yml
+++ b/config/locales/ne.yml
@@ -172,6 +172,8 @@ ne:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ne:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 735480328..85ca07291 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -172,6 +172,8 @@ nl:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ nl:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: Systeem
light: Light
diff --git a/config/locales/no.yml b/config/locales/no.yml
index a1f50775d..130c554db 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -172,6 +172,8 @@
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} har dempet samtalen'
unmuted: '%{user_name} har opphevet dempingen av samtalen'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 963051c7b..d589af5c5 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -172,6 +172,8 @@ pl:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} wyciszył/a rozmowę'
unmuted: '%{user_name} cofnął wyciszenie rozmowy'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ pl:
made_with: Wykonane z
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index 1521bf52e..e725e619a 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -172,6 +172,8 @@ pt:
sla:
added: '%{user_name} adicionou uma política de SLA %{sla_name}'
removed: '%{user_name} removeu a política de SLA de %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} bloqueou a conversa'
unmuted: '%{user_name} reativou a conversa'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ pt:
made_with: Feito com
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: Sistema
light: Claro
diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml
index 965982b8f..19570ab07 100644
--- a/config/locales/pt_BR.yml
+++ b/config/locales/pt_BR.yml
@@ -138,6 +138,8 @@ pt_BR:
instagram_story_content: '%{story_sender} mencionou você na conversa: '
instagram_deleted_story_content: Este Story não está mais disponível.
deleted: Esta mensagem foi excluída
+ whatsapp:
+ list_button_label: 'Escolha um item'
delivery_status:
error_code: 'Código de erro: %{error_code}'
activity:
@@ -172,6 +174,8 @@ pt_BR:
sla:
added: '%{user_name} adicionou política de SLA %{sla_name}'
removed: '%{user_name} removeu a política de SLA %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'Pesquisa CSAT não foi enviada devido a restrições de envio de mensagens'
muted: '%{user_name} silenciou a conversa'
unmuted: '%{user_name} reativou a conversa'
auto_resolution_message: 'Resolvendo a conversa dado que está inativa por um tempo. Por favor, inicie uma nova conversa se precisar de mais ajuda.'
@@ -211,7 +215,7 @@ pt_BR:
slack:
name: 'Slack'
short_description: 'Receba notificações e responda as conversas diretamente no Slack.'
- description: "Integre Chatwoot com Slack para manter seu time em sincronia. Essa integração permite que você receba notificações de novas conversas e as responda diretamente na interface do Slack."
+ description: 'Integre Chatwoot com Slack para manter seu time em sincronia. Essa integração permite que você receba notificações de novas conversas e as responda diretamente na interface do Slack.'
webhooks:
name: 'Webhooks'
description: 'Eventos webhook fornecem atualizações sobre atividades em tempo real na sua conta Chatwoot. Você pode se inscrever em seus eventos preferidos, e o Chatwoot enviará as chamadas HTTP com as atualizações.'
@@ -222,7 +226,7 @@ pt_BR:
google_translate:
name: 'Tradutor do Google'
short_description: 'Traduzir automaticamente mensagens de clientes para agentes.'
- description: "Integre o Google Tradutor para ajudar os agentes a traduzir facilmente as mensagens dos clientes. Esta integração detecta automaticamente o idioma e o converte para o idioma preferido do agente ou do administrador."
+ description: 'Integre o Google Tradutor para ajudar os agentes a traduzir facilmente as mensagens dos clientes. Esta integração detecta automaticamente o idioma e o converte para o idioma preferido do agente ou do administrador.'
openai:
name: 'OpenAI'
short_description: 'Sugestões, resumos e aprimoramento de mensagem e resposta com IA.'
@@ -272,6 +276,7 @@ pt_BR:
made_with: Criado com
header:
go_to_homepage: Site
+ visit_website: Visit website
appearance:
system: Sistema
light: Claro
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index c284925cd..3b5d6858e 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -172,6 +172,8 @@ ro:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} a dezactivat conversația'
unmuted: '%{user_name} a activat conversația'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ro:
made_with: Realizat cu
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: Sistem
light: Light
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 418b6f025..3f6a4bbee 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -172,6 +172,8 @@ ru:
sla:
added: '%{user_name} добавил политику SLA %{sla_name}'
removed: '%{user_name} удалил политику SLA %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} заглушил(а) этот разговор'
unmuted: '%{user_name} включил(а) уведомления для разговора'
auto_resolution_message: 'Разговор закрывается, поскольку он был неактивен в течение длительного времени. Пожалуйста, начните новый разговор, если потребуется дополнительная помощь.'
@@ -272,6 +274,7 @@ ru:
made_with: Сделано с
header:
go_to_homepage: Сайт
+ visit_website: Visit website
appearance:
system: Система
light: Светлая
diff --git a/config/locales/sh.yml b/config/locales/sh.yml
index 4f5be6aaa..204a213c0 100644
--- a/config/locales/sh.yml
+++ b/config/locales/sh.yml
@@ -172,6 +172,8 @@ sh:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ sh:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 26bd825ee..29aec1757 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -172,6 +172,8 @@ sk:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} stlmil konverzáciu'
unmuted: '%{user_name} odtlmil konverzáciu'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ sk:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 7c2a00b22..eb3f30350 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -172,6 +172,8 @@ sl:
sla:
added: '%{user_name} je dodal politiko SLA %{sla_name}'
removed: '%{user_name} je odstranil politiko SLA %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} je utišal pogovor'
unmuted: '%{user_name} je vklopil sporočila pogovora'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ sl:
made_with: Narejeno z
header:
go_to_homepage: Spletna stran
+ visit_website: Visit website
appearance:
system: Sistem
light: Svetlo
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index 9d3edc96c..8509dc3d0 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -172,6 +172,8 @@ sq:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ sq:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 0dc74a5ae..e8f1006a8 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -172,6 +172,8 @@ sr-Latn:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} je utišao razgovor'
unmuted: '%{user_name} je uklonio utišanje razgovora'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ sr-Latn:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 0c4027142..4953c85da 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -172,6 +172,8 @@ sv:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} har tystat konversationen'
unmuted: '%{user_name} har avtystat konversationen'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ sv:
made_with: Gjord med
header:
go_to_homepage: Hemsida
+ visit_website: Visit website
appearance:
system: System
light: Ljus
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index 875701bde..a7571007f 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -172,6 +172,8 @@ ta:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ta:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 60c8cecb3..b1b9bd8d7 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -172,6 +172,8 @@ th:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ th:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/tl.yml b/config/locales/tl.yml
index 6d4290bad..8c3d209fa 100644
--- a/config/locales/tl.yml
+++ b/config/locales/tl.yml
@@ -172,6 +172,8 @@ tl:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ tl:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index e99700e45..2f045ad5a 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -172,6 +172,8 @@ tr:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name}, sohbeti sessize aldı'
unmuted: '%{user_name} konuşmanın sesini açtı'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ tr:
made_with: İle yapılmıştır
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: Sistem
light: Açık Mod
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 736bbecf8..a51af682d 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -172,6 +172,8 @@ uk:
sla:
added: '%{user_name} додав політику SLA %{sla_name}'
removed: '%{user_name} видалив політику SLA %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} включив безвучний режим'
unmuted: '%{user_name} виключив безвучний режим'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ uk:
made_with: Зроблено з
header:
go_to_homepage: Вебсайт
+ visit_website: Visit website
appearance:
system: Системна
light: Світла
diff --git a/config/locales/ur.yml b/config/locales/ur.yml
index c553bb8ac..2a84171c2 100644
--- a/config/locales/ur.yml
+++ b/config/locales/ur.yml
@@ -172,6 +172,8 @@ ur:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ur:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/ur_IN.yml b/config/locales/ur_IN.yml
index 884928dbe..4cbeef832 100644
--- a/config/locales/ur_IN.yml
+++ b/config/locales/ur_IN.yml
@@ -172,6 +172,8 @@ ur:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} has muted the conversation'
unmuted: '%{user_name} has unmuted the conversation'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ ur:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index 1ad0c8654..c626577e6 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -172,6 +172,8 @@ vi:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} đã tắt tiếng hội thoại'
unmuted: '%{user_name} đã bật tiếng cuộc trò chuyện'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ vi:
made_with: Tạo bởi
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/config/locales/zh_CN.yml b/config/locales/zh_CN.yml
index e7b1d406b..d071daa47 100644
--- a/config/locales/zh_CN.yml
+++ b/config/locales/zh_CN.yml
@@ -172,6 +172,8 @@ zh_CN:
sla:
added: '%{user_name} 添加了 SLA 策略 %{sla_name}'
removed: '%{user_name} 移除了 SLA 策略 %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} 已将会话静音'
unmuted: '%{user_name} 已将会话取消静音'
auto_resolution_message: '由于对话长时间未活跃,已将其标记为已解决。如果您需要进一步帮助,请开始新的对话。'
@@ -272,6 +274,7 @@ zh_CN:
made_with: 制作于
header:
go_to_homepage: 网站
+ visit_website: Visit website
appearance:
system: 系统
light: 浅色
diff --git a/config/locales/zh_TW.yml b/config/locales/zh_TW.yml
index bf96f23e2..26a4b7e5d 100644
--- a/config/locales/zh_TW.yml
+++ b/config/locales/zh_TW.yml
@@ -172,6 +172,8 @@ zh_TW:
sla:
added: '%{user_name} added SLA policy %{sla_name}'
removed: '%{user_name} removed SLA policy %{sla_name}'
+ csat:
+ not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions'
muted: '%{user_name} 已將對話靜音'
unmuted: '%{user_name} 將對話解除靜音'
auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.'
@@ -272,6 +274,7 @@ zh_TW:
made_with: Made with
header:
go_to_homepage: Website
+ visit_website: Visit website
appearance:
system: System
light: Light
diff --git a/spec/controllers/api/v1/profiles_controller_spec.rb b/spec/controllers/api/v1/profiles_controller_spec.rb
index 8af9e30c0..30c5b69f4 100644
--- a/spec/controllers/api/v1/profiles_controller_spec.rb
+++ b/spec/controllers/api/v1/profiles_controller_spec.rb
@@ -94,6 +94,18 @@ RSpec.describe 'Profile API', type: :request do
expect(agent.reload.valid_password?('Test1234!')).to be true
end
+ it 'does not reset the display name if updates the password' do
+ display_name = agent.display_name
+
+ put '/api/v1/profile',
+ params: { profile: { current_password: 'Test123!', password: 'Test1234!', password_confirmation: 'Test1234!' } },
+ headers: agent.create_new_auth_token,
+ as: :json
+
+ expect(response).to have_http_status(:success)
+ expect(agent.reload.display_name).to eq(display_name)
+ end
+
it 'throws error when current password provided is invalid' do
put '/api/v1/profile',
params: { profile: { current_password: 'Test', password: 'test123', password_confirmation: 'test123' } },
diff --git a/spec/listeners/csat_survey_listener_spec.rb b/spec/listeners/csat_survey_listener_spec.rb
index 9161c4e71..0f957dcb4 100644
--- a/spec/listeners/csat_survey_listener_spec.rb
+++ b/spec/listeners/csat_survey_listener_spec.rb
@@ -13,6 +13,8 @@ describe CsatSurveyListener do
)
end
let!(:event) { Events::Base.new(event_name, Time.zone.now, message: message) }
+ let!(:csat_enabled_inbox) { create(:inbox, account: account, csat_survey_enabled: true) }
+ let!(:resolved_conversation) { create(:conversation, account: account, inbox: csat_enabled_inbox, status: :resolved) }
describe '#message_updated' do
let(:event_name) { 'message.updated' }
@@ -33,4 +35,33 @@ describe CsatSurveyListener do
end
end
end
+
+ describe '#conversation_status_changed' do
+ let(:event_name) { 'conversation.status_changed' }
+ let(:csat_service) { double }
+
+ before do
+ allow(resolved_conversation).to receive(:saved_change_to_status?).and_return(true)
+ end
+
+ context 'when conversation is resolved and CSAT is enabled' do
+ it 'triggers CSAT survey service' do
+ event = Events::Base.new(event_name, Time.zone.now, conversation: resolved_conversation)
+ expect(csat_service).to receive(:perform)
+ expect(CsatSurveyService).to receive(:new).with(conversation: resolved_conversation).and_return(csat_service)
+
+ listener.conversation_status_changed(event)
+ end
+ end
+
+ context 'when conversation is not resolved' do
+ it 'does not trigger CSAT survey service' do
+ open_conversation = create(:conversation, account: account, inbox: csat_enabled_inbox, status: :open)
+ event = Events::Base.new(event_name, Time.zone.now, conversation: open_conversation)
+
+ expect(CsatSurveyService).not_to receive(:new)
+ listener.conversation_status_changed(event)
+ end
+ end
+ end
end
diff --git a/spec/models/message_spec.rb b/spec/models/message_spec.rb
index b4be3ac5a..3bf64a231 100644
--- a/spec/models/message_spec.rb
+++ b/spec/models/message_spec.rb
@@ -478,32 +478,57 @@ RSpec.describe Message do
describe '#content' do
let(:conversation) { create(:conversation) }
- let(:message) { create(:message, conversation: conversation, content_type: 'input_csat', content: 'Original content') }
- it 'returns original content for web widget inbox' do
- allow(message.inbox).to receive(:web_widget?).and_return(true)
- expect(message.content).to eq('Original content')
+ context 'when message is not input_csat' do
+ let(:message) { create(:message, conversation: conversation, content_type: 'text', content: 'Regular message') }
+
+ it 'returns original content' do
+ expect(message.content).to eq('Regular message')
+ end
end
- context 'when inbox is not a web widget' do
- before do
- allow(message.inbox).to receive(:web_widget?).and_return(false)
- allow(ENV).to receive(:fetch).with('FRONTEND_URL', nil).and_return('https://app.chatwoot.com')
+ context 'when message is input_csat' do
+ let(:message) { create(:message, conversation: conversation, content_type: 'input_csat', content: 'Rate your experience') }
+
+ context 'when inbox is web widget' do
+ before do
+ allow(message.inbox).to receive(:web_widget?).and_return(true)
+ end
+
+ it 'returns original content without survey URL' do
+ expect(message.content).to eq('Rate your experience')
+ end
end
- it 'returns custom message with survey link when csat message is configured' do
- allow(message.inbox).to receive(:csat_config).and_return({ 'message' => 'Custom survey message:' })
- expected_content = "Custom survey message: https://app.chatwoot.com/survey/responses/#{conversation.uuid}"
- expect(message.content).to eq(expected_content)
- end
+ context 'when inbox is not web widget' do
+ before do
+ allow(message.inbox).to receive(:web_widget?).and_return(false)
+ end
- it 'returns default message with survey link when no custom csat message' do
- allow(message.inbox).to receive(:csat_config).and_return(nil)
- allow(I18n).to receive(:t).with('conversations.survey.response', link: "https://app.chatwoot.com/survey/responses/#{conversation.uuid}")
- .and_return("Please rate your conversation: https://app.chatwoot.com/survey/responses/#{conversation.uuid}")
- expected_content = "Please rate your conversation: https://app.chatwoot.com/survey/responses/#{conversation.uuid}"
- expect(message.content).to eq(expected_content)
+ it 'returns only the stored content (clean for dashboard)' do
+ expect(message.content).to eq('Rate your experience')
+ end
+
+ it 'returns only the base content without URL when survey_url stored separately' do
+ message.content_attributes = { 'survey_url' => 'https://app.chatwoot.com/survey/responses/12345' }
+ expect(message.content).to eq('Rate your experience')
+ end
end
end
end
+
+ describe '#outgoing_content' do
+ let(:conversation) { create(:conversation) }
+ let(:message) { create(:message, conversation: conversation, content_type: 'text', content: 'Regular message') }
+
+ it 'delegates to MessageContentPresenter' do
+ presenter = instance_double(MessageContentPresenter)
+ allow(MessageContentPresenter).to receive(:new).with(message).and_return(presenter)
+ allow(presenter).to receive(:outgoing_content).and_return('Presented content')
+
+ expect(message.outgoing_content).to eq('Presented content')
+ expect(MessageContentPresenter).to have_received(:new).with(message)
+ expect(presenter).to have_received(:outgoing_content)
+ end
+ end
end
diff --git a/spec/presenters/message_content_presenter_spec.rb b/spec/presenters/message_content_presenter_spec.rb
new file mode 100644
index 000000000..b1be37ef2
--- /dev/null
+++ b/spec/presenters/message_content_presenter_spec.rb
@@ -0,0 +1,65 @@
+require 'rails_helper'
+
+RSpec.describe MessageContentPresenter do
+ let(:conversation) { create(:conversation) }
+ let(:message) { create(:message, conversation: conversation, content_type: content_type, content: content) }
+ let(:presenter) { described_class.new(message) }
+
+ describe '#outgoing_content' do
+ context 'when message is not input_csat' do
+ let(:content_type) { 'text' }
+ let(:content) { 'Regular message' }
+
+ it 'returns regular content' do
+ expect(presenter.outgoing_content).to eq('Regular message')
+ end
+ end
+
+ context 'when message is input_csat and inbox is web widget' do
+ let(:content_type) { 'input_csat' }
+ let(:content) { 'Rate your experience' }
+
+ before do
+ allow(message.inbox).to receive(:web_widget?).and_return(true)
+ end
+
+ it 'returns regular content without survey URL' do
+ expect(presenter.outgoing_content).to eq('Rate your experience')
+ end
+ end
+
+ context 'when message is input_csat and inbox is not web widget' do
+ let(:content_type) { 'input_csat' }
+ let(:content) { 'Rate your experience' }
+
+ before do
+ allow(message.inbox).to receive(:web_widget?).and_return(false)
+ allow(ENV).to receive(:fetch).with('FRONTEND_URL', nil).and_return('https://app.chatwoot.com')
+ end
+
+ it 'returns I18n default message when no CSAT config and dynamically generates survey URL' do
+ expected_url = "https://app.chatwoot.com/survey/responses/#{conversation.uuid}"
+ allow(I18n).to receive(:t).with('conversations.survey.response', link: expected_url)
+ .and_return("Please rate this conversation, #{expected_url}")
+ expect(presenter.outgoing_content).to eq("Please rate this conversation, #{expected_url}")
+ end
+
+ it 'returns CSAT config message when config exists and dynamically generates survey URL' do
+ allow(message.inbox).to receive(:csat_config).and_return({ 'message' => 'Custom CSAT message' })
+ expected_url = "https://app.chatwoot.com/survey/responses/#{conversation.uuid}"
+ expect(presenter.outgoing_content).to eq("Custom CSAT message #{expected_url}")
+ end
+ end
+ end
+
+ describe 'delegation' do
+ let(:content_type) { 'text' }
+ let(:content) { 'Test message' }
+
+ it 'delegates model methods to the wrapped message' do
+ expect(presenter.content).to eq('Test message')
+ expect(presenter.content_type).to eq('text')
+ expect(presenter.conversation).to eq(conversation)
+ end
+ end
+end
\ No newline at end of file
diff --git a/spec/services/csat_survey_service_spec.rb b/spec/services/csat_survey_service_spec.rb
new file mode 100644
index 000000000..5b3b3279a
--- /dev/null
+++ b/spec/services/csat_survey_service_spec.rb
@@ -0,0 +1,91 @@
+require 'rails_helper'
+
+describe CsatSurveyService do
+ let(:account) { create(:account) }
+ let(:inbox) { create(:inbox, account: account, csat_survey_enabled: true) }
+ let(:conversation) { create(:conversation, inbox: inbox, account: account, status: :resolved) }
+ let(:service) { described_class.new(conversation: conversation) }
+
+ describe '#perform' do
+ let(:csat_template) { instance_double(MessageTemplates::Template::CsatSurvey) }
+
+ before do
+ allow(MessageTemplates::Template::CsatSurvey).to receive(:new).and_return(csat_template)
+ allow(csat_template).to receive(:perform)
+ allow(Conversations::ActivityMessageJob).to receive(:perform_later)
+ end
+
+ context 'when CSAT survey should be sent' do
+ before do
+ allow(conversation).to receive(:can_reply?).and_return(true)
+ end
+
+ it 'sends CSAT survey when within messaging window' do
+ service.perform
+
+ expect(MessageTemplates::Template::CsatSurvey).to have_received(:new).with(conversation: conversation)
+ expect(csat_template).to have_received(:perform)
+ end
+ end
+
+ context 'when outside messaging window' do
+ before do
+ allow(conversation).to receive(:can_reply?).and_return(false)
+ end
+
+ it 'creates activity message instead of sending survey' do
+ service.perform
+
+ expect(Conversations::ActivityMessageJob).to have_received(:perform_later).with(
+ conversation,
+ hash_including(content: I18n.t('conversations.activity.csat.not_sent_due_to_messaging_window'))
+ )
+ expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new)
+ end
+ end
+
+ context 'when CSAT survey should not be sent' do
+ it 'does nothing when conversation is not resolved' do
+ conversation.update(status: :open)
+
+ service.perform
+
+ expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new)
+ expect(Conversations::ActivityMessageJob).not_to have_received(:perform_later)
+ end
+
+ it 'does nothing when CSAT survey is not enabled' do
+ inbox.update(csat_survey_enabled: false)
+
+ service.perform
+
+ expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new)
+ expect(Conversations::ActivityMessageJob).not_to have_received(:perform_later)
+ end
+
+ it 'does nothing when CSAT already sent' do
+ create(:message, conversation: conversation, content_type: :input_csat)
+
+ service.perform
+
+ expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new)
+ expect(Conversations::ActivityMessageJob).not_to have_received(:perform_later)
+ end
+
+ it 'does nothing for Twitter conversations' do
+ twitter_channel = create(:channel_twitter_profile)
+ twitter_inbox = create(:inbox, channel: twitter_channel, csat_survey_enabled: true)
+ twitter_conversation = create(:conversation,
+ inbox: twitter_inbox,
+ status: :resolved,
+ additional_attributes: { type: 'tweet' })
+ twitter_service = described_class.new(conversation: twitter_conversation)
+
+ twitter_service.perform
+
+ expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new)
+ expect(Conversations::ActivityMessageJob).not_to have_received(:perform_later)
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/spec/services/liquid/campaign_template_service_spec.rb b/spec/services/liquid/campaign_template_service_spec.rb
new file mode 100644
index 000000000..40034e410
--- /dev/null
+++ b/spec/services/liquid/campaign_template_service_spec.rb
@@ -0,0 +1,107 @@
+require 'rails_helper'
+
+describe Liquid::CampaignTemplateService do
+ subject(:template_service) { described_class.new(campaign: campaign, contact: contact) }
+
+ let(:account) { create(:account) }
+ let(:agent) { create(:user, account: account) }
+ let(:inbox) { create(:inbox, account: account) }
+ let(:contact) { create(:contact, account: account, name: 'John Doe', phone_number: '+1234567890') }
+ let(:campaign) { create(:campaign, account: account, inbox: inbox, sender: agent, message: message_content) }
+
+ describe '#call' do
+ context 'with liquid template variables' do
+ let(:message_content) { 'Hello {{contact.name}}, this is {{agent.name}} from {{account.name}}' }
+
+ it 'processes liquid template correctly' do
+ result = template_service.call(message_content)
+ agent_drop_name = UserDrop.new(agent).name
+ contact_drop_name = ContactDrop.new(contact).name
+
+ expect(result).to eq("Hello #{contact_drop_name}, this is #{agent_drop_name} from #{account.name}")
+ end
+ end
+
+ context 'with code blocks' do
+ let(:message_content) { 'Check this code: `const x = {{contact.name}}`' }
+
+ it 'preserves code blocks without processing liquid' do
+ result = template_service.call(message_content)
+
+ expect(result).to include('`const x = {{contact.name}}`')
+ expect(result).not_to include(contact.name)
+ end
+ end
+
+ context 'with multiline code blocks' do
+ let(:message_content) do
+ <<~MESSAGE
+ Here's some code:
+ ```
+ function greet() {
+ return "Hello {{contact.name}}";
+ }
+ ```
+ MESSAGE
+ end
+
+ it 'preserves multiline code blocks without processing liquid' do
+ result = template_service.call(message_content)
+
+ expect(result).to include('{{contact.name}}')
+ expect(result).not_to include(contact.name)
+ end
+ end
+
+ context 'with malformed liquid syntax' do
+ let(:message_content) { 'Hello {{contact.name missing closing braces' }
+
+ it 'returns original message when liquid parsing fails' do
+ result = template_service.call(message_content)
+
+ expect(result).to eq(message_content)
+ end
+ end
+
+ context 'with invalid liquid tags' do
+ let(:message_content) { 'Hello {% invalid_tag %} world' }
+
+ it 'returns original message when liquid parsing fails' do
+ result = template_service.call(message_content)
+
+ expect(result).to eq(message_content)
+ end
+ end
+
+ context 'with mixed content' do
+ let(:message_content) { 'Hi {{contact.name}}, use this code: `{{agent.name}}` to contact {{agent.name}}' }
+
+ it 'processes liquid outside code blocks but preserves code blocks' do
+ result = template_service.call(message_content)
+ agent_drop_name = UserDrop.new(agent).name
+ contact_drop_name = ContactDrop.new(contact).name
+
+ expect(result).to include("Hi #{contact_drop_name}")
+ expect(result).to include("contact #{agent_drop_name}")
+ expect(result).to include('`{{agent.name}}`')
+ end
+ end
+
+ context 'with all drop types' do
+ let(:message_content) do
+ 'Contact: {{contact.name}}, Agent: {{agent.name}}, Inbox: {{inbox.name}}, Account: {{account.name}}'
+ end
+
+ it 'processes all available drops' do
+ result = template_service.call(message_content)
+ agent_drop_name = UserDrop.new(agent).name
+ contact_drop_name = ContactDrop.new(contact).name
+
+ expect(result).to include("Contact: #{contact_drop_name}")
+ expect(result).to include("Agent: #{agent_drop_name}")
+ expect(result).to include("Inbox: #{inbox.name}")
+ expect(result).to include("Account: #{account.name}")
+ end
+ end
+ end
+end
diff --git a/spec/services/message_templates/hook_execution_service_spec.rb b/spec/services/message_templates/hook_execution_service_spec.rb
index 24e40ea8d..b80c42fd8 100644
--- a/spec/services/message_templates/hook_execution_service_spec.rb
+++ b/spec/services/message_templates/hook_execution_service_spec.rb
@@ -111,69 +111,6 @@ describe MessageTemplates::HookExecutionService do
end
end
- context 'when CSAT Survey' do
- let(:csat_survey) { double }
- let(:conversation) { create(:conversation) }
-
- before do
- allow(MessageTemplates::Template::CsatSurvey).to receive(:new).and_return(csat_survey)
- allow(csat_survey).to receive(:perform).and_return(true)
- create(:message, conversation: conversation, message_type: 'incoming')
- end
-
- it 'calls ::MessageTemplates::Template::CsatSurvey when a conversation is resolved in an inbox with survey enabled' do
- conversation.inbox.update(csat_survey_enabled: true)
-
- conversation.resolved!
- Conversations::ActivityMessageJob.perform_now(conversation,
- { account_id: conversation.account_id, inbox_id: conversation.inbox_id, message_type: :activity,
- content: 'Conversation marked resolved!!' })
-
- expect(MessageTemplates::Template::CsatSurvey).to have_received(:new).with(conversation: conversation)
- expect(csat_survey).to have_received(:perform)
- end
-
- it 'will not call ::MessageTemplates::Template::CsatSurvey when Csat is not enabled' do
- conversation.inbox.update(csat_survey_enabled: false)
-
- conversation.resolved!
- Conversations::ActivityMessageJob.perform_now(conversation,
- { account_id: conversation.account_id, inbox_id: conversation.inbox_id, message_type: :activity,
- content: 'Conversation marked resolved!!' })
-
- expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new).with(conversation: conversation)
- expect(csat_survey).not_to have_received(:perform)
- end
-
- it 'will not call ::MessageTemplates::Template::CsatSurvey if its a tweet conversation' do
- twitter_channel = create(:channel_twitter_profile)
- twitter_inbox = create(:inbox, channel: twitter_channel)
- conversation = create(:conversation, inbox: twitter_inbox, additional_attributes: { type: 'tweet' })
- conversation.inbox.update(csat_survey_enabled: true)
-
- conversation.resolved!
- Conversations::ActivityMessageJob.perform_now(conversation,
- { account_id: conversation.account_id, inbox_id: conversation.inbox_id, message_type: :activity,
- content: 'Conversation marked resolved!!' })
-
- expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new).with(conversation: conversation)
- expect(csat_survey).not_to have_received(:perform)
- end
-
- it 'will not call ::MessageTemplates::Template::CsatSurvey if another Csat was already sent' do
- conversation.inbox.update(csat_survey_enabled: true)
- conversation.messages.create!(message_type: 'outgoing', content_type: :input_csat, account: conversation.account, inbox: conversation.inbox)
-
- conversation.resolved!
- Conversations::ActivityMessageJob.perform_now(conversation,
- { account_id: conversation.account_id, inbox_id: conversation.inbox_id, message_type: :activity,
- content: 'Conversation marked resolved!!' })
-
- expect(MessageTemplates::Template::CsatSurvey).not_to have_received(:new).with(conversation: conversation)
- expect(csat_survey).not_to have_received(:perform)
- end
- end
-
context 'when it is after working hours' do
it 'calls ::MessageTemplates::Template::OutOfOffice' do
contact = create(:contact)
diff --git a/spec/services/sms/oneoff_sms_campaign_service_spec.rb b/spec/services/sms/oneoff_sms_campaign_service_spec.rb
index 2f7e5bbf4..a5c7d7e58 100644
--- a/spec/services/sms/oneoff_sms_campaign_service_spec.rb
+++ b/spec/services/sms/oneoff_sms_campaign_service_spec.rb
@@ -43,5 +43,14 @@ describe Sms::OneoffSmsCampaignService do
assert_requested(:post, 'https://messaging.bandwidth.com/api/v2/users/1/messages', times: 3)
expect(campaign.reload.completed?).to be true
end
+
+ it 'uses liquid template service to process campaign message' do
+ contact = create(:contact, :with_phone_number, account: account)
+ contact.update_labels([label1.title])
+
+ expect(Liquid::CampaignTemplateService).to receive(:new).with(campaign: campaign, contact: contact).and_call_original
+
+ sms_campaign_service.perform
+ end
end
end
diff --git a/spec/services/twilio/oneoff_sms_campaign_service_spec.rb b/spec/services/twilio/oneoff_sms_campaign_service_spec.rb
index f8858f174..0e6a993c2 100644
--- a/spec/services/twilio/oneoff_sms_campaign_service_spec.rb
+++ b/spec/services/twilio/oneoff_sms_campaign_service_spec.rb
@@ -60,5 +60,15 @@ describe Twilio::OneoffSmsCampaignService do
sms_campaign_service.perform
expect(campaign.reload.completed?).to be true
end
+
+ it 'uses liquid template service to process campaign message' do
+ contact = create(:contact, :with_phone_number, account: account)
+ contact.update_labels([label1.title])
+
+ expect(Liquid::CampaignTemplateService).to receive(:new).with(campaign: campaign, contact: contact).and_call_original
+ expect(twilio_messages).to receive(:create).once
+
+ sms_campaign_service.perform
+ end
end
end
diff --git a/spec/services/whatsapp/providers/whatsapp360_dialog_service_spec.rb b/spec/services/whatsapp/providers/whatsapp360_dialog_service_spec.rb
index bba3f5914..572e96685 100644
--- a/spec/services/whatsapp/providers/whatsapp360_dialog_service_spec.rb
+++ b/spec/services/whatsapp/providers/whatsapp360_dialog_service_spec.rb
@@ -51,16 +51,15 @@ describe Whatsapp::Providers::Whatsapp360DialogService do
end
it 'calls message endpoints with list payload when number of items is greater than 3' do
+ items = %w[Burito Pasta Sushi Salad].map { |i| { title: i, value: i } }
message = create(:message, message_type: :outgoing, content: 'test', inbox: whatsapp_channel.inbox,
- content_type: 'input_select',
- content_attributes: {
- items: [
- { title: 'Burito', value: 'Burito' },
- { title: 'Pasta', value: 'Pasta' },
- { title: 'Sushi', value: 'Sushi' },
- { title: 'Salad', value: 'Salad' }
- ]
- })
+ content_type: 'input_select', content_attributes: { items: items })
+
+ expected_action = {
+ button: I18n.t('conversations.messages.whatsapp.list_button_label'),
+ sections: [{ rows: %w[Burito Pasta Sushi Salad].map { |i| { id: i, title: i } } }]
+ }.to_json
+
stub_request(:post, 'https://waba.360dialog.io/v1/messages')
.with(
body: {
@@ -70,9 +69,9 @@ describe Whatsapp::Providers::Whatsapp360DialogService do
body: {
text: 'test'
},
- action: '{"button":"Choose an item","sections":[{"rows":[{"id":"Burito","title":"Burito"},' \
- '{"id":"Pasta","title":"Pasta"},{"id":"Sushi","title":"Sushi"},{"id":"Salad","title":"Salad"}]}]}'
- }, type: 'interactive'
+ action: expected_action
+ },
+ type: 'interactive'
}.to_json
).to_return(status: 200, body: whatsapp_response.to_json, headers: response_headers)
expect(service.send_message('+123456789', message)).to eq 'message_id'
diff --git a/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb b/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb
index 134d69fee..1bef635b3 100644
--- a/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb
+++ b/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb
@@ -124,16 +124,15 @@ describe Whatsapp::Providers::WhatsappCloudService do
end
it 'calls message endpoints with list payload when number of items is greater than 3' do
+ items = %w[Burito Pasta Sushi Salad].map { |i| { title: i, value: i } }
message = create(:message, message_type: :outgoing, content: 'test', inbox: whatsapp_channel.inbox,
- content_type: 'input_select',
- content_attributes: {
- items: [
- { title: 'Burito', value: 'Burito' },
- { title: 'Pasta', value: 'Pasta' },
- { title: 'Sushi', value: 'Sushi' },
- { title: 'Salad', value: 'Salad' }
- ]
- })
+ content_type: 'input_select', content_attributes: { items: items })
+
+ expected_action = {
+ button: I18n.t('conversations.messages.whatsapp.list_button_label'),
+ sections: [{ rows: %w[Burito Pasta Sushi Salad].map { |i| { id: i, title: i } } }]
+ }.to_json
+
stub_request(:post, 'https://graph.facebook.com/v13.0/123456789/messages')
.with(
body: {
@@ -143,9 +142,9 @@ describe Whatsapp::Providers::WhatsappCloudService do
body: {
text: 'test'
},
- action: '{"button":"Choose an item","sections":[{"rows":[{"id":"Burito","title":"Burito"},' \
- '{"id":"Pasta","title":"Pasta"},{"id":"Sushi","title":"Sushi"},{"id":"Salad","title":"Salad"}]}]}'
- }, type: 'interactive'
+ action: expected_action
+ },
+ type: 'interactive'
}.to_json
).to_return(status: 200, body: whatsapp_response.to_json, headers: response_headers)
expect(service.send_message('+123456789', message)).to eq 'message_id'