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

#extension_state(exten, context) ⇒ Object



95
96
97
98
99
100
101
102
103
104
# File 'lib/ruby-asterisk.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) ⇒ 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, variable = nil) ⇒ Object



106
107
108
109
110
111
112
113
114
115
# File 'lib/ruby-asterisk.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" => 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