fix: handle extended text message type of incoming message upsert (#9)
* feat: support extended text messages in WhatsApp incoming message service * fix: correct isEditorHotKeyEnabled's spec * ci: add baileys-api service to docker-compose configuration * feat!: update validate_provider_config? endpoint * feat: add Resend email delivery method and configuration (#11) * feat: add Resend email delivery method and configuration * chore: simplify ResendProvider initialization by removing settings parameter * test: update ResendProvider initialization in tests by removing unnecessary settings parameter * chore: improvements * chore: add support for external frontend URL in environment configuration * chore: ensure trailing slash * ci: updated docker compose * feat: update Resend email delivery method to use headers for sender and recipient * feat: update email templates to use user's name instead of email * fix: simplify extended text message structure in Baileys service spec --------- Co-authored-by: gabrieljablonski <contact@gabrieljablonski.com> Co-authored-by: Gabriel Jablonski <gabriel@fazer.ai>
This commit is contained in:
parent
010575e005
commit
7ee0ec2fdb
@ -119,8 +119,8 @@ describe('useUISettings', () => {
|
|||||||
it('returns correct value for isEditorHotKeyEnabled when editor_message_key is not configured', () => {
|
it('returns correct value for isEditorHotKeyEnabled when editor_message_key is not configured', () => {
|
||||||
getUISettingsMock.value.editor_message_key = undefined;
|
getUISettingsMock.value.editor_message_key = undefined;
|
||||||
const { isEditorHotKeyEnabled } = useUISettings();
|
const { isEditorHotKeyEnabled } = useUISettings();
|
||||||
expect(isEditorHotKeyEnabled('enter')).toBe(false);
|
expect(isEditorHotKeyEnabled('enter')).toBe(true);
|
||||||
expect(isEditorHotKeyEnabled('cmd_enter')).toBe(true);
|
expect(isEditorHotKeyEnabled('cmd_enter')).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('handles non-existent keys', () => {
|
it('handles non-existent keys', () => {
|
||||||
|
|||||||
@ -85,7 +85,7 @@ class Whatsapp::IncomingMessageBaileysService < Whatsapp::IncomingMessageBaseSer
|
|||||||
|
|
||||||
def message_type # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
def message_type # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
||||||
msg = @raw_message[:message]
|
msg = @raw_message[:message]
|
||||||
return 'text' if msg.key?(:conversation)
|
return 'text' if msg.key?(:conversation) || msg.dig(:extendedTextMessage, :text)
|
||||||
return 'contacts' if msg.key?(:contactMessage)
|
return 'contacts' if msg.key?(:contactMessage)
|
||||||
return 'image' if msg.key?(:imageMessage)
|
return 'image' if msg.key?(:imageMessage)
|
||||||
return 'audio' if msg.key?(:audioMessage)
|
return 'audio' if msg.key?(:audioMessage)
|
||||||
@ -106,9 +106,10 @@ class Whatsapp::IncomingMessageBaileysService < Whatsapp::IncomingMessageBaseSer
|
|||||||
sender = is_outgoing ? @inbox.account.account_users.first.user : @contact
|
sender = is_outgoing ? @inbox.account.account_users.first.user : @contact
|
||||||
sender_type = is_outgoing ? 'User' : 'Contact'
|
sender_type = is_outgoing ? 'User' : 'Contact'
|
||||||
message_type = is_outgoing ? :outgoing : :incoming
|
message_type = is_outgoing ? :outgoing : :incoming
|
||||||
|
content = @raw_message.dig(:message, :conversation) || @raw_message.dig(:message, :extendedTextMessage, :text)
|
||||||
|
|
||||||
@message = @conversation.messages.create!(
|
@message = @conversation.messages.create!(
|
||||||
content: @raw_message[:message][:conversation],
|
content: content,
|
||||||
account_id: @inbox.account_id,
|
account_id: @inbox.account_id,
|
||||||
inbox_id: @inbox.id,
|
inbox_id: @inbox.id,
|
||||||
source_id: message_id,
|
source_id: message_id,
|
||||||
|
|||||||
@ -192,6 +192,7 @@ describe Whatsapp::IncomingMessageBaileysService do
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when has key conversation' do # rubocop:disable RSpec/NestedGroups
|
||||||
it 'creates an incoming message' do
|
it 'creates an incoming message' do
|
||||||
described_class.new(inbox: inbox, params: params).perform
|
described_class.new(inbox: inbox, params: params).perform
|
||||||
|
|
||||||
@ -259,6 +260,29 @@ describe Whatsapp::IncomingMessageBaileysService do
|
|||||||
expect(Redis::Alfred).to have_received(:delete)
|
expect(Redis::Alfred).to have_received(:delete)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when is a extendedTextMessage that has key text' do # rubocop:disable RSpec/NestedGroups
|
||||||
|
let(:raw_message) do
|
||||||
|
{
|
||||||
|
key: { id: 'msg_123', remoteJid: '5511912345678@s.whatsapp.net', fromMe: false },
|
||||||
|
message: { 'extendedTextMessage': { text: 'Hello from Baileys' } },
|
||||||
|
pushName: 'John Doe'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates an incoming message' do
|
||||||
|
described_class.new(inbox: inbox, params: params).perform
|
||||||
|
|
||||||
|
conversation = inbox.conversations.last
|
||||||
|
message = conversation.messages.last
|
||||||
|
expect(message).to be_present
|
||||||
|
expect(message.content).to eq('Hello from Baileys')
|
||||||
|
expect(message.message_type).to eq('incoming')
|
||||||
|
expect(message.sender).to be_present
|
||||||
|
expect(message.sender.name).to eq('John Doe')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user