adhearsion 0.8.1 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +8 -0
- data/EVENTS +2 -2
- data/Rakefile +7 -0
- data/adhearsion.gemspec +1 -2
- data/app_generators/ahn/templates/Rakefile +2 -0
- data/app_generators/ahn/templates/components/disabled/sandbox/sandbox.rb +1 -6
- data/app_generators/ahn/templates/components/disabled/stomp_gateway/stomp_gateway.yml +1 -1
- data/app_generators/ahn/templates/events.rb +1 -1
- data/lib/adhearsion/initializer.rb +2 -2
- data/lib/adhearsion/initializer/database.rb +2 -1
- data/lib/adhearsion/initializer/rails.rb +2 -1
- data/lib/adhearsion/version.rb +2 -2
- data/lib/adhearsion/voip/asterisk/agi_server.rb +6 -3
- data/lib/adhearsion/voip/asterisk/commands.rb +2 -1
- data/lib/adhearsion/voip/call.rb +4 -0
- data/lib/theatre/invocation.rb +1 -1
- metadata +2 -3
- data/README.markdown +0 -31
data/CHANGELOG
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
0.8.2
|
2
|
+
- ManagerInterfaceResponse now include()s DRbUndumped, allowing send_action() to be called directly over DRb.
|
3
|
+
- Fixes an inconsequential bug when CTL-C'ing Adhearsion.
|
4
|
+
|
5
|
+
0.8.1
|
6
|
+
- The sandbox component now comes
|
7
|
+
- Minor bug fixes
|
8
|
+
|
1
9
|
0.8.0 rev 2
|
2
10
|
- Added a few non-critical files to the .gemspec. They were ignored
|
3
11
|
|
data/EVENTS
CHANGED
data/Rakefile
CHANGED
@@ -118,3 +118,10 @@ task :debug_gem do
|
|
118
118
|
Thread.new { spec = eval("$SAFE = 3\n#{gemspec}") }.join
|
119
119
|
puts "SUCCESS: Gemspec runs at the $SAFE level 3."
|
120
120
|
end
|
121
|
+
|
122
|
+
desc 'Install the package as a gem.'
|
123
|
+
task :install_gem => [:clobber_package, :package] do
|
124
|
+
windows = /djgpp|(cyg|ms|bcc)win|mingw/ =~ RUBY_PLATFORM
|
125
|
+
gem = Dir['pkg/*.gem'].first
|
126
|
+
sh "#{'sudo ' unless windows}gem install --local #{gem}"
|
127
|
+
end
|
data/adhearsion.gemspec
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
ADHEARSION_FILES = %w{
|
2
|
-
README.markdown
|
3
2
|
adhearsion.gemspec
|
4
3
|
app_generators/ahn/ahn_generator.rb
|
5
4
|
app_generators/ahn/templates/.ahnrc
|
@@ -113,7 +112,7 @@ ADHEARSION_FILES = %w{
|
|
113
112
|
|
114
113
|
Gem::Specification.new do |s|
|
115
114
|
s.name = "adhearsion"
|
116
|
-
s.version = "0.8.
|
115
|
+
s.version = "0.8.2"
|
117
116
|
|
118
117
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
119
118
|
s.authors = ["Jay Phillips"]
|
@@ -6,7 +6,6 @@ SANDBOX_VERSION = 1.0
|
|
6
6
|
initialization do
|
7
7
|
# We shouldn't start initializing until after the AGI server has initialized.
|
8
8
|
Events.register_callback(:after_initialized) do
|
9
|
-
ahn_log.sandbox "Fetching sandbox connection information"
|
10
9
|
|
11
10
|
config = if COMPONENTS.sandbox.has_key? "connect_to"
|
12
11
|
{"connect_to" => COMPONENTS.sandbox["connect_to"]}
|
@@ -30,8 +29,6 @@ initialization do
|
|
30
29
|
|
31
30
|
host, port = config.values_at "host", "port"
|
32
31
|
|
33
|
-
ahn_log.sandbox "Connecting to #{host}:#{port}"
|
34
|
-
|
35
32
|
username, password = COMPONENTS.sandbox["username"], COMPONENTS.sandbox["password"]
|
36
33
|
|
37
34
|
if username.blank? || password.blank? || username == "user123"
|
@@ -55,8 +52,6 @@ initialization do
|
|
55
52
|
socket.puts identifying_hash
|
56
53
|
response = socket.gets
|
57
54
|
unless response
|
58
|
-
ahn_log.sandbox "Communication with the sandbox ended before receiving any response. Trying again in 10 seconds."
|
59
|
-
sleep 10
|
60
55
|
next
|
61
56
|
end
|
62
57
|
response.chomp!
|
@@ -75,7 +70,7 @@ initialization do
|
|
75
70
|
rescue => e
|
76
71
|
ahn_log.error "Non-fatal exception in the AGI server: #{e.inspect} \n" + e.backtrace.join("\n")
|
77
72
|
ensure
|
78
|
-
socket.close
|
73
|
+
socket.close rescue nil
|
79
74
|
end
|
80
75
|
ahn_log.sandbox "AGI server finished serving call. Reconnecting to sandbox."
|
81
76
|
else
|
@@ -128,15 +128,15 @@ module Adhearsion
|
|
128
128
|
switch_to_root_directory
|
129
129
|
catch_termination_signal
|
130
130
|
bootstrap_rc
|
131
|
-
daemonize! if should_daemonize?
|
132
131
|
initialize_log_file
|
133
132
|
load_all_init_files
|
134
133
|
init_components_subsystem
|
135
134
|
init_modules
|
136
135
|
init_events_subsystem
|
137
|
-
create_pid_file if pid_file
|
138
136
|
load_components
|
139
137
|
init_events_file
|
138
|
+
daemonize! if should_daemonize?
|
139
|
+
create_pid_file if pid_file
|
140
140
|
|
141
141
|
ahn_log "Adhearsion initialized!"
|
142
142
|
|
@@ -11,7 +11,8 @@ module Adhearsion
|
|
11
11
|
require_dependencies
|
12
12
|
require_models
|
13
13
|
@@config = Adhearsion::AHN_CONFIG.database
|
14
|
-
|
14
|
+
# You may need to uncomment the following line for older versions of ActiveRecord
|
15
|
+
# ActiveRecord::Base.allow_concurrency = true
|
15
16
|
establish_connection
|
16
17
|
create_call_hook_for_connection_cleanup
|
17
18
|
end
|
@@ -17,7 +17,8 @@ module Adhearsion
|
|
17
17
|
"It's not a directory!" unless File.directory?(rails_root)
|
18
18
|
load_rails
|
19
19
|
if defined? ActiveRecord
|
20
|
-
|
20
|
+
# You may need to uncomment the following line for older versions of ActiveRecord
|
21
|
+
# ActiveRecord::Base.allow_concurrency = true
|
21
22
|
Events.register_callback([:asterisk, :before_call]) do
|
22
23
|
ActiveRecord::Base.verify_active_connections!
|
23
24
|
end
|
data/lib/adhearsion/version.rb
CHANGED
@@ -2,8 +2,8 @@ module Adhearsion #:nodoc:
|
|
2
2
|
module VERSION #:nodoc:
|
3
3
|
MAJOR = 0 unless defined? MAJOR
|
4
4
|
MINOR = 8 unless defined? MINOR
|
5
|
-
TINY =
|
5
|
+
TINY = 2 unless defined? TINY
|
6
6
|
|
7
7
|
STRING = [MAJOR, MINOR, TINY].join('.') unless defined? STRING
|
8
8
|
end
|
9
|
-
end
|
9
|
+
end
|
@@ -21,6 +21,9 @@ module Adhearsion
|
|
21
21
|
# This is what happens 99.9% of the time.
|
22
22
|
|
23
23
|
DialPlan::Manager.handle call
|
24
|
+
rescue Hangup
|
25
|
+
ahn_log.agi "HANGUP event for call with uniqueid #{call.variables[:uniqueid].inspect} and channel #{call.variables[:channel].inspect}"
|
26
|
+
call.hangup!
|
24
27
|
rescue DialPlan::Manager::NoContextError => e
|
25
28
|
ahn_log.agi e.message
|
26
29
|
call.hangup!
|
@@ -34,8 +37,8 @@ module Adhearsion
|
|
34
37
|
end
|
35
38
|
rescue HungupExtensionCallException => hungup_call
|
36
39
|
begin
|
37
|
-
ahn_log.agi "Received \"h\" meta-call. Executing /asterisk/
|
38
|
-
Events.trigger [:asterisk, :
|
40
|
+
ahn_log.agi "Received \"h\" meta-call. Executing /asterisk/hungup_call event callbacks."
|
41
|
+
Events.trigger [:asterisk, :hungup_call], hungup_call.call
|
39
42
|
call.hangup!
|
40
43
|
rescue => e
|
41
44
|
ahn_log.agi.error e
|
@@ -78,4 +81,4 @@ module Adhearsion
|
|
78
81
|
end
|
79
82
|
end
|
80
83
|
end
|
81
|
-
end
|
84
|
+
end
|
@@ -48,6 +48,7 @@ module Adhearsion
|
|
48
48
|
|
49
49
|
def read
|
50
50
|
returning from_pbx.gets do |message|
|
51
|
+
raise Hangup if message.nil?
|
51
52
|
ahn_log.agi.debug "<<< #{message}"
|
52
53
|
end
|
53
54
|
end
|
@@ -891,7 +892,7 @@ module Adhearsion
|
|
891
892
|
|
892
893
|
def validate_digits(digits)
|
893
894
|
returning digits.to_s do |digits_as_string|
|
894
|
-
raise ArgumentError, "Can only be called with valid digits!" unless digits_as_string =~
|
895
|
+
raise ArgumentError, "Can only be called with valid digits!" unless digits_as_string =~ /^[0-9*#-]+$/
|
895
896
|
end
|
896
897
|
end
|
897
898
|
|
data/lib/adhearsion/voip/call.rb
CHANGED
data/lib/theatre/invocation.rb
CHANGED
@@ -32,7 +32,7 @@ module Theatre
|
|
32
32
|
@returned_value_lock = Monitor.new
|
33
33
|
|
34
34
|
# Used when wait() is called to notify all waiting threads by using a ConditionVariable
|
35
|
-
@returned_value_blocker = Monitor::ConditionVariable.new @returned_value_lock
|
35
|
+
@returned_value_blocker = @returned_value_lock.new_cond#Monitor::ConditionVariable.new @returned_value_lock
|
36
36
|
end
|
37
37
|
|
38
38
|
def queued
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adhearsion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jay Phillips
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-08-21 00:00:00 -
|
12
|
+
date: 2008-08-21 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -43,7 +43,6 @@ extensions: []
|
|
43
43
|
extra_rdoc_files: []
|
44
44
|
|
45
45
|
files:
|
46
|
-
- README.markdown
|
47
46
|
- adhearsion.gemspec
|
48
47
|
- app_generators/ahn/ahn_generator.rb
|
49
48
|
- app_generators/ahn/templates/.ahnrc
|
data/README.markdown
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
Adhearsion
|
2
|
-
==========
|
3
|
-
|
4
|
-
Adhearsion is an open-source voice application development framework. Adhearsion users write applications atop the framework with Ruby and **call into their code**.
|
5
|
-
|
6
|
-
Adhearsion rests above a lower-level telephony platform, namely [Asterisk](http://asterisk.org), though there are experimental bindings for both [FreeSWITCH](http://freeswitch.org) and [Yate](http://yate.null.ro/pmwiki).
|
7
|
-
|
8
|
-
Adhearsion has...
|
9
|
-
|
10
|
-
* An elegant dialplan system for writing the code which controls a live phone call
|
11
|
-
* A sophisticated Asterisk Manager Interface library with a lexer written in [Ragel](http://www.complang.org/ragel).
|
12
|
-
* An events subsystem which maintains a Thread-pool for executing your namespaced callbacks. (supports AMI events too!)
|
13
|
-
* A very useful component architecture with which you may write Adhearsion plugins and share them with the world.
|
14
|
-
* JRuby compatibility for running atop the Java Virtual Machine and using virtually any Java library.
|
15
|
-
* Good regression test coverage
|
16
|
-
|
17
|
-
Use the public Adhearsion sandbox!
|
18
|
-
==================================
|
19
|
-
|
20
|
-
Don't want to screw with setting up a telephony system? You can test your Adhearsion applications using our public sandbox!
|
21
|
-
|
22
|
-
Visit [http://adhearsion.com/getting_started](http://adhearsion.com/getting_started) for more information!
|
23
|
-
|
24
|
-
Yes, in minutes you can be controlling your cell phone for free! :)
|
25
|
-
|
26
|
-
Documentation
|
27
|
-
=============
|
28
|
-
|
29
|
-
Visit [Adhearsion's website](http://adhearsion.com) for more information about the framework or visit the [wiki](http://docs.adhearsion.com) for documentation on how to use it.
|
30
|
-
|
31
|
-
If you're having trouble, you may want to try asking your question on the IRC channel, [mailing list](http://groups.google.com/group/adhearsion) or, if you've found a bug, report it on the [bug tracker](http://adhearsion.lighthouseapp.com/projects/5871-adhearsion/overview).
|