fix: Change the message status to failed if the Twilio message delivery status is undelivered (#8097)

This commit is contained in:
Muhsin Keloth
2023-10-12 15:27:38 +05:30
committed by GitHub
parent 7c9884b853
commit bd918ee506
2 changed files with 11 additions and 4 deletions

View File

@@ -13,7 +13,7 @@ class Twilio::DeliveryStatusService
private
def process_statuses
@message.status = params[:MessageStatus]
@message.status = status
@message.external_error = external_error if error_occurred?
@message.save!
end
@@ -22,6 +22,10 @@ class Twilio::DeliveryStatusService
%w[sent delivered read failed undelivered].include?(params[:MessageStatus])
end
def status
params[:MessageStatus] == 'undelivered' ? 'failed' : params[:MessageStatus]
end
def external_error
return nil unless error_occurred?

View File

@@ -59,21 +59,24 @@ describe Twilio::DeliveryStatusService do
expect(conversation.reload.messages.last.status).to eq('sent')
end
it 'updates message status to failed if message status is failed' do
it 'updates message status to failed if message status is undelivered' do
params = {
SmsSid: 'SMxx',
From: '+12345',
AccountSid: 'ACxxx',
MessagingServiceSid: twilio_channel.messaging_service_sid,
MessageSid: conversation.messages.last.source_id,
MessageStatus: 'failed'
MessageStatus: 'undelivered',
ErrorCode: '30002',
ErrorMessage: 'Account suspended'
}
described_class.new(params: params).perform
expect(conversation.reload.messages.last.status).to eq('failed')
expect(conversation.reload.messages.last.external_error).to eq('30002 - Account suspended')
end
it 'updates message status to failed and updates the error message if message status is undelivered' do
it 'updates message status to failed and updates the error message if message status is failed' do
params = {
SmsSid: 'SMxx',
From: '+12345',