diff --git a/lib/net/sms/bulksms.rb b/lib/net/sms/bulksms.rb index 19aa615..13c67d9 100644 --- a/lib/net/sms/bulksms.rb +++ b/lib/net/sms/bulksms.rb @@ -4,6 +4,7 @@ require File.dirname(__FILE__) + '/bulksms/account' require File.dirname(__FILE__) + '/bulksms/message' require File.dirname(__FILE__) + '/bulksms/response' +require File.dirname(__FILE__) + '/bulksms/report' module Net module SMS @@ -27,7 +28,7 @@ module BulkSMS SPAIN = 'spain' SAFRICA = 'safrica' INTER = 'international' - + class Service # The port the message service rus on MESSAGE_SERVICE_PORT = 80 #5567 @@ -35,6 +36,9 @@ class Service # Path to the message service gateway MESSAGE_SERVICE_PATH = '/eapi/submission/send_sms/2/2.0' + #path to the report service + REPORT_SERVICE_PATH = '/eapi/status_reports/get_report/2/2.0' + # returns an Account object for the credentials supplied to the service attr_reader :account @@ -68,7 +72,17 @@ def send_multiple(messages) def send(message, recipient) msg = Message.new(message, recipient) self.send_message(msg) - end + end + + #Get a message report + def get_report(batch_id) + payload = [@account.to_http_query, {:batch_id => batch_id}.to_query].join('&') + http = Net::HTTP.new(Service.bulksms_gateway(@country)) + request = Net::HTTP::Get.new('/eapi/status_reports/get_report/2/2.0?' + payload) + response = http.request(request) + tokens = response.body.split('|') + Response.new(tokens[2].to_i, tokens[1], batch_id) + end # Returns the gateway URL for the chosen country def self.bulksms_gateway(country) diff --git a/lib/net/sms/bulksms/account.rb b/lib/net/sms/bulksms/account.rb index f34b81d..cd4a49b 100644 --- a/lib/net/sms/bulksms/account.rb +++ b/lib/net/sms/bulksms/account.rb @@ -9,7 +9,7 @@ module BulkSMS class Account # The port the account service runs on - SERVICE_PORT = 7512 + SERVICE_PORT = 80#7512 # Path to the account service gateway SERVICE_PATH = '/eapi/1.0/get_credits.mc' diff --git a/lib/net/sms/bulksms/message.rb b/lib/net/sms/bulksms/message.rb index 118b417..c9d5822 100644 --- a/lib/net/sms/bulksms/message.rb +++ b/lib/net/sms/bulksms/message.rb @@ -20,12 +20,12 @@ def initialize(message, recipient) @message = message @recipient = recipient @msg_class = NORMAL_SMS - @want_report = 0 + @want_report = 1 @routing_group = 2 @source_id = '' @test_always_succeed = 0 @test_always_fail = 0 - @concat_text_sms = 0 + @concat_text_sms = 1 @concat_max_parts = 2 end diff --git a/lib/net/sms/bulksms/report.rb b/lib/net/sms/bulksms/report.rb new file mode 100644 index 0000000..fa19507 --- /dev/null +++ b/lib/net/sms/bulksms/report.rb @@ -0,0 +1,42 @@ +require 'net/http' +require 'uri' + +module Net + module SMS + module BulkSMS + class Report + #Status from: http://developer.bulksms.com/eapi/status_reports/get_report/ + STATUS_IN_PROGRESS = 0 + STATUS_DELIVERED_UPSTREAM = 10 + STATUS_DELIVERED_TO_MOBILE = 11 + STATUS_DELIVERED_UPSTREAM_UNACKNOWLEDGED = 12 + STATUS_INTERNAL_FATAL_ERROR = 22 + STATUS_AUTH_FAILURE = 23 + STATUS_DATA_VALIDATION_FAILURE = 24 + STATUS_UNSUFICIENT_CREDITS = 25 + STATUS_UPSTREAM_CREDITS_UNAVAILABLE = 26 + STATUS_DAILY_QUOTA_EXCEEDED = 27 + STATUS_UPSTREAM_QUOTA_EXCEEDED = 28 + STATUS_MESSAGE_SENDING_CANCELED = 29 + STATUS_UNROUTABLE = 31 + STATUS_BLOCKED = 32 + STATUS_CENSORED = 33 + STATUS_TEMPORARILY_UNAVAILABLE = 40 + STATUS_GENERIC_FAILURE = 50 + STATUS_PHONE_DELIVERY_FAILED = 51 + STATUS_NETWORK_DELIVERY_FAILED = 52 + STATUS_MESSAGE_EXPIRED = 53 + STATUS_FAILED_ON_REMOTE_NETWORK = 54 + STATUS_REMOTELY_BLOCKED = 55 + STATUS_REMOTELY_CENSORED = 56 + STATUS_FAULT_ON_HANDSET = 57 + STATUS_TRANSIENT_UPSTREAM_FAILURE = 60 + STATUS_UPSTREAM_STATUS_FAILURE = 61 + STATUS_UPSTREAM_CANCEL_FAILED = 62 + STATUS_QUEUED_FOR_RETRY_AFTER_TEMPORARY_DELIVERY_FAILURE = 63 + STATUS_QUEUED_FOR_RETRY_AFTER_TEMPORARY_DELIVERY_HANDSET_FAULT = 64 + STATUS_UNKNOWN_UPSTREAM_STATUS = 70 + end + end + end +end \ No newline at end of file diff --git a/ruby-bulksms-0.4.4.gem b/ruby-bulksms-0.4.4.gem new file mode 100644 index 0000000..4ac5be3 Binary files /dev/null and b/ruby-bulksms-0.4.4.gem differ diff --git a/ruby-bulksms.gemspec b/ruby-bulksms.gemspec index b877a35..7c691be 100644 --- a/ruby-bulksms.gemspec +++ b/ruby-bulksms.gemspec @@ -1,6 +1,6 @@ Gem::Specification.new do |s| s.name = "ruby-bulksms" - s.version = "0.4.3" + s.version = "0.4.5" s.date = "2015-07-02" s.summary = "Sending SMS using bulksms services" s.email = "eng.basayel.said@gmail.com" @@ -15,6 +15,7 @@ Gem::Specification.new do |s| "lib/net/sms/bulksms/account.rb", "lib/net/sms/bulksms/message.rb", "lib/net/sms/bulksms/response.rb", + "lib/net/sms/bulksms/report.rb", "lib/net/sms/bulksms.rb" ] end \ No newline at end of file