Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. require 'rubygems'
  2. # not necessary with ruby 1.9 but included for completeness
  3. require 'twilio-ruby'
  4. # put your own credentials here
  5. account_sid = ''
  6. auth_token = ''
  7. #from_number = '+17632960700' # BEST
  8. #from_number = "+17632960600" # Mastery
  9. #sms_filename = 'sms_numbers.csv' # file with CSV data in it
  10.  
  11. def clean_data(data_row)
  12. data = data_row.split(",", 2)
  13. orig_to_number = data[0]
  14. to_number = data[0].gsub(/[^0-9+]+/, "") #strip everything but numbers and + sign
  15. sms_message = data[1].strip
  16. # strip lead/lag " and replace literal "\n" with actual newline
  17. sms_message.gsub!(/\A"|"\Z/, '')
  18. sms_message.gsub!('\n', "\n")
  19. if to_number.length != 12 then
  20. raise("To number incorrect length: #{to_number} (#{orig_to_number})")
  21. end
  22. [to_number, sms_message]
  23. end
  24.  
  25. def send_message(from_number, to_number, sms_message, sms_client)
  26. sms_client.messages.create({
  27. :from => from_number,
  28. :to => to_number,
  29. :body => sms_message
  30. })
  31. end
  32.  
  33. def prepare_arguments(arguments)
  34. puts "Arguments used: #{arguments.inspect}"
  35.  
  36. if arguments.length != 2 then
  37. raise "Arguments required: [BEST|Mastery] [filename]"
  38. end
  39. school_name = arguments[0]
  40. case school_name
  41. when "BEST"
  42. from_number = '+17632960700' # BEST
  43. when "Mastery"
  44. from_number = "+17632960600" # Mastery
  45. else
  46. raise "Arg 1: must be either BEST or Mastery"
  47. end
  48.  
  49. sms_filename = arguments[1]
  50. if !FileTest.file?(sms_filename) then
  51. raise "Arg 2: File must exist"
  52. end
  53.  
  54. puts "Sending to number: #{sms_filename}"
  55. [from_number, sms_filename]
  56. end
  57.  
  58. ##MAIIN START
  59.  
  60. from_number, sms_filename = prepare_arguments(ARGV)
  61.  
  62. # set up a client to talk to the Twilio REST API
  63. sms_client = Twilio::REST::Client.new account_sid, auth_token
  64. num_sent = 1
  65. File.open(sms_filename, "r") do |file|
  66. file.each_line do |line|
  67. begin #rescue
  68. sleep 1.25 # keep the message sending velocity low
  69. puts "- Processing line number: #{num_sent}"
  70. to_number, sms_message = clean_data(line)
  71. puts " Fr:#{from_number} To:#{to_number} Msg:#{sms_message}"
  72. send_message(from_number, to_number, sms_message, sms_client)
  73. num_sent = num_sent + 1
  74. rescue Exception => ex
  75. puts "**Exception raised on number #{to_number}\n Error: #{ex.message}"
  76. next # don't re-raise the error, just skip to the next message
  77. end
  78. end
  79. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement