Class: RubyAsterisk::AMI

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-asterisk.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, port) ⇒ AMI

Returns a new instance of AMI.



11
12
13
14
15
16
# File 'lib/ruby-asterisk.rb', line 11

def initialize(host,port)
  self.host = host.to_s
  self.port = port.to_i
  self.connected = false
  @session = nil
end

Instance Attribute Details

#connectedObject

Returns the value of attribute connected.



9
10
11
# File 'lib/ruby-asterisk.rb', line 9

def connected
  @connected
end

#hostObject

Returns the value of attribute host.



9
10
11
# File 'lib/ruby-asterisk.rb', line 9

def host
  @host
end

#portObject

Returns the value of attribute port.



9
10
11
# File 'lib/ruby-asterisk.rb', line 9

def port
  @port
end

Instance Method Details

#command(command) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# File 'lib/ruby-asterisk.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

#connectObject



18
19
20
21
22
23
24
25
# File 'lib/ruby-asterisk.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_channelsObject



62
63
64
65
66
67
68
69
70
71
# File 'lib/ruby-asterisk.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

#disconnectObject



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ruby-asterisk.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

#login(username, password) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/ruby-asterisk.rb', line 39

def (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_listObject



73
74
75
76
77
78
79
80
81
82
# File 'lib/ruby-asterisk.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) ⇒ Object



95
96
97
98
99
100
101
102
103
104
# File 'lib/ruby-asterisk.rb', line 95

def originate(caller,context,callee,priority)
  request = Request.new("Originate",{"Channel" => caller, "Context" => context, "Exten" => callee, "Priority" => priority, "Callerid" => caller, "Timeout" => "30000"  })
  request.commands.each do |command|
      @session.write(command)
    end
    @session.waitfor("String" => "ActionID: "+request.action_id, "Timeout" => 30) do |data|
      request.response_data << data
    end
    Response.new("Originate",request.response_data)
end

#parked_callsObject



84
85
86
87
88
89
90
91
92
93
# File 'lib/ruby-asterisk.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