adhearsion 0.8.5 → 0.8.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -0
- data/adhearsion.gemspec +2 -2
- data/lib/adhearsion/foundation/event_socket.rb +1 -0
- data/lib/adhearsion/initializer.rb +1 -1
- data/lib/adhearsion/initializer/configuration.rb +2 -2
- data/lib/adhearsion/version.rb +1 -1
- data/lib/adhearsion/voip/asterisk/commands.rb +26 -5
- data/lib/adhearsion/voip/asterisk/manager_interface.rb +12 -2
- metadata +4 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
0.8.6
|
2
|
+
- Fix packaging problem so all files are publicly readable
|
3
|
+
- Improve AMI reconnecting logic; add "connection refused" retry timer
|
4
|
+
- AGI protocol improvements: parse the status code and response text
|
5
|
+
|
1
6
|
0.8.5
|
2
7
|
- Added XMPP module and sample component. This allows you to easily write components which utilise a persistent XMPP connection maintained by Adhearsion
|
3
8
|
- Prefer finding the dialplan.rb entry point by the AGI request URI instead of the calling context
|
data/adhearsion.gemspec
CHANGED
@@ -117,7 +117,7 @@ ADHEARSION_FILES = %w{
|
|
117
117
|
|
118
118
|
Gem::Specification.new do |s|
|
119
119
|
s.name = "adhearsion"
|
120
|
-
s.version =
|
120
|
+
s.version = Adhearsion::VERSION::STRING
|
121
121
|
|
122
122
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
123
123
|
s.authors = ["Jay Phillips", "Jason Goecke", "Ben Klang"]
|
@@ -129,7 +129,7 @@ Gem::Specification.new do |s|
|
|
129
129
|
|
130
130
|
s.files = ADHEARSION_FILES
|
131
131
|
|
132
|
-
s.has_rdoc =
|
132
|
+
s.has_rdoc = true
|
133
133
|
s.homepage = "http://adhearsion.com"
|
134
134
|
s.require_paths = ["lib"]
|
135
135
|
s.rubyforge_project = "adhearsion"
|
@@ -129,8 +129,8 @@ module Adhearsion
|
|
129
129
|
end
|
130
130
|
|
131
131
|
def initialize(overrides = {})
|
132
|
-
@listening_port = overrides.has_key?(:port) ? overrides
|
133
|
-
@listening_host = overrides.has_key?(:host) ? overrides
|
132
|
+
@listening_port = overrides.has_key?(:port) ? overrides.delete(:port) : self.class.default_listening_port
|
133
|
+
@listening_host = overrides.has_key?(:host) ? overrides.delete(:host) : self.class.default_listening_host
|
134
134
|
super
|
135
135
|
end
|
136
136
|
end
|
data/lib/adhearsion/version.rb
CHANGED
@@ -51,12 +51,33 @@ module Adhearsion
|
|
51
51
|
# Utility method to read from pbx. Hangup if nil.
|
52
52
|
def read
|
53
53
|
returning from_pbx.gets do |message|
|
54
|
-
ahn_log.agi.debug "<<< #{message}"
|
55
54
|
# AGI has many conditions that might indicate a hangup
|
56
55
|
raise Hangup if message.nil?
|
57
|
-
|
58
|
-
|
59
|
-
|
56
|
+
|
57
|
+
ahn_log.agi.debug "<<< #{message}"
|
58
|
+
|
59
|
+
code, rest = *message.split(' ', 2)
|
60
|
+
|
61
|
+
if code == "511"
|
62
|
+
# '511' Command Not Permitted on a dead channel
|
63
|
+
ahn_log.agi.debug "AGI 500 error. Raising hangup"
|
64
|
+
raise Hangup
|
65
|
+
end
|
66
|
+
|
67
|
+
if (500..599) === code.to_i
|
68
|
+
# 500 AGI protocol error. Catches (at least):
|
69
|
+
# 520 Invalid command syntax.
|
70
|
+
# 510 Invalid or unknown command
|
71
|
+
# If we have hit this then something bad has happened.
|
72
|
+
ahn_log.agi.warn "AGI 500 error encountered. This may be a bug in Adhearsion. Please report it at http://adhearsion.lighthouseapp.com"
|
73
|
+
end
|
74
|
+
|
75
|
+
# If the message starts with HANGUP it's a silly 1.6 OOB message
|
76
|
+
case message
|
77
|
+
when /^HANGUP/, /^HANGUP\n?$/i, /^HANGUP\s?\d{3}/i
|
78
|
+
ahn_log.agi.debug "AGI HANGUP. Raising hangup"
|
79
|
+
raise Hangup
|
80
|
+
end
|
60
81
|
end
|
61
82
|
end
|
62
83
|
|
@@ -203,7 +224,7 @@ module Adhearsion
|
|
203
224
|
format = filename.slice!(/\.[^\.]+$/)
|
204
225
|
if (format.nil?)
|
205
226
|
ahn_log.agi.warn "Format not specified and not detected. Defaulting to \"gsm\""
|
206
|
-
format = gsm
|
227
|
+
format = "gsm"
|
207
228
|
end
|
208
229
|
format.sub!(/^\./, "")
|
209
230
|
else
|
@@ -33,6 +33,8 @@ module Adhearsion
|
|
33
33
|
dahdishowchannels coreshowchannels dbget
|
34
34
|
status konferencelist] unless defined? CAUSAL_EVENT_NAMES
|
35
35
|
|
36
|
+
RETRY_SLEEP = 5
|
37
|
+
|
36
38
|
class << self
|
37
39
|
|
38
40
|
def connect(*args)
|
@@ -262,11 +264,11 @@ module Adhearsion
|
|
262
264
|
def clear_actions_connection
|
263
265
|
stop_actions_writer_loop
|
264
266
|
clear_actions_connection_resources
|
265
|
-
disconnect_actions_connection
|
267
|
+
disconnect_actions_connection if @actions_state.equal? :connected
|
266
268
|
end
|
267
269
|
|
268
270
|
def clear_events_connection
|
269
|
-
disconnect_events_connection
|
271
|
+
disconnect_events_connection if @events_state.equal? :connected
|
270
272
|
end
|
271
273
|
|
272
274
|
def disconnect!
|
@@ -543,6 +545,10 @@ module Adhearsion
|
|
543
545
|
handler.disconnected { actions_connection_disconnected }
|
544
546
|
end
|
545
547
|
login_actions
|
548
|
+
rescue Errno::ECONNREFUSED => e
|
549
|
+
ahn_log.ami.warn "ACTIONS thread connection refused! Retrying in #{RETRY_SLEEP} seconds..."
|
550
|
+
sleep RETRY_SLEEP
|
551
|
+
retry
|
546
552
|
end
|
547
553
|
|
548
554
|
def disconnect_actions_connection
|
@@ -569,6 +575,10 @@ module Adhearsion
|
|
569
575
|
end
|
570
576
|
login_events
|
571
577
|
ahn_log.ami "Successful AMI events-only connection into #{@username}@#{@host}"
|
578
|
+
rescue Errno::ECONNREFUSED => e
|
579
|
+
ahn_log.ami.warn "EVENTS thread connection refused! Retrying in #{RETRY_SLEEP} seconds..."
|
580
|
+
sleep RETRY_SLEEP
|
581
|
+
retry
|
572
582
|
end
|
573
583
|
|
574
584
|
def login_actions
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adhearsion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 51
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
9
|
+
- 6
|
10
|
+
version: 0.8.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jay Phillips
|
@@ -193,7 +193,7 @@ files:
|
|
193
193
|
- lib/theatre/version.rb
|
194
194
|
- LICENSE
|
195
195
|
- Rakefile
|
196
|
-
has_rdoc:
|
196
|
+
has_rdoc: true
|
197
197
|
homepage: http://adhearsion.com
|
198
198
|
licenses: []
|
199
199
|
|