Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A Ruby gem for interaction with the SMSified API w EventMachine

branch: master
README.md

em-smsified

SMSified is a simple API for sending and receiving text messages using regular phone numbers or short codes. SMSified uses a simple REST interface based on the GSMA OneAPI standard and is backed by Voxeo - the worlds largest communications cloud. Ruby lib for consuming the SMSified OneAPI.

This is a Ruby gem for consuming the SMSified OneAPI with EventMachine.

This library was originally released by Tropo at http://github.com/smsified/smsified-ruby by Jason Goecke and John Dyer. It has been modified to work in the context of EventMachine by Kristian Kristensen.

Installation

gem install em-smsified

Client Example

All of the API methods take an anonymous block which is the method called when the server returns. It yields the response so you can access the result of executing the API operation. The examples below illustrates this. If you don't care about the result of the operation, don't pass a block.

Send an SMS:

require 'rubygems'
require 'eventmachine'
require 'em-smsified'

oneapi = EventMachine::Smsified::OneAPI.new(:username => 'user', :password => 'bug.fungus24')

EM.run do
       oneapi.send_sms :address => '14155551212', :message => 'Hi there!', :sender_address => '13035551212'
end

Find a subscription:

require 'rubygems'
require 'eventmachine'
require 'em-smsified'

subscriptions = EventMachine::Smsified::Subscriptions.new(:username => 'user', :password => 'bug.fungus24')

EM.run do
    subscriptions.inbound_subscriptions('17177455076')
end

Parse the JSON for a callback Incoming Message:

require 'rubygems'
require 'em-smsified'

# Also require your favorite web framework such as Rails or Sinatra
incoming_message = EventMachine::Smsified::IncomingMessage.new json_body
puts incoming_message.date_time           # Wed May 11 18:05:54 UTC 2011
puts incoming_message.destination_address # '16575550100'
puts incoming_message.message             # 'Inbound test'
puts incoming_message.message_id          # 'ef795d3dac56a62fef3ff1852b0c123a'
puts incoming_message.sender_address      # '14075550100'

Or use the built in server (see below).

Server Example

A simple server that just outputs whatever is passed to it from SMSified:

EM.run do
 EM.start_server '0.0.0.0', 8080, EventMachine::Smsified::Server do |s|
         s.on_unknown do |content| 
                  puts "Unknown received (#{content})"
         end

         s.on_delivery_notification do |msg|
                  puts "Delivery Notification " + Time.now.to_s
                  puts msg.inspect
         end

         s.on_incoming_message do |msg|
                  puts "Message received " + Time.now.to_s
                  puts "#{msg.sender_address} says '#{msg.message}' to #{msg.destination_address}"
                  puts msg.inspect
         end
 end
end

Also see examples/pong_server.rb for another server example.

If you want to test out the server on your local machine and you're machine isn't publicly available you can use http://localtunnel.com

Documentation

May be found at http://kristiankristensen.github.com/em-smsified & http://smsified.com or by cloning the repository and running rake yard

License

MIT - See LICENSE.txt

Something went wrong with that request. Please try again.