class Xip::Services::Twilio::MessageHandler

Attributes

headers[R]
params[R]
service_message[R]

Public Class Methods

new(params:, headers:) click to toggle source
# File lib/xip/services/twilio/message_handler.rb, line 9
def initialize(params:, headers:)
  @params = params
  @headers = headers
end

Public Instance Methods

coordinate() click to toggle source
# File lib/xip/services/twilio/message_handler.rb, line 14
def coordinate
  Xip::Services::HandleMessageJob.perform_async(
    'twilio',
    params,
    headers
  )

  # Relay our acceptance
  [204, 'No Content']
end
process() click to toggle source
# File lib/xip/services/twilio/message_handler.rb, line 25
def process
  @service_message = ServiceMessage.new(service: 'twilio')
  service_message.sender_id = params['From']
  service_message.target_id = params['To']
  service_message.message = params['Body']

  # Check for media attachments
  attachment_count = params['NumMedia'].to_i

  attachment_count.times do |i|
    service_message.attachments << {
      type: params["MediaContentType#{i}"],
      url: params["MediaUrl#{i}"]
    }
  end

  service_message
end