mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-03 20:48:07 +00:00 
			
		
		
		
	feat: Send MMS through Twilio Inbox (#2959)
Send MMS message to customer for Twilio integration inbox. Fixes #2311
This commit is contained in:
		@@ -229,7 +229,8 @@ export default {
 | 
			
		||||
        this.isAFacebookInbox ||
 | 
			
		||||
        this.isATwilioWhatsappChannel ||
 | 
			
		||||
        this.isAPIInbox ||
 | 
			
		||||
        this.isAnEmailChannel
 | 
			
		||||
        this.isAnEmailChannel ||
 | 
			
		||||
        this.isATwilioSMSChannel
 | 
			
		||||
      );
 | 
			
		||||
    },
 | 
			
		||||
    replyButtonLabel() {
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,11 @@ class Twilio::SendOnTwilioService < Base::SendOnChannelService
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def perform_reply
 | 
			
		||||
    twilio_message = client.messages.create(**message_params)
 | 
			
		||||
    begin
 | 
			
		||||
      twilio_message = client.messages.create(**message_params)
 | 
			
		||||
    rescue Twilio::REST::TwilioError => e
 | 
			
		||||
      Rails.logger.info "Twilio Error: #{e.message}"
 | 
			
		||||
    end
 | 
			
		||||
    message.update!(source_id: twilio_message.sid)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@@ -16,7 +20,7 @@ class Twilio::SendOnTwilioService < Base::SendOnChannelService
 | 
			
		||||
      from: channel.phone_number,
 | 
			
		||||
      to: contact_inbox.source_id
 | 
			
		||||
    }
 | 
			
		||||
    params[:media_url] = attachments if channel.whatsapp? && message.attachments.present?
 | 
			
		||||
    params[:media_url] = attachments if message.attachments.present?
 | 
			
		||||
    params
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -77,5 +77,20 @@ describe Twilio::SendOnTwilioService do
 | 
			
		||||
 | 
			
		||||
      ::Twilio::SendOnTwilioService.new(message: message).perform
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'if outgoing message has attachment and is for sms' do
 | 
			
		||||
      # check for message attachment url
 | 
			
		||||
      allow(messages_double).to receive(:create).with(hash_including(media_url: [anything])).and_return(message_record_double)
 | 
			
		||||
      allow(message_record_double).to receive(:sid).and_return('1234')
 | 
			
		||||
 | 
			
		||||
      message = build(
 | 
			
		||||
        :message, message_type: 'outgoing', inbox: twilio_inbox, account: account, conversation: conversation
 | 
			
		||||
      )
 | 
			
		||||
      attachment = message.attachments.new(account_id: message.account_id, file_type: :image)
 | 
			
		||||
      attachment.file.attach(io: File.open(Rails.root.join('spec/assets/avatar.png')), filename: 'avatar.png', content_type: 'image/png')
 | 
			
		||||
      message.save!
 | 
			
		||||
 | 
			
		||||
      ::Twilio::SendOnTwilioService.new(message: message).perform
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user