Page tree

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

This page contains code snippets that demonstrate various Unified API requests that can be implemented in your App. Download.

Requirements

You need Ruby 1.9.3+ with SSL Support in order to run these examples.

Make a Call Between Two Public Numbers

require "net/http"
require "json"
 
# Modify these values with the ones you intend to use
VN_SERVER_ADDRESS   = "CHANGEME"
API_ACCESS_TOKEN 	= "CHANGEME"
EXTENSION_NUMBER    = "CHANGEME"
PUBLIC_NUMBER1      = "CHANGEME"
PUBLIC_NUMBER2 		= "CHANGEME"

# URI that identifies the phone call
uri = URI("https://"+VN_SERVER_ADDRESS+"/uapi/phoneCalls/@me/simple")

# The parameters sent in the body of the request
data = {"extension" => EXTENSION_NUMBER,
        "phoneCallView" => [{
              "source" => PUBLIC_NUMBER1, 
              "destination" => PUBLIC_NUMBER2
       }]
}
 
# Initializes the request by setting the HTTP headers, query and body parameters and the URI path
req = Net::HTTP::Post.new(uri.path)
req.body = JSON.dump(data)
req['Authorization'] = 'Bearer ' + API_ACCESS_TOKEN
req['Content-type'] = 'application/json'

# Makes a HTTP POST request using SSL
res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') do |http|
  http.request(req)
end
 
# Parses the JSON response
objectResult = JSON.parse(res.body)
puts JSON.pretty_generate(objectResult)

Make a Sandbox Call

require "net/http"
require "json"
 
# Modify these values with the ones you intend to use
VN_SERVER_ADDRESS 	= "CHANGEME"
API_ACCESS_TOKEN 	= "CHANGEME"
EXTENSION_NUMBER    = "CHANGEME"
SANDBOX_NUMBER      = "CHANGEME"

# URI that identifies the phone call
uri = URI("https://"+VN_SERVER_ADDRESS+"/uapi/phoneCalls/@me/simple")

# The parameters sent in the body of the request
data = {"extension" => EXTENSION_NUMBER,
			"phoneCallView" => [{
				"source" => EXTENSION_NUMBER, 
				"destination" => SANDBOX_NUMBER
		}]
}
 
# Initializes the request by setting the HTTP headers, query and body parameters and the URI path
req = Net::HTTP::Post.new(uri.path)
req.body = JSON.dump(data)
req['Authorization'] = 'Bearer ' + API_ACCESS_TOKEN
req['Content-type'] = 'application/json'
  
# Makes a HTTP POST request using SSL
res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') do |http|
  http.request(req)
end
 
# Parses the JSON response
objectResult = JSON.parse(res.body)
puts JSON.pretty_generate(objectResult)

Park a Phone Call 

The example below demonstrates how you can use Unified API to park a party of an ongoing phone call. It uses the Park PhoneCalls request.

require "net/http"
require "json"

# Modify these values with the ones you intend to use
VN_SERVER_ADDRESS 	= "CHANGEME"
API_ACCESS_TOKEN 	= "CHANGEME"
PHONECALL_ID 		= "CHANGEME"
PHONECALLVIEW_ID	= "CHANGEME"
EXTENSION_NUMBER	= "CHANGEME"

# URI that identifies the phone call
uri = URI("https://"+VN_SERVER_ADDRESS+"/uapi/phoneCalls/@me/"+ EXTENSION_NUMBER +"/"+PHONECALL_ID)

# The parameters sent in the body of the request
data = {
    "action" => "Park",
    "phoneCallViewId" => PHONECALLVIEW_ID
}
# Initializes the request by setting the HTTP headers, query and body parameters and the URI path
req = Net::HTTP::Put.new(uri.path)
req.body = JSON.dump(data)
req['Authorization'] = 'Bearer ' + API_ACCESS_TOKEN
req['Content-type'] = 'application/json'
  
# Makes a HTTP PUT request using SSL
res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') do |http|
  http.request(req)
end

# Parses the JSON response
objectResult = JSON.parse(res.body)
puts JSON.pretty_generate(objectResult)

Transfer a Call to a Public Number

The example below demonstrates how you can use Unified API to transfer a call to a public number, not registered with VoipNow. It uses the Transfer PhoneCalls request.

require "net/http"
require "json"

# Modify these values with the ones you intend to use
VN_SERVER_ADDRESS 	        = "CHANGEME"
API_ACCESS_TOKEN 	        = "CHANGEME"
PHONECALL_ID 		        = "CHANGEME"
PHONECALLVIEW_ID	        = "CHANGEME"
TRANSFER_DESTINATION_NUMBER = "CHANGEME"

