Class: Outbox::Bandwidth::Client

Inherits:
Clients::Base
  • Object
show all
Includes:
Bandwidth::Messaging
Defined in:
lib/outbox/bandwidth/client.rb

Overview

Uses Bandwidth’s official Ruby API client (bandwidth) to deliver SMS messages.

Outbox::Messages::SMS.default_client(
  :bandwidth,
  account_sid: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  token: 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy',
  secret: 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'
)
sms = Outbox::Messages::SMS.new(
  to: '+15552224444',
  from: '+15551115555',
  body: 'Hello World'
)
sms.deliver

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(settings = nil) ⇒ Client

Returns a new instance of Client.



26
27
28
29
30
31
32
33
34
35
# File 'lib/outbox/bandwidth/client.rb', line 26

def initialize(settings = nil)
  super

  options = @settings.dup
  @api_client = ::Bandwidth::Client.new(
    messaging_basic_auth_user_name: options[:token],
    messaging_basic_auth_password: options[:secret]
  )
  @account_id = options[:subaccount_id] || options[:account_id]
end

Instance Attribute Details

#api_clientObject (readonly)

Returns the value of attribute api_client.



23
24
25
# File 'lib/outbox/bandwidth/client.rb', line 23

def api_client
  @api_client
end

Instance Method Details

#deliver(sms) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/outbox/bandwidth/client.rb', line 37

def deliver(sms)
  messaging_client = @api_client.messaging_client.client
  body = ::Bandwidth::MessageRequest.new
  body.application_id = sms[:application_id]
  body.to = sms.to
  body.from = sms.from
  body.text = sms.body
  body.media = [sms[:media_url]] unless sms[:media_url].nil?
  messaging_client.create_message((sms), body: body)
end