From 29f18c7f1897aadfd03154d85d3affd108bca5f2 Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Tue, 31 Oct 2023 16:23:34 +0530 Subject: [PATCH] fix: Handle `Twilio::REST::RestError` (#8257) --- app/services/twilio/send_on_twilio_service.rb | 3 ++- spec/services/twilio/send_on_twilio_service_spec.rb | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/services/twilio/send_on_twilio_service.rb b/app/services/twilio/send_on_twilio_service.rb index 0a76dac66..8ebd0178f 100644 --- a/app/services/twilio/send_on_twilio_service.rb +++ b/app/services/twilio/send_on_twilio_service.rb @@ -8,8 +8,9 @@ class Twilio::SendOnTwilioService < Base::SendOnChannelService def perform_reply begin twilio_message = channel.send_message(**message_params) - rescue Twilio::REST::TwilioError => e + rescue Twilio::REST::TwilioError, Twilio::REST::RestError => e ChatwootExceptionTracker.new(e, user: message.sender, account: message.account).capture_exception + message.update!(status: :failed, external_error: e.message) end message.update!(source_id: twilio_message.sid) if twilio_message end diff --git a/spec/services/twilio/send_on_twilio_service_spec.rb b/spec/services/twilio/send_on_twilio_service_spec.rb index 9579dd840..beae54b57 100644 --- a/spec/services/twilio/send_on_twilio_service_spec.rb +++ b/spec/services/twilio/send_on_twilio_service_spec.rb @@ -96,5 +96,15 @@ describe Twilio::SendOnTwilioService do described_class.new(message: message).perform expect(messages_double).to have_received(:create).with(hash_including(media_url: [anything])) end + + it 'if message is sent from chatwoot fails' do + allow(messages_double).to receive(:create).and_raise(Twilio::REST::TwilioError) + + outgoing_message = create( + :message, message_type: 'outgoing', inbox: twilio_inbox, account: account, conversation: conversation + ) + described_class.new(message: outgoing_message).perform + expect(outgoing_message.reload.status).to eq('failed') + end end end