# URI that identifies the phone call
uri = URI("https://"+VN_SERVER_ADDRESS+"/uapi/phoneCalls/@me/@self/"+PHONECALL_ID)

# The parameters sent in the body of the request
data = {
    "action" => "Transfer",
    "sendCallTo" => TRANSFER_DESTINATION_NUMBER,
    "phoneCallViewId" => PHONECALLVIEW_ID
}

# Initializes the request by setting the HTTP headers, query and body parameters and the URI path
req = Net::HTTP::Put.new(uri.path)
req.body = JSON.dump(data)
req['Authorization'] = 'Bearer ' + API_ACCESS_TOKEN
req['Content-type'] = 'application/json'
  
# Makes a HTTP PUT request using SSL
res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') do |http|
  http.request(req)
end

# Parses the JSON response
objectResult = JSON.parse(res.body)
puts JSON.pretty_generate(objectResult)

Record an Ongoing Conversation

The example below demonstrates how you can use Unified API to record an ongoing conversation. This action is possible for phone numbers that are registered with VoipNow. The recording is saved in the wav format and uses the StartRecording PhoneCalls request.

require "net/http"
require "json"

# Modify these values with the ones you intend to use
VN_SERVER_ADDRESS    = "CHANGEME"
API_ACCESS_TOKEN     = "CHANGEME"
PHONECALL_ID         = "CHANGEME"
PHONECALLVIEW_ID     = "CHANGEME"

# URI that identifies the phone call
uri = URI("https://"+VN_SERVER_ADDRESS+"/uapi/phoneCalls/@me/@self/"+PHONECALL_ID)

# The parameters sent in the body of the request
data = {
    "action" => "StartRecording",
    "format" => "wav",
    "phoneCallViewId" => PHONECALLVIEW_ID
}

# Initializes the request by setting the HTTP headers, query and body parameters and the URI path
req = Net::HTTP::Put.new(uri.path)
req.body = JSON.dump(data)
req['Authorization'] = 'Bearer ' + API_ACCESS_TOKEN
req['Content-type'] = 'application/json'
  
# Makes a HTTP PUT request using SSL
res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') do |http|
  http.request(req)
end

# Parses the JSON response
objectResult = JSON.parse(res.body)
puts JSON.pretty_generate(objectResult)

Log in an Agent to a Queue

The example below demonstrates how you can use Unified API to log in an agent to a queue. It uses the Update QueueAgents request.

require "net/http"
require "json"

# Modify these values with the ones you intend to use
VN_SERVER_ADDRESS   = "CHANGEME"
API_ACCESS_TOKEN    = "CHANGEME"
QUEUE_NUMBER        = "CHANGEME"
AGENT_NUMBER        = "CHANGEME"

# URI that identifies the queue agent
uri = URI("https://"+VN_SERVER_ADDRESS+"/uapi/extensions/@me/"+QUEUE_NUMBER+"/queue/agents/"+AGENT_NUMBER)

# The parameters sent in the body of the request
data = {"status" => "1"}

# Initializes the request by setting the HTTP headers, query and body parameters and the URI path
req = Net::HTTP::Put.new(uri.path)
req.body = JSON.dump(data)
req['Authorization'] = 'Bearer ' + API_ACCESS_TOKEN
req['Content-type'] = 'application/json'
 
# Makes a HTTP PUT request using SSL 
res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') do |http|
  http.request(req)
end

# Parses the JSON response
objectResult = JSON.parse(res.body)
puts JSON.pretty_generate(objectResult)

List the Registration Status of an Extension

The example below demonstrates how you can use Unified API to list the status of an extension. It uses the List Presence request.

require "net/http"
require "json"

# Modify these values with the ones you intend to use
VN_SERVER_ADDRESS   = "CHANGEME"
API_ACCESS_TOKEN    = "CHANGEME"
EXTENSION_NUMBER    = "CHANGEME"

# URI that identifies the presence of an extension
uri = URI("https://"+VN_SERVER_ADDRESS+"/uapi/extensions/@me/"+EXTENSION_NUMBER+"/presence")

# Initializes the request by setting the HTTP headers, query and body parameters and the URI path
req = Net::HTTP::Get.new(uri.path)
req['Authorization'] = 'Bearer ' + API_ACCESS_TOKEN
req['Content-type'] = 'application/json'

# Makes a HTTP GET request using SSL
res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') do |http|
  http.request(req)
end

# Parses the JSON response
objectResult = JSON.parse(res.body)
puts JSON.pretty_generate(objectResult)
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels

Except where otherwise noted, content in this space is licensed under a Creative Commons Attribution 4.0 International.