class Smess::Twilio
Attributes
auth_token[RW]
callback_url[RW]
from[RW]
messaging_service_sid[RW]
results[RW]
sid[RW]
Public Class Methods
new(config)
click to toggle source
Calls superclass method
Smess::Output::new
# File lib/smess/outputs/twilio.rb, line 7 def initialize(config) super @results = [] end
Public Instance Methods
deliver()
click to toggle source
# File lib/smess/outputs/twilio.rb, line 21 def deliver send_one_sms sms.message end
validate_config()
click to toggle source
# File lib/smess/outputs/twilio.rb, line 13 def validate_config @sid = config.fetch(:sid) @auth_token = config.fetch(:auth_token) @from = config.fetch(:from, nil) @messaging_service_sid = config.fetch(:messaging_service_sid, nil) @callback_url = config.fetch(:callback_url) end
Private Instance Methods
client()
click to toggle source
# File lib/smess/outputs/twilio.rb, line 64 def client @client ||= ::Twilio::REST::Client.new(sid, auth_token) end
create_client_message(params)
click to toggle source
# File lib/smess/outputs/twilio.rb, line 60 def create_client_message(params) client.api.account.messages.create(params) end
normal_result(response)
click to toggle source
# File lib/smess/outputs/twilio.rb, line 68 def normal_result(response) response_code = response.status response_code = "0" unless response.status == "failed" # Successful response { message_id: response.sid, response_code: response_code.to_s, response: { sid: response.sid, status: response.status, error_code: response.error_code, error_message: response.error_message }, destination_address: sms.to, data: result_data } end
parts()
click to toggle source
# File lib/smess/outputs/twilio.rb, line 29 def parts @parts ||= split_parts end
result_data()
click to toggle source
# File lib/smess/outputs/twilio.rb, line 100 def result_data { to: sms.to, text: sms.message, from: from } end
result_for_error(e)
click to toggle source
# File lib/smess/outputs/twilio.rb, line 86 def result_for_error(e) code = "-1" code = e.code.to_s rescue code { response_code: code, response: { temporaryError: 'true', responseCode: code, responseText: e.message }, data: result_data } end
send_one_sms(message)
click to toggle source
# File lib/smess/outputs/twilio.rb, line 37 def send_one_sms(message) begin opts = { to: "+#{sms.to}", body: message, status_callback: callback_url } if messaging_service_sid.present? opts[:messaging_service_sid] = messaging_service_sid else opts[:from] = from end puts "about to create_client_message" response = create_client_message(opts) puts "got response #{response.inspect}" result = normal_result(response) rescue => e puts "got exception #{e.inspect}" result = result_for_error(e) end result end
split_parts()
click to toggle source
# File lib/smess/outputs/twilio.rb, line 33 def split_parts Smess.separate_sms(sms.message).reject {|s| s.empty? } end