Sha256: 1b230738a79ee2988cf0f39bad98d7869db37937f307d26cca5c036397a7cd06

Contents?: true

Size: 1.67 KB

Versions: 1

Compression:

Stored size: 1.67 KB

Contents

require 'httparty'
require 'json'

module Zenvia
  class SMS
    attr_writer :from, :number, :message

    # function to send the message
    # from: user or enterprise name, number: receiver number, message: text
    def self.send_message(from = nil, number, message)
      begin
        @from = from.nil? ? Zenvia.config.from : from
        @number = number
        @message = message
        response = self.send_sms
        # todo improve returning message with auth error
        response = JSON.parse(response.body)
        puts response['sendSmsResponse']['detailDescription']
      rescue => e
        puts 'Error!'
        raise e
      end
    end

    private
    def self.send_sms
      # convert number to string (if isn't yet) and insert the country code (standard: BR, 55)
      # if not found
      @number = @number.to_s unless @number.class.eql? String
      @number.insert(0, '55') unless /^55/.match(@number)
      # retrieve auth value set in Config class
      @auth = Zenvia.config.auth
      # Zenvia api's endpoint to send sms
      endpoint = 'https://api-rest.zenvia360.com.br/services/send-sms'
      HTTParty.post(endpoint,
                    body: {
                        sendSmsRequest: {
                            from: @from,
                            to: @number,
                            msg: @message,
                            callbackOption: 'NONE'
                        }
                    }.to_json,
                    headers: {
                        'Content-Type' => 'application/json',
                        'Authorization' => "Basic #{@auth}",
                        'Accept' => 'application/json'
                    }
      )
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zenvia-rb-0.0.5 lib/zenvia/sms.rb