Eventmachine based fork
gem install ruby_ami
require'ruby_ami'EM::rundoasterisk_ip='127.0.0.1'asterisk_port=5038asterisk_username=nilasterisk_password=nillogger=Logger.new(STDOUT)logger.level=Logger::INFO# asterisk connectionstream=EM.connect(# EM.connect parametersasterisk_ip,asterisk_port,RubyAMI::Stream,# AMI credentialsasterisk_username,asterisk_password,# event callback->(e){caseewhenRubyAMI::Stream::Connectedputs"connected"whenRubyAMI::Stream::Disconnectedputs"disconnected"elseputs"event received : #{e.name}: #{e.headers.inspect}"end},# optional reconnection callback->(s){EM::add_timer(1){puts"reconnecting..."s.reconnect(asterisk_ip,asterisk_port)}},# optional loggerlogger)# async actionsEM::next_tickdostream.async_send_action('Originate','Channel'=>'SIP/foo')do |response|
putsresponse.inspectendend# sync actions in threadEM::deferdoresponse=stream.send_action('Originate','Channel'=>'SIP/foo')putsresponse.inspectend# sync actions in fiberFiber.newdoresponse=stream.fiber_send_action('Originate','Channel'=>'SIP/foo')putsresponse.inspectend.resumeendCopyright (c) 2013 Ben Langfeld, Jay Phillips. MIT licence (see LICENSE for details).