class Zenvia::SMS
Public Class Methods
lookup(id)
click to toggle source
# File lib/zenvia/sms.rb, line 8 def self.lookup(id) begin res = self.get_status id JSON.parse res.body rescue => e puts "Error!\n#{e}" end end
send_message(number, message, options = {})
click to toggle source
function to send the message
# File lib/zenvia/sms.rb, line 18 def self.send_message(number, message, options = {}) begin @responses = [] @from = options[:from].nil? ? Zenvia.config.from : options[:from] @message = message @options = options numbers = number.is_a?(Array) ? number : number.split numbers.each do |nb| @number = nb response = self.send_one_request @responses.push JSON.parse(response.body) end treat_response rescue => e puts "Error!\n#{e}" end end
send_multiple_messages(list = [], aggregate_id = nil)
click to toggle source
# File lib/zenvia/sms.rb, line 38 def self.send_multiple_messages(list = [], aggregate_id = nil) begin @list = list @aggregate_id = aggregate_id validate_list! if @errors[:errors].empty? response = self.send_multiple_requests JSON.parse response.body else @errors end rescue => e puts "Error!\n#{e}" end end
Private Class Methods
get_status(id)
click to toggle source
# File lib/zenvia/sms.rb, line 88 def self.get_status(id) endpoint = "https://api-rest.zenvia360.com.br/services/get-sms-status/#{id}" HTTParty.get(endpoint, headers: { 'Authorization' => "Basic #{Zenvia.config.auth}" } ) end
headers()
click to toggle source
# File lib/zenvia/sms.rb, line 121 def self.headers { 'Content-Type' => 'application/json', 'Authorization' => "Basic #{Zenvia.config.auth}", 'Accept' => 'application/json' } end
send_multiple_requests()
click to toggle source
# File lib/zenvia/sms.rb, line 75 def self.send_multiple_requests endpoint = 'https://api-rest.zenvia360.com.br/services/send-sms-multiple' HTTParty.post(endpoint, body: { sendSmsMultiRequest: { aggregateId: @aggregate_id, sendSmsRequestList: @list } }.to_json, headers: self.headers ) end
send_one_request()
click to toggle source
# File lib/zenvia/sms.rb, line 56 def self.send_one_request @number = treat_number @number endpoint = 'https://api-rest.zenvia360.com.br/services/send-sms' HTTParty.post(endpoint, body: { sendSmsRequest: { from: @from, to: @number, msg: @message, id: @options[:id], schedule: @options[:schedule], aggregateId: @options[:aggregate_id], callbackOption: 'NONE' } }.to_json, headers: self.headers ) end
treat_number(number)
click to toggle source
# File lib/zenvia/sms.rb, line 96 def self.treat_number(number) number = number.to_s unless number.is_a? String patterns = ['(', ')', ' ', '-'] patterns.each {|p| number = number.gsub(p, '')} number.insert(0, '55') unless /^55/.match(number) number end
treat_response()
click to toggle source
# File lib/zenvia/sms.rb, line 117 def self.treat_response @responses.count == 1 ? @responses.first : @responses end
validate_list!()
click to toggle source
# File lib/zenvia/sms.rb, line 104 def self.validate_list! @errors = {errors: []} @list.each do |data| @list[@list.index(data)][:to] = treat_number data[:to] @errors[:errors].push to: 'required' unless data.include?(:to) @errors[:errors].push msg: 'required' unless data.include?(:msg) break if @errors[:errors].any? end end