fix(whatsapp): reuse Brazil contacts for Twilio
This commit is contained in:
@@ -119,7 +119,7 @@ class Twilio::IncomingMessageService
|
||||
{
|
||||
name: contact_name,
|
||||
phone_number: phone_number.presence,
|
||||
additional_attributes: additional_attributes
|
||||
additional_attributes: additional_attributes, phone_number_candidates: twilio_whatsapp_phone_number_candidates
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -41,6 +41,13 @@ module Twilio::WhatsappIdentifierHelper
|
||||
Whatsapp::PhoneNumberNormalizationService.new(inbox).normalize_and_find_contact_by_provider("whatsapp:#{phone_number}", :twilio)
|
||||
end
|
||||
|
||||
def twilio_whatsapp_phone_number_candidates
|
||||
return unless twilio_channel.whatsapp? && phone_number.present?
|
||||
|
||||
candidates = Whatsapp::PhoneNumberNormalizationService.new(inbox).phone_number_candidates(phone_number.delete_prefix('+')).drop(1)
|
||||
candidates.map { |candidate| "+#{candidate}" }.presence
|
||||
end
|
||||
|
||||
def twilio_whatsapp_source_id(identifier)
|
||||
identifier = identifier.to_s
|
||||
return if identifier.blank?
|
||||
|
||||
@@ -670,6 +670,24 @@ describe Twilio::IncomingMessageService do
|
||||
expect(whatsapp_twilio_channel.inbox.contact_inboxes.first.source_id).to eq('whatsapp:+5541988887777')
|
||||
end
|
||||
|
||||
it 'reuses an existing contact in new format when the inbox has no contact inbox' do
|
||||
existing_contact = create(:contact, account: account, phone_number: '+5541988887777')
|
||||
|
||||
params = {
|
||||
SmsSid: 'SMxx',
|
||||
From: 'whatsapp:+554188887777',
|
||||
AccountSid: 'ACxxx',
|
||||
MessagingServiceSid: whatsapp_twilio_channel.messaging_service_sid,
|
||||
Body: 'Test message from Brazil',
|
||||
ProfileName: 'João Silva'
|
||||
}
|
||||
|
||||
expect { described_class.new(params: params).perform }.not_to change(account.contacts, :count)
|
||||
|
||||
contact_inbox = whatsapp_twilio_channel.inbox.contact_inboxes.find_by!(source_id: 'whatsapp:+554188887777')
|
||||
expect(contact_inbox.contact).to eq(existing_contact)
|
||||
end
|
||||
|
||||
it 'creates contact inbox with incoming number when no existing contact' do
|
||||
params = {
|
||||
SmsSid: 'SMxx',
|
||||
|
||||
Reference in New Issue
Block a user