class Pabx::AMI

Attributes

connected[RW]
host[RW]
port[RW]

Public Class Methods

new(host,port) click to toggle source
# File lib/pabx.rb, line 11
def initialize(host,port)
  self.host = host.to_s
  self.port = port.to_i
  self.connected = false
  @session = nil
end

Public Instance Methods

command(command) click to toggle source
# File lib/pabx.rb, line 51
def command(command)
  request = Request.new("Command",{ "Command" => command })
  request.commands.each do |command|
    @session.write(command)
  end
  @session.waitfor("String" => "ActionID: "+request.action_id, "Timeout" => 3) do |data|
    request.response_data << data
  end
  Response.new("Command",request.response_data)
end
connect() click to toggle source
# File lib/pabx.rb, line 18
def connect
  begin
    @session = Net::Telnet::new("Host" => self.host,"Port" => self.port)
    self.connected = true
  rescue Exception => ex
    false
  end
end
core_show_channels() click to toggle source
# File lib/pabx.rb, line 62
def core_show_channels
  request = Request.new("CoreShowChannels")
  request.commands.each do |command|
    @session.write(command)
  end
  @session.waitfor("String" => "ActionID: "+request.action_id, "Timeout" => 3) do |data|
    request.response_data << data
  end
  Response.new("CoreShowChannels",request.response_data)
end
disconnect() click to toggle source
# File lib/pabx.rb, line 27
def disconnect
  begin
    @session.close if self.connected
    @session = nil
    self.connected = false
    true
  rescue Exception => ex
    puts ex
    false
  end
end
extension_state(exten,context) click to toggle source
# File lib/pabx.rb, line 95
def extension_state(exten,context)
  request = Request.new("ExtensionState",{"Exten" => exten, "Context" => context})
  request.commands.each do |command|
    @session.write(command)
  end
  @session.waitfor("String" => "ActionID: "+request.action_id, "Timeout" => 3) do |data|
    request.response_data << data
  end
  Response.new("ExtensionState",request.response_data)
end
login(username,password) click to toggle source
# File lib/pabx.rb, line 39
def login(username,password)
  self.connect unless self.connected
  request = Request.new("Login",{"Username" => username, "Secret" => password})
  request.commands.each do |command|
    @session.write(command)
  end
  @session.waitfor("String" => "ActionID: "+request.action_id, "Timeout" => 3) do |data|
    request.response_data << data
  end
  Response.new("Login",request.response_data)
end
meet_me_list() click to toggle source
# File lib/pabx.rb, line 73
def meet_me_list
  request = Request.new("MeetMeList")
  request.commands.each do |command|
    @session.write(command)
  end
  @session.waitfor("String" => "ActionID: "+request.action_id, "Timeout" => 3) do |data|
    request.response_data << data
  end
  Response.new("MeetMeList",request.response_data)
end
originate(caller,context,callee,priority,variable=nil) click to toggle source
# File lib/pabx.rb, line 106
def originate(caller,context,callee,priority,variable=nil)
  request = Request.new("Originate",{"Channel" => caller, "Context" => context, "Exten" => callee, "Priority" => priority, "Callerid" => caller, "Timeout" => "30000", "Variable" => variable  })
  request.commands.each do |command|
    @session.write(command)
  end
  @session.waitfor("String" => "ActionID: "+request.action_id, "Timeout" => 40) do |data|
    request.response_data << data
  end
  Response.new("Originate",request.response_data)
end
parked_calls() click to toggle source
# File lib/pabx.rb, line 84
def parked_calls
  request = Request.new("ParkedCalls")
  request.commands.each do |command|
    @session.write(command)
  end
  @session.waitfor("String" => "ActionID: "+request.action_id, "Timeout" => 3) do |data|
    request.response_data << data
  end
  Response.new("ParkedCalls",request.response_data)
end