mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-18 20:15:10 +00:00
fix: Change the message status to failed if the Twilio message delivery status is undelivered (#8097)
This commit is contained in:
@@ -13,7 +13,7 @@ class Twilio::DeliveryStatusService
|
|||||||
private
|
private
|
||||||
|
|
||||||
def process_statuses
|
def process_statuses
|
||||||
@message.status = params[:MessageStatus]
|
@message.status = status
|
||||||
@message.external_error = external_error if error_occurred?
|
@message.external_error = external_error if error_occurred?
|
||||||
@message.save!
|
@message.save!
|
||||||
end
|
end
|
||||||
@@ -22,6 +22,10 @@ class Twilio::DeliveryStatusService
|
|||||||
%w[sent delivered read failed undelivered].include?(params[:MessageStatus])
|
%w[sent delivered read failed undelivered].include?(params[:MessageStatus])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def status
|
||||||
|
params[:MessageStatus] == 'undelivered' ? 'failed' : params[:MessageStatus]
|
||||||
|
end
|
||||||
|
|
||||||
def external_error
|
def external_error
|
||||||
return nil unless error_occurred?
|
return nil unless error_occurred?
|
||||||
|
|
||||||
|
|||||||
@@ -59,21 +59,24 @@ describe Twilio::DeliveryStatusService do
|
|||||||
expect(conversation.reload.messages.last.status).to eq('sent')
|
expect(conversation.reload.messages.last.status).to eq('sent')
|
||||||
end
|
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 = {
|
params = {
|
||||||
SmsSid: 'SMxx',
|
SmsSid: 'SMxx',
|
||||||
From: '+12345',
|
From: '+12345',
|
||||||
AccountSid: 'ACxxx',
|
AccountSid: 'ACxxx',
|
||||||
MessagingServiceSid: twilio_channel.messaging_service_sid,
|
MessagingServiceSid: twilio_channel.messaging_service_sid,
|
||||||
MessageSid: conversation.messages.last.source_id,
|
MessageSid: conversation.messages.last.source_id,
|
||||||
MessageStatus: 'failed'
|
MessageStatus: 'undelivered',
|
||||||
|
ErrorCode: '30002',
|
||||||
|
ErrorMessage: 'Account suspended'
|
||||||
}
|
}
|
||||||
|
|
||||||
described_class.new(params: params).perform
|
described_class.new(params: params).perform
|
||||||
expect(conversation.reload.messages.last.status).to eq('failed')
|
expect(conversation.reload.messages.last.status).to eq('failed')
|
||||||
|
expect(conversation.reload.messages.last.external_error).to eq('30002 - Account suspended')
|
||||||
end
|
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 = {
|
params = {
|
||||||
SmsSid: 'SMxx',
|
SmsSid: 'SMxx',
|
||||||
From: '+12345',
|
From: '+12345',
|
||||||
|
|||||||
Reference in New Issue
Block a user