## This shows how to use the Server and Client classes together, without using Server to create a separate proxy server.
require 'rubygems'
require 'rami'
include Rami
server = Server.new({'host' => 'localhost', 'username' => 'asterisk', 'secret' => 'secret'})
server.console =1
server.event_cache = 100
server.run
client = Client.new(server)
client.timeout = 10
client.originate({'Channel' => 'IAX2/nbts', 'Context' =>'default','Exten' =>'1000','Priority' =>1})
#################################
#There are wrappers for many other methods
#and the var t is used to store the output of a method useful to check results of methods such as queues or tu #check if a method execution went well
## Redirect
client.timeout = 10
t = client.redirect({'Action' => 'Redirect', 'Channel' => 'test','ExtraChannel' => 'test', 'Context' => 'mainmenu', 'Exten' => '201', 'Priority' => 1})
print_results(t)
## Queues
client.timeout = 10
t = client.queues
print_results(t)
## IAXpeers
client.timeout = 10
t = client.iax_peers
print_results(t)
## SIPpeers
client.timeout = 10
t = client.sip_peers
print_results(t)
## ParkedCalls
client.timeout = 10
t = client.parked_calls
print_results(t)
## Hangup
client.timeout = 10
t = client.hangup('SIP/test')
print_results(t)
## ExtensionState
client.timeout = 10
t = client.extension_state('menu','201')
print_results(t)
## SetVar
client.timeout = 10
t = client.setvar('IAX2/teliax-6','testmon',1)
print_results(t)
## GetVar
client.timeout = 10
t = client.getvar('IAX2/teliax-6','testmon')
print_results(t)
## Monitor
client.timeout = 10
t = client.monitor('SIP/test','testmon',1)
print_results(t)
## StopMonitor
t = client.stop_monitor('SIP/test')
print_results(t)
## ChangeMonitor
t = client.change_monitor('SIP/test','testmon')
print_results(t)
## Agents
client.timeout = 10
t = client.agents
print_results(t)
## MailboxCount
client.timeout = 10
t = client.mailbox_count(1002)
print_results(t)
## MailboxStatus
t = client.mailbox_status(1001)
print_results(t)
## Ping
client.timeout = 10
t = client.ping
print_results(t)
## DBPut
client.timeout = 10
t = client.dbput('testfamily','testkey','testval')
print_results(t)
## DBGet
client.timeout = 10
t = client.dbget('testfamily','testkey')
print_results(t)
## Originate
# Waits for Hangup or OriginateFailed. Returns all associated events
client.timeout = 90
t = client.originate({'Channel' => 'IAX2/nbts', 'Context' =>'default','Exten' =>'1000','Priority' =>1})
print_results(t)
# Does not wait, returns immediately. Associated events available via get_events or find_events.
client.timeout = 10
t = client.originate({'Async' => 1,'Channel' => 'IAX2/nbts', 'Context' =>'default','Exten' =>'1000','Priority' =>1})
print_results(t)
## Status
t = client.status()
print_results(t)
## AbsoluteTimeout
t = client.absolute_timeout('IAX2/nbts',20)
print_results(t)
## Command
t = client.command('show manager commands')
print_results(t)
## Find events in the state queue
t = client.find_events('Event','NewCallerID')
print_results(t)
# OR
t = client.find_events('any' => 'SIP/test_extension')
print_results(t)
## Get all events in the state queue
t = client.get_events
print_results(t)