From 432dad203be4b9e752b5761e0d48fc498273aaf0 Mon Sep 17 00:00:00 2001 From: Sojan Jose Date: Tue, 9 Jun 2020 23:54:35 +0530 Subject: [PATCH] Feature: Inbox greeting message (#927) Co-authored-by: Pranav Raj S --- .../api/v1/accounts/inboxes_controller.rb | 14 ++- .../dashboard/i18n/locale/el/inboxMgmt.json | 2 +- .../dashboard/i18n/locale/en/inboxMgmt.json | 10 +- .../dashboard/i18n/locale/es/inboxMgmt.json | 2 +- .../dashboard/i18n/locale/fr/inboxMgmt.json | 2 +- .../dashboard/i18n/locale/nl/inboxMgmt.json | 12 ++- .../dashboard/i18n/locale/pt/inboxMgmt.json | 2 +- .../i18n/locale/pt_BR/inboxMgmt.json | 2 +- .../dashboard/i18n/locale/ro/inboxMgmt.json | 2 +- .../dashboard/settings/inbox/Settings.vue | 94 +++++++++++-------- .../settings/inbox/channels/Website.vue | 45 +++++++-- app/models/inbox.rb | 2 + app/models/message.rb | 12 ++- app/services/facebook/send_reply_service.rb | 2 +- .../hook_execution_service.rb | 12 ++- .../template/email_collect.rb | 16 ---- .../message_templates/template/greeting.rb | 32 +++++++ .../twilio/outgoing_message_service.rb | 6 +- .../twitter/direct_message_parser_service.rb | 2 +- app/services/twitter/send_reply_service.rb | 2 +- .../v1/accounts/inboxes/create.json.jbuilder | 3 +- .../v1/accounts/inboxes/index.json.jbuilder | 3 +- .../v1/accounts/inboxes/update.json.jbuilder | 3 +- config/locales/ca.yml | 2 +- config/locales/cs.yml | 2 +- config/locales/de.yml | 2 +- config/locales/el.yml | 2 +- config/locales/en.yml | 2 +- config/locales/es.yml | 2 +- config/locales/fr.yml | 2 +- config/locales/it.yml | 2 +- config/locales/ml.yml | 2 +- config/locales/nl.yml | 2 +- config/locales/pl.yml | 2 +- config/locales/pt.yml | 2 +- config/locales/pt_BR.yml | 2 +- config/locales/ro.yml | 2 +- config/locales/sv.yml | 2 +- ...130625_agent_away_message_to_auto_reply.rb | 21 +++++ db/schema.rb | 3 +- .../api/v1/widget/messages_controller_spec.rb | 4 +- spec/finders/message_finder_spec.rb | 8 +- spec/lib/webhooks/twitter_spec.rb | 2 +- spec/mailboxes/conversation_mailbox_spec.rb | 2 +- .../hook_execution_service_spec.rb | 13 ++- .../template/email_collect_spec.rb | 2 +- .../template/greeting_spec.rb | 12 +++ .../twilio/incoming_message_service_spec.rb | 3 +- 48 files changed, 262 insertions(+), 120 deletions(-) create mode 100644 app/services/message_templates/template/greeting.rb create mode 100644 db/migrate/20200605130625_agent_away_message_to_auto_reply.rb create mode 100644 spec/services/message_templates/template/greeting_spec.rb diff --git a/app/controllers/api/v1/accounts/inboxes_controller.rb b/app/controllers/api/v1/accounts/inboxes_controller.rb index fe19400c3..45a190bfb 100644 --- a/app/controllers/api/v1/accounts/inboxes_controller.rb +++ b/app/controllers/api/v1/accounts/inboxes_controller.rb @@ -10,7 +10,12 @@ class Api::V1::Accounts::InboxesController < Api::V1::Accounts::BaseController def create ActiveRecord::Base.transaction do channel = web_widgets.create!(permitted_params[:channel].except(:type)) if permitted_params[:channel][:type] == 'web_widget' - @inbox = Current.account.inboxes.build(name: permitted_params[:name], channel: channel) + @inbox = Current.account.inboxes.build( + name: permitted_params[:name], + greeting_message: permitted_params[:greeting_message], + greeting_enabled: permitted_params[:greeting_enabled], + channel: channel + ) @inbox.avatar.attach(permitted_params[:avatar]) @inbox.save! end @@ -56,11 +61,12 @@ class Api::V1::Accounts::InboxesController < Api::V1::Accounts::BaseController end def permitted_params - params.permit(:id, :avatar, :name, channel: [:type, :website_url, :widget_color, :welcome_title, :welcome_tagline, :agent_away_message]) + params.permit(:id, :avatar, :name, :greeting_message, :greeting_enabled, channel: + [:type, :website_url, :widget_color, :welcome_title, :welcome_tagline]) end def inbox_update_params - params.permit(:enable_auto_assignment, :name, :avatar, channel: [:website_url, :widget_color, :welcome_title, - :welcome_tagline, :agent_away_message]) + params.permit(:enable_auto_assignment, :name, :avatar, :greeting_message, :greeting_enabled, + channel: [:website_url, :widget_color, :welcome_title, :welcome_tagline]) end end diff --git a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json index 0a18b005b..7622b72f1 100644 --- a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json @@ -54,7 +54,7 @@ "LABEL": "Καλώς ήλθατε (Tagline)", "PLACEHOLDER": "Είναι απλό να συνδεθείτε μαζί μας. Ζητήστε μας οτιδήποτε, ή μοιραστείτε την εμπειρία σας." }, - "CHANNEL_AGENT_AWAY_MESSAGE": { + "CHANNEL_GREETING_MESSAGE": { "LABEL": "Μήνυμα όταν δεν υπάρχουν πράκτορες", "PLACEHOLDER": "Τυπικά απαντάμε σε μερικές ώρες." }, diff --git a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json index 514391664..c885c9ab5 100644 --- a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json @@ -63,10 +63,16 @@ "LABEL": "Welcome Tagline", "PLACEHOLDER": "We make it simple to connect with us. Ask us anything, or share your feedback." }, - "CHANNEL_AGENT_AWAY_MESSAGE": { - "LABEL": "Agents Away Message", + "CHANNEL_GREETING_MESSAGE": { + "LABEL": "Channel greeting message", "PLACEHOLDER": "Acme Inc typically replies in a few hours." }, + "CHANNEL_GREETING_TOGGLE": { + "LABEL": "Enable channel greeting", + "HELP_TEXT": "Send a greeting message to the user when he starts the conversation.", + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, "WIDGET_COLOR": { "LABEL": "Widget Color", "PLACEHOLDER": "Update the widget color used in widget" diff --git a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json index 0c71f17a2..9c19709d2 100644 --- a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json @@ -63,7 +63,7 @@ "LABEL": "Bienvenido Tagline", "PLACEHOLDER": "Facilitamos la conexión con nosotros. Pídanos cualquier cosa o comparte tus comentarios." }, - "CHANNEL_AGENT_AWAY_MESSAGE": { + "CHANNEL_GREETING_MESSAGE": { "LABEL": "Mensaje de Agentes Ausentes", "PLACEHOLDER": "Acme Inc normalmente responde en unas pocas horas." }, diff --git a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json index fe35bf261..48bf6f51c 100644 --- a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json @@ -54,7 +54,7 @@ "LABEL": "Slogan d'accueil", "PLACEHOLDER": "C'est simple de rentrer en contact avec nous. Demandez-nous quoi que ce soit ou partagez vos commentaires." }, - "CHANNEL_AGENT_AWAY_MESSAGE": { + "CHANNEL_GREETING_MESSAGE": { "LABEL": "Message lorsque les agents sont absents", "PLACEHOLDER": "Acme Inc répond en général en quelques heures." }, diff --git a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json index 981ca5ffc..74f3e97ac 100644 --- a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json @@ -54,9 +54,15 @@ "LABEL": "Welkom Tagline", "PLACEHOLDER": "We maken het eenvoudig om met ons te verbinden. Vraag ons iets of deel uw feedback." }, - "CHANNEL_AGENT_AWAY_MESSAGE": { - "LABEL": "Agents Afwezig Bericht", - "PLACEHOLDER": "Acme Inc reageert meestal binnen een paar uur." + "CHANNEL_GREETING_MESSAGE": { + "LABEL": "Kanaalbegroeting", + "PLACEHOLDER": "Acme Inc antwoordt meestal binnen een paar uur." + }, + "CHANNEL_GREETING_TOGGLE": { + "LABEL": "Kanaalbegroeting inschakelen", + "HELP_TEXT": "Stuur een begroetingsbericht naar de gebruiker wanneer hij het gesprek start.", + "ENABLED": "Ingeschakeld", + "DISABLED": "Gehandicapt" }, "WIDGET_COLOR": { "LABEL": "Kleur van widget", diff --git a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json index 631470370..4fca33c25 100644 --- a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json @@ -54,7 +54,7 @@ "LABEL": "Bem-vindo Slogan", "PLACEHOLDER": "Nós simplificamos nos conectar com a gente. Pergunte a nós qualquer coisa ou compartilhe seus comentários." }, - "CHANNEL_AGENT_AWAY_MESSAGE": { + "CHANNEL_GREETING_MESSAGE": { "LABEL": "Mensagem Ausente dos Agentes", "PLACEHOLDER": "Acme Inc normalmente responde em algumas horas." }, diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json index 8320edde7..7198a343e 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json @@ -54,7 +54,7 @@ "LABEL": "Bem-vindo, saudação", "PLACEHOLDER": "Nós tornamos simples a conexão conosco. Pergunte qualquer assunto ou compartilhe seus comentários." }, - "CHANNEL_AGENT_AWAY_MESSAGE": { + "CHANNEL_GREETING_MESSAGE": { "LABEL": "Mensagem de agente ausente", "PLACEHOLDER": "Acme Inc tipicamente retorna em algumas horas." }, diff --git a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json index 702a3b1d5..581121dbb 100644 --- a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json @@ -54,7 +54,7 @@ "LABEL": "Tagline de Bun Venit", "PLACEHOLDER": "Noi facem conectarea cu noi simplă. Întreabă-ne orice, sau partajează-ți feedback-ul." }, - "CHANNEL_AGENT_AWAY_MESSAGE": { + "CHANNEL_GREETING_MESSAGE": { "LABEL": "Mesaj Agent Indisponibil", "PLACEHOLDER": "De obicei, Acme Inc răspunde în câteva ore." }, diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue index b36756b6e..99671a7c1 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue @@ -18,7 +18,7 @@ - - -