## 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)