SDK in Ruby for THECALLR API
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
samples
.gitignore
LICENSE
README.md
callr.gemspec

README.md

sdk-ruby

SDK in Ruby for CALLR API

Quick start

Install via Rubygems

gem install callr

Or get sources from Github

Initialize your code

Gem

require 'callr'
api = CALLR::Api.new('login', 'password')

Source

load 'lib/callr.rb'
api = CALLR::Api.new('login', 'password')

Exception management

begin
    api = CALLR::Api.new('login', 'password')
    api.call('sms.send', 'CALLR')
rescue CALLR::CallrException, CALLR::CallrLocalException => e
    puts "ERROR: #{e.code}"
    puts "MESSAGE: #{e.msg}"
    puts "DATA: ", e.data
end

Usage

Sending SMS

Without options

result = api.call('sms.send', 'CALLR', '+33123456789', 'Hello world!', nil)

Method

Personalized sender

Your sender must have been authorized and respect the sms_sender format

result = api.call('sms.send', 'Your Brand', '+33123456789', 'Hello world!', nil)

Method

If you want to receive replies, do not set a sender - we will automatically use a shortcode

result = api.call('sms.send', '', '+33123456789', 'Hello world!', nil)

Method

Force GSM encoding

optionSMS = { :force_encoding => 'GSM' }

result = api.call('sms.send', '', '+33123456789', 'Hello world!', optionSMS)

Method

Objects

Long SMS (availability depends on carrier)

text = 'Some super mega ultra long text to test message longer than 160 characters ' +
           'Some super mega ultra long text to test message longer than 160 characters ' +
           'Some super mega ultra long text to test message longer than 160 characters'
result = api.call('sms.send', 'CALLR', '+33123456789', text, nil)

Method

Specify your SMS nature (alerting or marketing)

optionSMS = { :nature => 'ALERTING' }

result = api.call('sms.send', 'CALLR', '+33123456789', 'Hello world!', optionSMS)

Method

Objects

Custom data

optionSMS = { :user_data => '42' }

result = api.call('sms.send', 'CALLR', '+33123456789', 'Hello world!', optionSMS)

Method

Objects

Delivery Notification - set URL to receive notifications

optionSMS = {
    :push_dlr_enabled => true,
    :push_dlr_url => 'http://yourdomain.com/push_delivery_path',
    # :push_dlr_url_auth => 'login:password' # needed if you use Basic HTTP Authentication
}

result = api.call('sms.send', 'CALLR', '+33123456789', 'Hello world!', optionSMS)

Method

Objects

Inbound SMS - set URL to receive inbound messages (MO) and replies

Do not set a sender if you want to receive replies - we will automatically use a shortcode.

optionSMS = {
    :push_mo_enabled => true,
    :push_mo_url => 'http://yourdomain.com/mo_delivery_path',
    # :push_mo_url_auth => 'login:password' # needed if you use Basic HTTP Authentication
}

result = api.call('sms.send', '', '+33123456789', 'Hello world!', optionSMS)

Method

Objects

Get an SMS

result = api.call('sms.get', 'SMSHASH')

Method

Objects

SMS Global Settings

Get settings

result = api.call('sms.get_settings')

Method

Objects

Set settings

Add options that you want to change in the object

settings = {
    :push_dlr_enabled => true,
    :push_dlr_url => 'http://yourdomain.com/push_delivery_path',
    :push_mo_enabled => true,
    :push_mo_url => 'http://yourdomain.com/mo_delivery_path'
}

result = api.call('sms.set_settings', settings)

Returns the updated settings.

Method

Objects


REALTIME

Create a REALTIME app with a callback URL

options = {
    :url => 'http://yourdomain.com/realtime_callback_url'
}

result = api.call('apps.create', 'REALTIME10', 'Your app name', options)

Method

Objects

Start a REALTIME outbound call

target = {
    :number => '+33132456789',
    :timeout => 30
}

callOptions = {
    :cdr_field => '42',
    :cli => 'BLOCKED'
}

result = api.call('dialr/call.realtime', 'appHash', target, callOptions)

Method

Objects

Inbound Calls - Assign a phone number to a REALTIME app

result = api.call('apps.assign_did', 'appHash', 'DID ID')

Method

Objects


DIDs

List available countries with DID availability

result = api.call('did/areacode.countries')

Method

Objects

Get area codes available for a specific country and DID type

result = api.call('did/areacode.get_list', 'US', nil)

Method

Objects

Get DID types available for a specific country

result = api.call('did/areacode.types', 'US')

Method

Objects

Buy a DID (after a reserve)

result = api.call('did/store.buy_order', 'OrderToken')

Method

Objects

Cancel your order (after a reserve)

result = api.call('did/store.cancel_order', 'OrderToken')

Method

Cancel a DID subscription

result = api.call('did/store.cancel_subscription', 'DID ID')

Method

View your store quota status

result = api.call('did/store.get_quota_status')

Method

Objects

Get a quote without reserving a DID

result = api.call('did/store.get_quote', 0, 'GOLD', 1)

Method

*Objects/

Reserve a DID

result = api.call('did/store.reserve', 0, 'GOLD', 1, 'RANDOM')

Method

Objects

View your order

result = api.call('did/store.view_order', 'OrderToken')

Method

Objects


Conferencing

Create a conference room

params = { :open => true }
access = []

result = api.call('conference/10.create_room', 'room name', params, access)

Method

Objects

Assign a DID to a room

result = api.call('conference/10.assign_did', 'Room ID', 'DID ID')

Method

Create a PIN protected conference room

params = { :open => true }
access = [
    { :pin => '1234', :level => 'GUEST' },
    { :pin => '4321', :level => 'ADMIN', :phone_number => '+33123456789' }
]

result = api.call('conference/10.create_room', 'room name', params, access)

Method

Objects

Call a room access

result = api.call('conference/10.call_room_access', 'Room Access ID', 'BLOCKED', true)

Method


Media

List your medias

result = api.call('media/library.get_list', nil)

Method

Create an empty media

result = api.call('media/library.create', 'name')

Method

Upload a media

media_id = 0

result = api.call('media/library.set_content', media_id, 'text', 'base64_audio_data')

Method

Use Text-to-Speech

media_id = 0

result = api.call('media/tts.set_content', media_id, 'Hello world!', 'TTS-EN-GB_SERENA', nil)

Method


CDR

Get inbound or outbound CDRs

from = 'YYYY-MM-DD HH:MM:SS'
to = 'YYYY-MM-DD HH:MM:SS'

result = api.call('cdr.get', 'OUT', from, to, nil, nil)

Method

Objects


SENDR

Broadcast messages to a target (BETA)

target = {
    :number => '+33123456789',
    :timeout => 30
}

messages = [131, 132, 'TTS|TTS_EN-GB_SERENA|Hello world! how are you ? I hope you enjoy this call. good bye.']

options = {
    :cdr_field => 'userData',
    :cli => 'BLOCKED',
    :loop => 2
}

result = api.call('sendr/simple.broadcast_1', target, messages, options)
Without options
target = {
    :number => '+33123456789',
    :timeout => 30
}

messages = [131, 132, 134]

result = api.call('sendr/simple.broadcast_1', target, messages, nil)

Method

Objects