Live Sales & Support
SMS API Info
SMS API Home
REST API Docs
·C# Code Samples
·Java Code Samples
·Perl Code Samples
·PHP Code Samples
·Python Code Samples
·Ruby Code Samples
Incoming API Docs
Legacy HTTP API Docs
Dedicated Long Codes
Carrier Coverage
Contact
FAQ
REST SMS API: Ruby Code Samples
- Text Messages
- Sending SMS Messages
- Receiving SMS Messages (Incoming API)
- Inbox & Folders
- Keywords
- Credits
- Contacts
- Groups
Sending SMS Messages |
Sends SMS text messages to a single phone number or an array of phone numbers. |
Code Samples |
|
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.grouptexting.com/sending/messages')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'xml',
'User'=>'winnie',
'Password'=>'the-pooh',
'PhoneNumbers[0]'=>'2123456785',
'PhoneNumbers[1]'=>'2123456786',
'Subject'=>'From Winnie',
'Message'=>'I am a Bear of Very Little Brain, and long words bother me',
'StampToSend'=>'1305582245'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false })
print 'Status: ' + ruObj['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Message ID: ' + ruObj['Entry']['ID'].to_s() + "\n"
print 'Subject: ' + ruObj['Entry']['Subject'].to_s() + "\n"
print 'Message: ' + ruObj['Entry']['Message'].to_s() + "\n"
print 'Total Recipients: ' + ruObj['Entry']['RecipientsCount'].to_s() + "\n"
print 'Credits Charged: ' + ruObj['Entry']['Credits'].to_s() + "\n"
print 'Time To Send: ' + ruObj['Entry']['StampToSend'].to_s() + "\n"
if !ruObj['Entry']['PhoneNumbers'].nil?
numbers = ruObj['Entry']['PhoneNumbers']['PhoneNumber']
print 'Phone Numbers: ' + (numbers.kind_of?(Array) ? numbers.join(', ') : numbers) + "\n"
end
if !ruObj['Entry']['LocalOptOuts'].nil?
numbers = ruObj['Entry']['LocalOptOuts']['PhoneNumber']
print 'Locally Opted Out Numbers: '+ (numbers.kind_of?(Array) ? numbers.join(', ') : numbers) + "\n"
end
if !ruObj['Entry']['GlobalOptOuts'].nil?
numbers = ruObj['Entry']['GlobalOptOuts']['PhoneNumber']
print 'Globally Opted Out Numbers: '+ (numbers.kind_of?(Array) ? numbers.join(', ') : numbers) + "\n"
end
else
if !ruObj['Errors'].nil?
errors = ruObj['Errors']['Error']
print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n"
end
end
}
}
|
|
Ruby - JSON
require 'net/https'
require 'uri'
require 'json'
url = URI.parse('https://app.grouptexting.com/sending/messages')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'json',
'User'=>'winnie',
'Password'=>'the-pooh',
'PhoneNumbers[0]'=>'2123456785',
'PhoneNumbers[1]'=>'2123456786',
'Subject'=>'From Winnie',
'Message'=>'I am a Bear of Very Little Brain, and long words bother me',
'StampToSend'=>'1305582245'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = JSON.parse(res.body)
print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Message ID: ' + ruObj['Response']['Entry']['ID'].to_s() + "\n"
print 'Subject: ' + ruObj['Response']['Entry']['Subject'].to_s() + "\n"
print 'Message: ' + ruObj['Response']['Entry']['Message'].to_s() + "\n"
print 'Total Recipients: ' + ruObj['Response']['Entry']['RecipientsCount'].to_s() + "\n"
print 'Credits Charged: ' + ruObj['Response']['Entry']['Credits'].to_s() + "\n"
print 'Time To Send: ' + ruObj['Response']['Entry']['StampToSend'].to_s() + "\n"
if !ruObj['Response']['Entry']['PhoneNumbers'].nil?
print 'Phone Numbers: ' + ruObj['Response']['Entry']['PhoneNumbers'].join(', ') + "\n"
end
if !ruObj['Response']['Entry']['LocalOptOuts'].nil?
print 'Locally Opted Out Numbers: ' + ruObj['Response']['Entry']['LocalOptOuts'].join(', ') + "\n"
end
if !ruObj['Response']['Entry']['GlobalOptOuts'].nil?
print 'Globally Opted Out Numbers: ' + ruObj['Response']['Entry']['GlobalOptOuts'].join(', ') + "\n"
end
else
if !ruObj['Response']['Errors'].nil?
print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n"
end
end
}
}
|
Inbox & Folders |
| When working with the Inbox and Folder you can perform nine actions: Post (Add New Folder), Put (Update A Folder/Move A Message Between Folders), Delete (Delete A Message/Folder), Get (Get Inbox Message/Folder By ID), Index (Get All Messages/All Folders). The code samples below use the shared library: |
Code Samples - Inbox Messages |
|
Ruby - XML
require 'SmsTextingAPI.rb'
require 'pp'
sms = SmsTextingAPI.new "demouser", "password", :xml
puts 'XML encoding.'
puts 'Get messages'
params = {
'sortBy' => 'Message',
}
messages = sms.get_all('incoming-messages', params)
pp messages
message_id = messages[0]['ID']
message_id2 = messages[1]['ID']
puts 'Move messages to folder'
sms.move_message_to_folder([message_id, message_id2], 77)
puts 'Get message'
pp message = sms.get(message_id2, 'incoming-messages')
puts 'Delete message'
sms.del(message_id, 'incoming-messages')
puts 'Second delete. try to get error'
begin
sms.del(message_id, 'incoming-messages')
rescue SmsTextingAPIError, NameError => e
puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e
end
|
|
Ruby - JSON
require 'SmsTextingAPI.rb'
require 'pp'
sms = SmsTextingAPI.new "demouser", "password", :json
puts 'JSON encoding.'
puts 'Get messages'
messages = sms.get_all('incoming-messages', params)
pp messages
message_id = messages[0]['ID']
puts 'Move message to folder'
sms.move_message_to_folder(message_id, 93)
puts 'Get message'
pp message = sms.get(message_id, 'incoming-messages')
puts 'Delete message'
sms.del(message_id, 'incoming-messages')
puts 'Second delete. try to get error'
begin
sms.del(message_id, 'incoming-messages')
rescue SmsTextingAPIError, NameError => e
puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e
end
|
Code Samples - Inbox Folders |
|
Ruby - XML
require 'SmsTextingAPI.rb'
require 'pp'
sms = SmsTextingAPI.new "demouser", "password", :xml
puts 'XML encoding.'
puts 'Get folders'
pp sms.get_all('messages-folders')
folder = {
'Name' => 'Customer',
}
puts 'Create folder'
pp folder = sms.put(folder, 'messages-folders')
folder_id = folder['ID']
puts 'Get folder'
pp folder = sms.get(folder_id, 'messages-folders')
puts 'Update folder'
folder['Name'] = 'test'
folder['ID'] = folder_id
sms.put(folder, 'messages-folders')
puts 'Delete folder'
sms.del(folder_id, 'messages-folders')
puts 'Second delete. try to get error'
begin
sms.del(folder_id, 'messages-folders')
rescue SmsTextingAPIError, NameError => e
puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e
end
|
|
Ruby - JSON
require 'SmsTextingAPI.rb'
require 'pp'
sms = SmsTextingAPI.new "demouser", "password", :json
puts 'JSON encoding.'
puts 'Get folders'
pp sms.get_all('messages-folders')
folder = {
'Name' => 'Customer',
}
puts 'Create folder'
pp folder = sms.put(folder, 'messages-folders')
folder_id = folder['ID']
puts 'Get folder'
pp folder = sms.get(folder_id, 'messages-folders')
puts 'Update folder'
folder['Name'] = 'test'
folder['ID'] = folder_id
sms.put(folder, 'messages-folders')
puts 'Delete folder'
sms.del(folder_id, 'messages-folders')
puts 'Second delete. try to get error'
begin
sms.del(folder_id, 'messages-folders')
rescue SmsTextingAPIError, NameError => e
puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e
end
|
Check Keyword Availability |
Check whether a Keyword is available to rent on Group Texting. |
Code Samples |
|
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.grouptexting.com')
#prepare post data
req = Net::HTTP::Get.new('/keywords/new?format=xml&Keyword=honey&User=winnie&Password=the-pooh')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false })
print 'Status: ' + ruObj['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Keyword: ' + ruObj['Entry']['Keyword'].to_s() + "\n"
print 'Availability: ' + ruObj['Entry']['Available'].to_s() + "\n"
else
if !ruObj['Errors'].nil?
errors = ruObj['Errors']['Error']
print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n"
end
end
}
}
|
|
Ruby - JSON
require 'net/https'
require 'uri'
require 'json'
url = URI.parse('https://app.grouptexting.com')
req = Net::HTTP::Get.new('/keywords/new?format=json&Keyword=honey&User=winnie&Password=the-pooh')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = JSON.parse(res.body)
print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Keyword: ' + ruObj['Response']['Entry']['Keyword'].to_s() + "\n"
print 'Availability: ' + ruObj['Response']['Entry']['Available'].to_s() + "\n"
else
if !ruObj['Response']['Errors'].nil?
print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n"
end
end
}
}
|
Code Samples - Stored Card |
|
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.grouptexting.com/keywords')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'xml',
'User'=>'demo',
'Password'=>'texting121212',
'Keyword' => 'honey',
'StoredCreditCard' => '1111'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false })
print 'Status: ' + ruObj['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Keyword ID: ' + ruObj['Entry']['ID'].to_s() + "\n"
print 'Keyword: ' + ruObj['Entry']['Keyword'].to_s() + "\n"
print 'Is double opt-in enabled: ' + ruObj['Entry']['EnableDoubleOptIn'].to_s() + "\n"
print 'Confirm message: ' + ruObj['Entry']['ConfirmMessage'].to_s() + "\n"
print 'Join message: ' + ruObj['Entry']['JoinMessage'].to_s() + "\n"
print 'Forward email: ' + ruObj['Entry']['ForwardEmail'].to_s() + "\n"
print 'Forward url: ' + ruObj['Entry']['ForwardUrl'].to_s() + "\n"
if !ruObj['Entry']['ContactGroupIDs'].nil?
groups = ruObj['Entry']['ContactGroupIDs']['Group']
print 'Groups: '+ (groups.kind_of?(Array) ? groups.join(', ') : groups) + "\n"
end
else
if !ruObj['Errors'].nil?
errors = ruObj['Errors']['Error']
print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n"
end
end
}
}
|
|
Ruby - JSON
require 'net/https'
require 'uri'
require 'json'
url = URI.parse('https://app.grouptexting.com/keywords')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'json',
'User'=>'demo',
'Password'=>'texting121212',
'Keyword' => 'honey',
'StoredCreditCard' => '1111'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = JSON.parse(res.body)
print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Keyword ID: ' + ruObj['Response']['Entry']['ID'].to_s() + "\n"
print 'Keyword: ' + ruObj['Response']['Entry']['Keyword'].to_s() + "\n"
print 'Is double opt-in enabled: ' + ruObj['Response']['Entry']['EnableDoubleOptIn'].to_s() + "\n"
print 'Confirm message: ' + ruObj['Response']['Entry']['ConfirmMessage'].to_s() + "\n"
print 'Join message: ' + ruObj['Response']['Entry']['JoinMessage'].to_s() + "\n"
print 'Forward email: ' + ruObj['Response']['Entry']['ForwardEmail'].to_s() + "\n"
print 'Forward url: ' + ruObj['Response']['Entry']['ForwardUrl'].to_s() + "\n"
print 'Groups: ' + ruObj['Response']['Entry']['ContactGroupIDs'].join(', ') + "\n"
else
if !ruObj['Response']['Errors'].nil?
print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n"
end
end
}
}
|
Code Samples - Non-Stored Card |
|
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.grouptexting.com/keywords')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'xml',
'User'=>'winnie',
'Password'=>'the-pooh',
'Keyword' => 'honey',
'FirstName' => 'Winnie',
'LastName' => 'The Pooh',
'Street' => 'Hollow tree, under the name of Mr. Sanders',
'City' => 'Hundred Acre Woods',
'State' => 'New York',
'Zip' => '12345',
'Country' => 'US',
'CreditCardTypeID' => 'Visa',
'Number' => '4111111111111111',
'SecurityCode' => '123',
'ExpirationMonth' => '10',
'ExpirationYear' => '2017'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false })
print 'Status: ' + ruObj['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Keyword ID: ' + ruObj['Entry']['ID'].to_s() + "\n"
print 'Keyword: ' + ruObj['Entry']['Keyword'].to_s() + "\n"
print 'Is double opt-in enabled: ' + ruObj['Entry']['EnableDoubleOptIn'].to_s() + "\n"
print 'Confirm message: ' + ruObj['Entry']['ConfirmMessage'].to_s() + "\n"
print 'Join message: ' + ruObj['Entry']['JoinMessage'].to_s() + "\n"
print 'Forward email: ' + ruObj['Entry']['ForwardEmail'].to_s() + "\n"
print 'Forward url: ' + ruObj['Entry']['ForwardUrl'].to_s() + "\n"
if !ruObj['Entry']['ContactGroupIDs'].nil?
groups = ruObj['Entry']['ContactGroupIDs']['Group']
print 'Groups: '+ (groups.kind_of?(Array) ? groups.join(', ') : groups) + "\n"
end
else
if !ruObj['Errors'].nil?
errors = ruObj['Errors']['Error']
print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n"
end
end
}
}
|
|
Ruby - JSON
require 'net/https'
require 'uri'
require 'json'
url = URI.parse('https://app.grouptexting.com/keywords')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'json',
'User'=>'winnie',
'Password'=>'the-pooh',
'Keyword' => 'honey',
'FirstName' => 'Winnie',
'LastName' => 'The Pooh',
'Street' => 'Hollow tree, under the name of Mr. Sanders',
'City' => 'Hundred Acre Woods',
'State' => 'New York',
'Zip' => '12345',
'Country' => 'US',
'CreditCardTypeID' => 'Visa',
'Number' => '4111111111111111',
'SecurityCode' => '123',
'ExpirationMonth' => '10',
'ExpirationYear' => '2017'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = JSON.parse(res.body)
print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Keyword ID: ' + ruObj['Response']['Entry']['ID'].to_s() + "\n"
print 'Keyword: ' + ruObj['Response']['Entry']['Keyword'].to_s() + "\n"
print 'Is double opt-in enabled: ' + ruObj['Response']['Entry']['EnableDoubleOptIn'].to_s() + "\n"
print 'Confirm message: ' + ruObj['Response']['Entry']['ConfirmMessage'].to_s() + "\n"
print 'Join message: ' + ruObj['Response']['Entry']['JoinMessage'].to_s() + "\n"
print 'Forward email: ' + ruObj['Response']['Entry']['ForwardEmail'].to_s() + "\n"
print 'Forward url: ' + ruObj['Response']['Entry']['ForwardUrl'].to_s() + "\n"
print 'Groups: ' + ruObj['Response']['Entry']['ContactGroupIDs'].join(', ') + "\n"
else
if !ruObj['Response']['Errors'].nil?
print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n"
end
end
}
}
|
Setup A Keyword |
Configures an active Keyword for use on Group Texting. |
Code Samples |
|
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.grouptexting.com/keywords/honey')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'xml',
'User'=>'winnie',
'Password'=>'the-pooh',
'EnableDoubleOptIn' => 1,
'ConfirmMessage' => 'Reply Y to join our sweetest list',
'JoinMessage' => 'The only reason for being a bee that I know of, is to make honey. And the only reason for making honey, is so as I can eat it.',
'ForwardEmail' => 'honey@bear-alliance.co.uk',
'ForwardUrl' => 'http://bear-alliance.co.uk/honey-donations/',
'ContactGroupIDs[0]' => 'honey',
'ContactGroupIDs[1]' => 'lovers'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false })
print 'Status: ' + ruObj['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Keyword ID: ' + ruObj['Entry']['ID'].to_s() + "\n"
print 'Keyword: ' + ruObj['Entry']['Keyword'].to_s() + "\n"
print 'Is double opt-in enabled: ' + ruObj['Entry']['EnableDoubleOptIn'].to_s() + "\n"
print 'Confirm message: ' + ruObj['Entry']['ConfirmMessage'].to_s() + "\n"
print 'Join message: ' + ruObj['Entry']['JoinMessage'].to_s() + "\n"
print 'Forward email: ' + ruObj['Entry']['ForwardEmail'].to_s() + "\n"
print 'Forward url: ' + ruObj['Entry']['ForwardUrl'].to_s() + "\n"
if !ruObj['Entry']['ContactGroupIDs'].nil?
groups = ruObj['Entry']['ContactGroupIDs']['Group']
print 'Groups: '+ (groups.kind_of?(Array) ? groups.join(', ') : groups) + "\n"
end
else
if !ruObj['Errors'].nil?
errors = ruObj['Errors']['Error']
print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n"
end
end
}
}
|
|
Ruby - JSON
require 'net/https'
require 'uri'
require 'json'
url = URI.parse('https://app.grouptexting.com/keywords/honey')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'json',
'User'=>'winnie',
'Password'=>'the-pooh',
'EnableDoubleOptIn' => 1,
'ConfirmMessage' => 'Reply Y to join our sweetest list',
'JoinMessage' => 'The only reason for being a bee that I know of, is to make honey. And the only reason for making honey, is so as I can eat it.',
'ForwardEmail' => 'honey@bear-alliance.co.uk',
'ForwardUrl' => 'http://bear-alliance.co.uk/honey-donations/',
'ContactGroupIDs[0]' => 'honey',
'ContactGroupIDs[1]' => 'lovers'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = JSON.parse(res.body)
print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Keyword ID: ' + ruObj['Response']['Entry']['ID'].to_s() + "\n"
print 'Keyword: ' + ruObj['Response']['Entry']['Keyword'].to_s() + "\n"
print 'Is double opt-in enabled: ' + ruObj['Response']['Entry']['EnableDoubleOptIn'].to_s() + "\n"
print 'Confirm message: ' + ruObj['Response']['Entry']['ConfirmMessage'].to_s() + "\n"
print 'Join message: ' + ruObj['Response']['Entry']['JoinMessage'].to_s() + "\n"
print 'Forward email: ' + ruObj['Response']['Entry']['ForwardEmail'].to_s() + "\n"
print 'Forward url: ' + ruObj['Response']['Entry']['ForwardUrl'].to_s() + "\n"
print 'Groups: ' + ruObj['Response']['Entry']['ContactGroupIDs'].join(', ') + "\n"
else
if !ruObj['Response']['Errors'].nil?
print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n"
end
end
}
}
|
Cancel A Keyword |
Cancels an active Keyword on Group Texting. |
Code Samples |
|
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.grouptexting.com/keywords/honey')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'xml',
'_method'=>'DELETE',
'User'=>'winnie',
'Password'=>'the-pooh',
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
case res
when Net::HTTPSuccess
print "Success!"
else
print res.body+"\n===================================\n"
ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false })
print 'Status: ' + ruObj['Status'].to_s() + "\n"
if !ruObj['Errors'].nil?
errors = ruObj['Errors']['Error']
print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n"
end
end
}
}
|
|
Ruby - JSON
require 'net/https'
require 'uri'
require 'json'
url = URI.parse('https://app.grouptexting.com/keywords/honey')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'json',
'_method'=>'DELETE',
'User'=>'winnie',
'Password'=>'the-pooh',
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
case res
when Net::HTTPSuccess
print "Success!"
else
print res.body+"\n===================================\n"
ruObj = JSON.parse(res.body)
print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n"
if !ruObj['Response']['Errors'].nil?
print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n"
end
end
}
}
|
Check Credit Balance |
Checks credit balances on your account. |
Code Samples |
|
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.grouptexting.com')
#prepare post data
req = Net::HTTP::Get.new('/billing/credits/get?format=xml&User=winnie&Password=the-pooh')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false })
print 'Status: ' + ruObj['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Plan credits: ' + ruObj['Entry']['PlanCredits'].to_s() + "\n"
print 'Anytime credits: ' + ruObj['Entry']['AnytimeCredits'].to_s() + "\n"
print 'Total: ' + ruObj['Entry']['TotalCredits'].to_s() + "\n"
else
if !ruObj['Errors'].nil?
errors = ruObj['Errors']['Error']
print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n"
end
end
}
}
|
|
Ruby - JSON
require 'net/https'
require 'uri'
require 'json'
url = URI.parse('https://app.grouptexting.com')
#prepare post data
req = Net::HTTP::Get.new('/billing/credits/get?format=json&User=winnie&Password=the-pooh')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
ruObj = JSON.parse(res.body)
print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Plan credits: ' + ruObj['Response']['Entry']['PlanCredits'].to_s() + "\n"
print 'Anytime credits: ' + ruObj['Response']['Entry']['AnytimeCredits'].to_s() + "\n"
print 'Total: ' + ruObj['Response']['Entry']['TotalCredits'].to_s() + "\n"
else
if !ruObj['Response']['Errors'].nil?
print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n"
end
end
}
}
|
Buy Credits |
Buys more credits for your account. You may purchase credits using a credit card you have stored in your Group Texting account, or you may pass credit card details when you call the API. |
Code Samples - Stored Card |
|
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.grouptexting.com/billing/credits')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'xml',
'User'=>'demo',
'Password'=>'texting121212',
'NumberOfCredits' => '1000',
'CouponCode' => 'honey2011',
'StoredCreditCard' => '1111'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
if res.body.length > 0
ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false })
print 'Status: ' + ruObj['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Credits purchased: ' + ruObj['Entry']['BoughtCredits'].to_s() + "\n"
print 'Amount charged: ' + ruObj['Entry']['Amount'].to_s() + "\n"
print 'Discount: ' + ruObj['Entry']['Discount'].to_s() + "\n"
print 'Plan credits: ' + ruObj['Entry']['PlanCredits'].to_s() + "\n"
print 'Anytime credits: ' + ruObj['Entry']['AnytimeCredits'].to_s() + "\n"
print 'Total: ' + ruObj['Entry']['TotalCredits'].to_s() + "\n"
else
if !ruObj['Errors'].nil?
errors = ruObj['Errors']['Error']
print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n"
end
end
end
}
}
|
|
Ruby - JSON
require 'net/https'
require 'uri'
require 'json'
url = URI.parse('https://app.grouptexting.com/billing/credits')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'json',
'User'=>'demo',
'Password'=>'texting121212',
'NumberOfCredits' => '1000',
'CouponCode' => 'honey2011',
'StoredCreditCard' => '1111'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
if res.body.length > 0
ruObj = JSON.parse(res.body)
print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Credits purchased: ' + ruObj['Response']['Entry']['BoughtCredits'].to_s() + "\n"
print 'Amount charged: ' + ruObj['Response']['Entry']['Amount'].to_s() + "\n"
print 'Discount: ' + ruObj['Response']['Entry']['Discount'].to_s() + "\n"
print 'Plan credits: ' + ruObj['Response']['Entry']['PlanCredits'].to_s() + "\n"
print 'Anytime credits: ' + ruObj['Response']['Entry']['AnytimeCredits'].to_s() + "\n"
print 'Total: ' + ruObj['Response']['Entry']['TotalCredits'].to_s() + "\n"
else
if !ruObj['Response']['Errors'].nil?
print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n"
end
end
end
}
}
|
Code Samples - Non-Stored Card |
|
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.grouptexting.com/billing/credits')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'xml',
'User'=>'winnie',
'Password'=>'the-pooh',
'NumberOfCredits' => '1000',
'CouponCode' => 'honey2011',
'FirstName' => 'Winnie',
'LastName' => 'The Pooh',
'Street' => 'Hollow tree, under the name of Mr. Sanders',
'City' => 'Hundred Acre Woods',
'State' => 'New York',
'Zip' => '12345',
'Country' => 'US',
'CreditCardTypeID' => 'Visa',
'Number' => '4111111111111111',
'SecurityCode' => '123',
'ExpirationMonth' => '10',
'ExpirationYear' => '2017'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
if res.body.length > 0
ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false })
print 'Status: ' + ruObj['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Credits purchased: ' + ruObj['Entry']['BoughtCredits'].to_s() + "\n"
print 'Amount charged: ' + ruObj['Entry']['Amount'].to_s() + "\n"
print 'Discount: ' + ruObj['Entry']['Discount'].to_s() + "\n"
print 'Plan credits: ' + ruObj['Entry']['PlanCredits'].to_s() + "\n"
print 'Anytime credits: ' + ruObj['Entry']['AnytimeCredits'].to_s() + "\n"
print 'Total: ' + ruObj['Entry']['TotalCredits'].to_s() + "\n"
else
if !ruObj['Errors'].nil?
errors = ruObj['Errors']['Error']
print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n"
end
end
end
}
}
|
|
Ruby - JSON
require 'net/https'
require 'uri'
require 'json'
url = URI.parse('https://app.grouptexting.com/billing/credits')
#prepare post data
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
'format'=>'json',
'User'=>'winnie',
'Password'=>'the-pooh',
'NumberOfCredits' => '1000',
'CouponCode' => 'honey2011',
'FirstName' => 'Winnie',
'LastName' => 'The Pooh',
'Street' => 'Hollow tree, under the name of Mr. Sanders',
'City' => 'Hundred Acre Woods',
'State' => 'New York',
'Zip' => '12345',
'Country' => 'US',
'CreditCardTypeID' => 'Visa',
'Number' => '4111111111111111',
'SecurityCode' => '123',
'ExpirationMonth' => '10',
'ExpirationYear' => '2017'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == "https" # enable SSL/TLS
http.ca_file = "cacert.pem"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start {
http.request(req) {|res|
print res.body+"\n===================================\n"
if res.body.length > 0
ruObj = JSON.parse(res.body)
print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n"
print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n"
case res
when Net::HTTPSuccess
print 'Credits purchased: ' + ruObj['Response']['Entry']['BoughtCredits'].to_s() + "\n"
print 'Amount charged: ' + ruObj['Response']['Entry']['Amount'].to_s() + "\n"
print 'Discount: ' + ruObj['Response']['Entry']['Discount'].to_s() + "\n"
print 'Plan credits: ' + ruObj['Response']['Entry']['PlanCredits'].to_s() + "\n"
print 'Anytime credits: ' + ruObj['Response']['Entry']['AnytimeCredits'].to_s() + "\n"
print 'Total: ' + ruObj['Response']['Entry']['TotalCredits'].to_s() + "\n"
else
if !ruObj['Response']['Errors'].nil?
print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n"
end
end
end
}
}
|
Contacts |
| When working with Contacts you can perform five actions: Post (Add New Contact), Put (Update/Edit A Contact), Delete (Delete A Contact), Get (Get Contact By ID), Index (Get All Contacts). The code samples below use the shared library: |
Code Samples |
|
Ruby - XML
require 'SmsTextingAPI.rb'
require 'pp'
sms = SmsTextingAPI.new "demouser", "password", :xml
puts 'XML encoding.'
puts 'Get contacts'
params = {
'source' => 'upload',
'optout' => 'false',
'group' => 'Honey Lovers',
'sortBy' => 'PhoneNumber',
'sortDir' => 'asc',
'itemsPerPage' => '10',
'page' => '3'
}
pp sms.get_all(:contacts, params)
contact = {
'PhoneNumber' => '2123456985',
'FirstName' => 'Piglet',
'LastName' => 'P.',
'Email' => 'piglet@small-animals-alliance.org',
'Note' => 'It is hard to be brave, when you are only a Very Small Animal.',
'Groups' => ['Friends', 'Neighbors']
}
puts 'Create contact'
pp contact = sms.put(contact, :contacts)
puts 'Get contact'
pp contact = sms.get(contact['ID'], :contacts)
puts 'Update contact'
contact['LastName'] = 'test'
pp contact = sms.put(contact, :contacts)
puts 'Delete contact'
sms.del(contact['ID'], :contacts)
puts 'Second delete. try to get error'
begin
sms.del(contact['ID'], :contacts)
rescue SmsTextingAPIError, NameError => e
puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e
end
|
|
Ruby - JSON
require 'SmsTextingAPI.rb'
require 'pp'
sms = SmsTextingAPI.new "demouser", "password", :json
puts 'JSON encoding.'
puts 'Get contacts'
pp sms.get_all(:contacts, params)
contact = {
'PhoneNumber' => '2123456985',
'FirstName' => 'Piglet',
'LastName' => 'P.',
'Email' => 'piglet@small-animals-alliance.org',
'Note' => 'It is hard to be brave, when you are only a Very Small Animal.',
'Groups' => ['Friends', 'Neighbors']
}
puts 'Create contact'
pp contact = sms.put(contact, :contacts)
puts 'Get contact'
pp contact = sms.get(contact['ID'], :contacts)
puts 'Update contact'
contact['LastName'] = 'test'
pp contact = sms.put(contact, :contacts)
puts 'Delete contact'
sms.del(contact['ID'], :contacts)
puts 'Second delete. try to get error'
begin
sms.del(contact['ID'], :contacts)
rescue SmsTextingAPIError, NameError => e
puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e
end
|
Groups |
| When working with Groups you can perform five actions: Post (Add New Group), Put (Update/Edit A Group), Delete (Delete A Group), Get (Get Group By ID), Index (Get All Groups). The code samples below use the shared library: |
Code Samples |
|
Ruby - XML
require 'SmsTextingAPI.rb'
require 'pp'
sms = SmsTextingAPI.new "demouser", "password", :xml
puts 'XML encoding.'
puts 'Get contacts'
params = {
'source' => 'upload',
'optout' => 'false',
'group' => 'Honey Lovers',
'sortBy' => 'PhoneNumber',
'sortDir' => 'asc',
'itemsPerPage' => '10',
'page' => '3'
}
pp sms.get_all(:contacts, params)
contact = {
'PhoneNumber' => '2123456985',
'FirstName' => 'Piglet',
'LastName' => 'P.',
'Email' => 'piglet@small-animals-alliance.org',
'Note' => 'It is hard to be brave, when you are only a Very Small Animal.',
'Groups' => ['Friends', 'Neighbors']
}
puts 'Create contact'
pp contact = sms.put(contact, :contacts)
puts 'Get contact'
pp contact = sms.get(contact['ID'], :contacts)
puts 'Update contact'
contact['LastName'] = 'test'
pp contact = sms.put(contact, :contacts)
puts 'Delete contact'
sms.del(contact['ID'], :contacts)
puts 'Second delete. try to get error'
begin
sms.del(contact['ID'], :contacts)
rescue SmsTextingAPIError, NameError => e
puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e
end
|
|
Ruby - JSON
require 'SmsTextingAPI.rb'
require 'pp'
sms = SmsTextingAPI.new "demouser", "password", :json
puts 'JSON encoding.'
puts 'Get contacts'
pp sms.get_all(:contacts, params)
contact = {
'PhoneNumber' => '2123456985',
'FirstName' => 'Piglet',
'LastName' => 'P.',
'Email' => 'piglet@small-animals-alliance.org',
'Note' => 'It is hard to be brave, when you are only a Very Small Animal.',
'Groups' => ['Friends', 'Neighbors']
}
puts 'Create contact'
pp contact = sms.put(contact, :contacts)
puts 'Get contact'
pp contact = sms.get(contact['ID'], :contacts)
puts 'Update contact'
contact['LastName'] = 'test'
pp contact = sms.put(contact, :contacts)
puts 'Delete contact'
sms.del(contact['ID'], :contacts)
puts 'Second delete. try to get error'
begin
sms.del(contact['ID'], :contacts)
rescue SmsTextingAPIError, NameError => e
puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e
end
|






