- Text Messages
- Inbox & Folders
- Keywords
- Credits
- Contacts
- Groups
- Carrier Lookup
Sending SMS Messages |
Sends SMS text messages via the short code 25827 (212121 In Canada) 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.clubtexting.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',
'MessageTypeID'=>1
})
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 'Message Type ID: ' + ruObj['Entry']['MessageTypeID'].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.clubtexting.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',
'MessageTypeID'=>1
})
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 'Message Type ID: ' + ruObj['Response']['Entry']['MessageTypeID'].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 Club Texting's short code. Please note, we will check availability for the country your account is set to. |
Code Samples |
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.clubtexting.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.clubtexting.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.clubtexting.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.clubtexting.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.clubtexting.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.clubtexting.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 Club Texting's short code in the country your account is set to send messages to. |
Code Samples |
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.clubtexting.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' => '[email protected]',
'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.clubtexting.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' => '[email protected]',
'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 Club Texting's short code in the country your account is set to send messages to. |
Code Samples |
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.clubtexting.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.clubtexting.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.clubtexting.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.clubtexting.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 Club 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.clubtexting.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.clubtexting.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.clubtexting.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.clubtexting.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
}
}
|
Carrier Lookup |
Returns the wireless carrier of a valid mobile phone number (US & Canada) |
Code Samples |
Ruby - XML
require 'net/https'
require 'uri'
require 'xmlsimple'
url = URI.parse('https://app.clubtexting.com')
#prepare post data
req = Net::HTTP::Get.new('/sending/phone-numbers/2123456786?format=xml&User=winnielkup&Password=winnielkup')
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 'Phone number: ' + ruObj['Entry']['PhoneNumber'].to_s() + "\n"
print 'CarrierName: ' + ruObj['Entry']['CarrierName'].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.clubtexting.com')
#prepare post data
req = Net::HTTP::Get.new('/sending/phone-numbers/7874298287?format=json&User=winnielkup&Password=winnielkup')
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 'Phone number: ' + ruObj['Response']['Entry']['PhoneNumber'].to_s() + "\n"
print 'CarrierName: ' + ruObj['Response']['Entry']['CarrierName'].to_s() + "\n"
else
if !ruObj['Response']['Errors'].nil?
print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n"
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' => '[email protected]',
'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' => '[email protected]',
'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' => '[email protected]',
'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' => '[email protected]',
'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
|
