Class: Smstraffic::SMS
- Inherits:
-
Object
- Object
- Smstraffic::SMS
- Defined in:
- lib/smstraffic/sms.rb
Instance Attribute Summary collapse
-
#errors ⇒ Object
readonly
Returns the value of attribute errors.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#message ⇒ Object
Returns the value of attribute message.
-
#phone ⇒ Object
Returns the value of attribute phone.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
-
#subject ⇒ Object
Returns the value of attribute subject.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(phone, subject, message, translit = nil) ⇒ SMS
constructor
A new instance of SMS.
-
#send ⇒ Object
> SMS send status codes: 401 - Не указан логин 402 - Не указан пароль 403 - Не указаны номера телефонов 404 - Несовместимые параметры запроса 405 - Не указан текст сообщения 406 - wap push сообщение слишком длинное 407 - Не указан ни один телефон 408 - Неподдерживаемый тип сообщения: “тип_сообщения” 409 - Не указан udh 410 - Автоматическая разбивка бинарных сообщений не поддерживается 411 - Неверный логин или пароль 412 - Неверный IP 413 - Такой группы не существует: “имя_группы” 414 - В группе нет ни одного телефона 415 - Недостаточно средств 416 - Неверный формат даты начала рассылки: “дата_старта_рассылки” 417 - Дата начала рассылки “дата_старта_рассылки” находится в прошлом 418 - Идентификаторы не предоставляются для отложенных сообщений 419 - Вам не разрешено использовать данный маршрут 420 - Сообщение “текст_сообщения” слишком длинное 421 - Имя отправителя слишком длинное 422 - Не указан телефон в строке “номер_строки”: “строка” 423 - Пустое сообщение для телефона “номер_телефона” 424 - Сообщение “текст_сообщения” для телефона “номер_телефона” слишком длинное 425 - Номер телефона “номер_телефона” слишком короткий.
- #update_status ⇒ Object
- #validate! ⇒ Object
Constructor Details
#initialize(phone, subject, message, translit = nil) ⇒ SMS
Returns a new instance of SMS.
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/smstraffic/sms.rb', line 12 def initialize(phone, subject, , translit=nil) @phone = phone.to_s.length == 10 ? "7#{phone}".to_i : phone @subject = subject @message = @status = 'not-sent' @translit = translit.nil? ? @@translit : translit @errors = [] validate! end |
Instance Attribute Details
#errors ⇒ Object (readonly)
Returns the value of attribute errors.
10 11 12 |
# File 'lib/smstraffic/sms.rb', line 10 def errors @errors end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
10 11 12 |
# File 'lib/smstraffic/sms.rb', line 10 def id @id end |
#message ⇒ Object
Returns the value of attribute message.
9 10 11 |
# File 'lib/smstraffic/sms.rb', line 9 def @message end |
#phone ⇒ Object
Returns the value of attribute phone.
9 10 11 |
# File 'lib/smstraffic/sms.rb', line 9 def phone @phone end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
10 11 12 |
# File 'lib/smstraffic/sms.rb', line 10 def status @status end |
#subject ⇒ Object
Returns the value of attribute subject.
9 10 11 |
# File 'lib/smstraffic/sms.rb', line 9 def subject @subject end |
Class Method Details
.settings=(settings = {}) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/smstraffic/sms.rb', line 23 def self.settings=(settings={}) @@login = settings[:login] @@password = settings[:password] @@server = settings[:server] @@routeGroupId = settings[:routeGroupId] @@port = 80 @@ssl_port = 443 @@ssl = !settings[:ssl].nil? ? settings[:ssl] : true # connect using ssl by default @@translit = !settings[:translit].nil? ? settings[:translit] : false # use translit or not validate_settings! end |
.ssl ⇒ Object
39 40 41 |
# File 'lib/smstraffic/sms.rb', line 39 def self.ssl @@ssl end |
.ssl=(flag) ⇒ Object
35 36 37 |
# File 'lib/smstraffic/sms.rb', line 35 def self.ssl=(flag) @@ssl = flag end |
.status(id) ⇒ Object
121 122 123 124 125 126 127 128 129 |
# File 'lib/smstraffic/sms.rb', line 121 def self.status(id) establish_connection.start do |http| request = Net::HTTP::Get.new(status_url id) response = http.request(request) body = response.body hash = Hash.from_xml(Nokogiri::XML(body).to_s)['reply'] hash['status'] || hash['error'] #status or error end end |
Instance Method Details
#send ⇒ Object
> SMS send status codes:
401 - Не указан логин
402 - Не указан пароль
403 - Не указаны номера телефонов
404 - Несовместимые параметры запроса
405 - Не указан текст сообщения
406 - wap push сообщение слишком длинное
407 - Не указан ни один телефон
408 - Неподдерживаемый тип сообщения: "тип_сообщения"
409 - Не указан udh
410 - Автоматическая разбивка бинарных сообщений не поддерживается
411 - Неверный логин или пароль
412 - Неверный IP
413 - Такой группы не существует: "имя_группы"
414 - В группе нет ни одного телефона
415 - Недостаточно средств
416 - Неверный формат даты начала рассылки: "дата_старта_рассылки"
417 - Дата начала рассылки "дата_старта_рассылки" находится в прошлом
418 - Идентификаторы не предоставляются для отложенных сообщений
419 - Вам не разрешено использовать данный маршрут
420 - Сообщение "текст_сообщения" слишком длинное
421 - Имя отправителя слишком длинное
422 - Не указан телефон в строке "номер_строки": "строка"
423 - Пустое сообщение для телефона "номер_телефона"
424 - Сообщение "текст_сообщения" для телефона "номер_телефона" слишком длинное
425 - Номер телефона "номер_телефона" слишком короткий. Ни одно сообщение не было отправлено
426 - Номер телефона "номер_телефона" слишком длинный. Ни одно сообщение не было отправлено
427 - "номер_телефона": неверная длина номера телефона. Ни одно сообщение не было отправлено
428 - "номер_телефона": неверный формат номера телефона. Ни одно сообщение не было отправлено
429 - "номер_телефона": неподдерживаемый оператор. Ни одно сообщение не было отправлено
430 - "номер_телефона": неверный номер телефона. Ни одно сообщение не было отправлено
431 - Телефон +"номер_телефона" не подписан на рассылку. Ни одно сообщение не было отправлено
432 - Заблокированный номер телефона: "номер_телефона". Ни одно сообщение не было отправлено
433 - Не указан параметр sms_id
434 - Такого сообщения нет или оно вам не принадлежит
435 - Невозможно отменить сообщение "sms_id"
436 - Отправитель "отправитель" запрещен
437 - Сообщение превышает 160 символов после транслитерации "текст_сообщения"
438 - В сообщении найден шаблон, но не задана ни одна группа
439 - Вы не можете отправлять SMSсообщения через HTTP
440 - Параметр "phones" не задан или задан некорректно
441 - Неверный формат файла параметров
442 - Неверное число параметров
501 - Время окончания рассылки в прошлом
502 - Время начала рассылки больше времени окончания рассылки
1000 - Временные проблемы на сервере
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/smstraffic/sms.rb', line 90 def send #return stubbed_send if (defined?(Rails) && !Rails.env.production?) self.class.establish_connection.start do |http| request = Net::HTTP::Get.new(send_url) response = http.request(request) body = response.body hash = Hash.from_xml(Nokogiri::XML(body).to_s)['reply'] result = hash['result'] if result == 'OK' @status = 'sent' @id = hash['message_infos']['message_info']['sms_id'] true else @errors << "#{result}: code: #{hash['code']}, description: #{hash['description']}" false end end end |
#update_status ⇒ Object
131 132 133 134 135 136 |
# File 'lib/smstraffic/sms.rb', line 131 def update_status return @status if @id.nil? code, status = self.class.status(@id) return code unless code == 'ok' @status = status end |
#validate! ⇒ Object
138 139 140 141 142 143 |
# File 'lib/smstraffic/sms.rb', line 138 def validate! raise ArgumentError, "Phone should be assigned to #{self.class}." if @phone.nil? raise ArgumentError, "Phone number should contain only numbers. Minimum length is 11. #{@phone.inspect} is given." unless "#{@phone}" =~ /^[0-9]{11}$/ raise ArgumentError, "Subject should be assigned to #{self.class}." if @subject.nil? raise ArgumentError, "Message should be assigned to #{self.class}." if @message.nil? end |