Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'rubygems'
- # not necessary with ruby 1.9 but included for completeness
- require 'twilio-ruby'
- # put your own credentials here
- account_sid = ''
- auth_token = ''
- #from_number = '+17632960700' # BEST
- #from_number = "+17632960600" # Mastery
- #sms_filename = 'sms_numbers.csv' # file with CSV data in it
- def clean_data(data_row)
- data = data_row.split(",", 2)
- orig_to_number = data[0]
- to_number = data[0].gsub(/[^0-9+]+/, "") #strip everything but numbers and + sign
- sms_message = data[1].strip
- # strip lead/lag " and replace literal "\n" with actual newline
- sms_message.gsub!(/\A"|"\Z/, '')
- sms_message.gsub!('\n', "\n")
- if to_number.length != 12 then
- raise("To number incorrect length: #{to_number} (#{orig_to_number})")
- end
- [to_number, sms_message]
- end
- def send_message(from_number, to_number, sms_message, sms_client)
- sms_client.messages.create({
- :from => from_number,
- :to => to_number,
- :body => sms_message
- })
- end
- def prepare_arguments(arguments)
- puts "Arguments used: #{arguments.inspect}"
- if arguments.length != 2 then
- raise "Arguments required: [BEST|Mastery] [filename]"
- end
- school_name = arguments[0]
- case school_name
- when "BEST"
- from_number = '+17632960700' # BEST
- when "Mastery"
- from_number = "+17632960600" # Mastery
- else
- raise "Arg 1: must be either BEST or Mastery"
- end
- sms_filename = arguments[1]
- if !FileTest.file?(sms_filename) then
- raise "Arg 2: File must exist"
- end
- puts "Sending to number: #{sms_filename}"
- [from_number, sms_filename]
- end
- ##MAIIN START
- from_number, sms_filename = prepare_arguments(ARGV)
- # set up a client to talk to the Twilio REST API
- sms_client = Twilio::REST::Client.new account_sid, auth_token
- num_sent = 1
- File.open(sms_filename, "r") do |file|
- file.each_line do |line|
- begin #rescue
- sleep 1.25 # keep the message sending velocity low
- puts "- Processing line number: #{num_sent}"
- to_number, sms_message = clean_data(line)
- puts " Fr:#{from_number} To:#{to_number} Msg:#{sms_message}"
- send_message(from_number, to_number, sms_message, sms_client)
- num_sent = num_sent + 1
- rescue Exception => ex
- puts "**Exception raised on number #{to_number}\n Error: #{ex.message}"
- next # don't re-raise the error, just skip to the next message
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement