From 2b5d3300f3ce9bb1972677c56d1f8d620eeed519 Mon Sep 17 00:00:00 2001 From: Muhsin Date: Thu, 26 Mar 2026 18:28:29 +0400 Subject: [PATCH] chore: add Voice configuration UI and API fields --- .../dashboard/i18n/locale/en/inboxMgmt.json | 12 +- .../dashboard/settings/inbox/Settings.vue | 22 +++ .../inbox/settingsPage/ConfigurationPage.vue | 21 +-- .../settingsPage/VoiceConfigurationPage.vue | 125 ++++++++++++++++++ app/views/api/v1/models/_inbox.json.jbuilder | 11 +- .../api/v1/accounts/inboxes_controller.rb | 6 + 6 files changed, 172 insertions(+), 25 deletions(-) create mode 100644 app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/VoiceConfigurationPage.vue diff --git a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json index d0d1573b3..8ab345b60 100644 --- a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json @@ -628,7 +628,17 @@ "WIDGET_BUILDER": "Widget Builder", "BOT_CONFIGURATION": "Bot Configuration", "ACCOUNT_HEALTH": "Account Health", - "CSAT": "CSAT" + "CSAT": "CSAT", + "VOICE": "Voice" + }, + "VOICE_CONFIGURATION": { + "ENABLE_VOICE": { + "LABEL": "Enable Voice Calling", + "DESCRIPTION": "Enable voice calling on this inbox. Agents will be able to make and receive phone calls." + }, + "CREDENTIALS": { + "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent WebRTC connections." + } }, "CHANNEL_PREFERENCES": "Channel Preferences", "WIDGET_FEATURES": "Widget features", diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue index c36852c8c..b577195ff 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue @@ -21,6 +21,7 @@ import PreChatFormSettings from './PreChatForm/Settings.vue'; import WeeklyAvailability from './components/WeeklyAvailability.vue'; import GreetingsEditor from 'shared/components/GreetingsEditor.vue'; import ConfigurationPage from './settingsPage/ConfigurationPage.vue'; +import VoiceConfigurationPage from './settingsPage/VoiceConfigurationPage.vue'; import CustomerSatisfactionPage from './settingsPage/CustomerSatisfactionPage.vue'; import CollaboratorsPage from './settingsPage/CollaboratorsPage.vue'; import BotConfiguration from './components/BotConfiguration.vue'; @@ -44,6 +45,7 @@ export default { BotConfiguration, CollaboratorsPage, ConfigurationPage, + VoiceConfigurationPage, CustomerSatisfactionPage, FacebookReauthorize, GreetingsEditor, @@ -205,6 +207,20 @@ export default { ]; } + if ( + this.isATwilioChannel && + this.inbox.phone_number && + this.inbox.medium === 'sms' + ) { + visibleToAllChannelTabs = [ + ...visibleToAllChannelTabs, + { + key: 'voice-configuration', + name: this.$t('INBOX_MGMT.TABS.VOICE'), + }, + ]; + } + return visibleToAllChannelTabs; }, currentInboxId() { @@ -1170,6 +1186,12 @@ export default { > +
+ +
diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/ConfigurationPage.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/ConfigurationPage.vue index a174c947d..9cd1665bf 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/ConfigurationPage.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/settingsPage/ConfigurationPage.vue @@ -189,26 +189,7 @@ export default {