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', () => {
|
||||
getUISettingsMock.value.editor_message_key = undefined;
|
||||
const { isEditorHotKeyEnabled } = useUISettings();
|
||||
expect(isEditorHotKeyEnabled('enter')).toBe(false);
|
||||
expect(isEditorHotKeyEnabled('cmd_enter')).toBe(true);
|
||||
expect(isEditorHotKeyEnabled('enter')).toBe(true);
|
||||
expect(isEditorHotKeyEnabled('cmd_enter')).toBe(false);
|
||||
});
|
||||
|
||||
it('handles non-existent keys', () => {
|
||||
|
||||
@ -85,7 +85,7 @@ class Whatsapp::IncomingMessageBaileysService < Whatsapp::IncomingMessageBaseSer
|
||||
|
||||
def message_type # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
||||
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 'image' if msg.key?(:imageMessage)
|
||||
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_type = is_outgoing ? 'User' : 'Contact'
|
||||
message_type = is_outgoing ? :outgoing : :incoming
|
||||
content = @raw_message.dig(:message, :conversation) || @raw_message.dig(:message, :extendedTextMessage, :text)
|
||||
|
||||
@message = @conversation.messages.create!(
|
||||
content: @raw_message[:message][:conversation],
|
||||
content: content,
|
||||
account_id: @inbox.account_id,
|
||||
inbox_id: @inbox.id,
|
||||
source_id: message_id,
|
||||
|
||||
@ -192,6 +192,7 @@ describe Whatsapp::IncomingMessageBaileysService do
|
||||
}
|
||||
end
|
||||
|
||||
context 'when has key conversation' do # rubocop:disable RSpec/NestedGroups
|
||||
it 'creates an incoming message' do
|
||||
described_class.new(inbox: inbox, params: params).perform
|
||||
|
||||
@ -259,6 +260,29 @@ describe Whatsapp::IncomingMessageBaileysService do
|
||||
expect(Redis::Alfred).to have_received(:delete)
|
||||
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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user