diff --git a/enterprise/app/models/enterprise/channel/twilio_sms.rb b/enterprise/app/models/enterprise/channel/twilio_sms.rb index 07b6a9d04..fd801edee 100644 --- a/enterprise/app/models/enterprise/channel/twilio_sms.rb +++ b/enterprise/app/models/enterprise/channel/twilio_sms.rb @@ -75,6 +75,7 @@ module Enterprise::Channel::TwilioSms end def provision_twiml_app + validate_voice_capability! service = ::Twilio::VoiceWebhookSetupService.new(channel: self) self.twiml_app_sid = service.perform rescue StandardError => e @@ -82,5 +83,12 @@ module Enterprise::Channel::TwilioSms errors.add(:base, "Twilio voice setup failed: #{e.message}") end + def validate_voice_capability! + twilio_client = Twilio::REST::Client.new(account_sid, auth_token) + number = twilio_client.incoming_phone_numbers.list(phone_number: phone_number).first + raise 'Phone number not found in Twilio account' unless number + raise 'This phone number does not support voice calls' unless number.capabilities['voice'] + end + alias provision_twiml_app_on_update provision_twiml_app end