chatwoot/app/views
Muhsin Keloth 0e122188e9
feat: Add voice calling as a capability on Twilio SMS channel(Enterprise) (#13963)
Voice calling is now a capability on the existing TwilioSms rather than
a separate Voice model. A single Twilio phone number handles both SMS
and voice calls through one inbox.
Fixes
https://linear.app/chatwoot/issue/CW-6683/add-voice-calling-as-a-capability-on-twilio-sms-channel
and https://linear.app/chatwoot/issue/PLA-120/add-the-support-for-sms

**What changed**
- Replaced Channel::Voice with voice_enabled flag on Channel::TwilioSms
- Added voice_enabled, twiml_app_sid, api_key_secret columns to
channel_twilio_sms table
  - Dropped channel_voice table (no production data)
- All voice logic lives in Enterprise layer via
prepend_mod_with('Channel::TwilioSms')
- Added Voice settings tab on Twilio SMS inbox settings to
enable/disable voice
  - Validates Twilio number voice capability before provisioning
- Teardown service cleans up TwiML app and credentials when voice is
disabled
- Frontend voice detection uses isVoiceCallEnabled() /
getVoiceCallProvider() helpers — extensible to future providers
  - Gated by channel_voice feature flag

**How to test**

1. Enable feature flag:
Account.find(<id>).enable_features('channel_voice')
2. Create voice inbox: Inboxes → Voice tile → enter Twilio credentials →
verify incoming/outgoing calls and SMS work
3. Enable voice on existing SMS inbox: Inboxes → select Twilio SMS inbox
→ Voice tab → toggle on → provide API key credentials → verify calls
work
4. Disable voice: Voice tab → toggle off → verify TwiML app is deleted,
credentials cleared, SMS still works
5. Re-enable voice: Toggle on again → must provide api_key_secret again
→ new TwiML app provisioned

---------

Co-authored-by: Muhsin <12408980+muhsin-k@users.noreply.github.com>
2026-04-29 11:32:19 +04:00
..
android_app chore: Universal Linking for Android (#2324) 2021-06-02 08:46:45 -07:00
api feat: Add voice calling as a capability on Twilio SMS channel(Enterprise) (#13963) 2026-04-29 11:32:19 +04:00
apple_app chore: Configure iOS universal linking (#10651) 2025-01-08 21:25:11 +05:30
dashboard Initial Commit 2019-08-14 15:18:44 +05:30
devise style: [CW-6876] Updated designs for invite email (#14090) 2026-04-24 19:56:01 +05:30
fields refactor: extract custom attribute methods from FilterService (#13743) 2026-03-10 14:15:52 +05:30
icons fix: Broken header in public Help Center portal (#11704) 2025-06-11 15:07:24 -04:00
installation/onboarding fix: onboarding/index.html.erb unclosed HTML tags (#10838) 2025-02-06 09:43:38 +05:30
layouts style: [CW-6876] Updated designs for invite email (#14090) 2026-04-24 19:56:01 +05:30
mailers feat: Standardize rich editor across all channels (#12600) 2025-12-08 14:43:45 +05:30
microsoft fix: Identity JSON response header (#6326) 2023-02-02 11:01:18 +05:30
platform/api/v1 fix(agent-bots): destroy permissibles on AgentBot deletion and skip orphans in index (#14273) 2026-04-27 19:17:32 +05:30
public/api/v1 feat: Table support in article editor (#13974) 2026-04-16 11:23:10 +05:30
super_admin feat(super-admin): Add push diagnostics tool (#14105) 2026-04-21 15:55:12 +04:00
survey/responses feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
widget_tests chore: Remove defer attribute from widget-loader script (#11887) 2025-07-08 15:31:33 +05:30
widgets feat: Add rich text support for widget welcome tagline (#11666) 2025-06-05 14:13:46 -05:00