Chatwoot/app/services/twilio/outgoing_message_service.rb
Pranav Raj S 0cb7333977
Feature: Twilio Whatsapp Integration (#779)
Twilio Whatsapp Integration

Co-authored-by: Sojan <sojan@pepalo.com>
2020-04-30 01:41:13 +05:30

45 lines
1,005 B
Ruby

class Twilio::OutgoingMessageService
pattr_initialize [:message!]
def perform
return if message.private
return if message.source_id
return if inbox.channel.class.to_s != 'Channel::TwilioSms'
return unless message.outgoing?
twilio_message = client.messages.create(message_params)
message.update!(source_id: twilio_message.sid)
end
private
delegate :conversation, to: :message
delegate :contact, to: :conversation
delegate :contact_inbox, to: :conversation
def message_params
params = {
body: message.content,
from: channel.phone_number,
to: contact_inbox.source_id
}
params[:media_url] = attachments if channel.whatsapp? && message.attachments.present?
params
end
def attachments
message.attachments.map(&:file_url)
end
def inbox
@inbox ||= message.inbox
end
def channel
@channel ||= inbox.channel
end
def client
::Twilio::REST::Client.new(channel.account_sid, channel.auth_token)
end
end