jicksta-adhearsion 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +11 -0
- data/Rakefile +7 -0
- data/adhearsion.gemspec +1 -1
- data/lib/adhearsion/initializer.rb +2 -2
- data/lib/adhearsion/version.rb +1 -1
- data/lib/adhearsion/voip/asterisk/commands.rb +20 -2
- data/lib/adhearsion/voip/asterisk/manager_interface.rb +33 -0
- data/lib/theatre/invocation.rb +1 -1
- metadata +3 -1
data/CHANGELOG
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
0.8.3
|
2
|
+
|
3
|
+
0.8.2
|
4
|
+
- When a call hangs up, Adhearsion will no longer show random exceptions (that were okay) and instead allows the user to rescue a Hangup exception.
|
5
|
+
- ManagerInterfaceResponse now include()s DRbUndumped, allowing send_action() to be called directly over DRb.
|
6
|
+
- Fixes an inconsequential bug when CTL-C'ing Adhearsion.
|
7
|
+
|
8
|
+
0.8.1
|
9
|
+
- The sandbox component now comes
|
10
|
+
- Minor bug fixes
|
11
|
+
|
1
12
|
0.8.0 rev 2
|
2
13
|
- Added a few non-critical files to the .gemspec. They were ignored
|
3
14
|
|
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
@@ -112,7 +112,7 @@ ADHEARSION_FILES = %w{
|
|
112
112
|
|
113
113
|
Gem::Specification.new do |s|
|
114
114
|
s.name = "adhearsion"
|
115
|
-
s.version = "0.8.
|
115
|
+
s.version = "0.8.3"
|
116
116
|
|
117
117
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
118
118
|
s.authors = ["Jay Phillips"]
|
@@ -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
|
|
data/lib/adhearsion/version.rb
CHANGED
@@ -161,12 +161,13 @@ module Adhearsion
|
|
161
161
|
execute "SendDTMF", digits.to_s
|
162
162
|
end
|
163
163
|
|
164
|
+
# The with_next_message method...
|
164
165
|
def with_next_message(&block)
|
165
166
|
raise LocalJumpError, "Must supply a block" unless block_given?
|
166
167
|
block.call(next_message)
|
167
168
|
end
|
168
169
|
|
169
|
-
# This command
|
170
|
+
# This command should be used to advance to the next message in the Asterisk Comedian Voicemail application
|
170
171
|
def next_message
|
171
172
|
@call.inbox.pop
|
172
173
|
end
|
@@ -438,6 +439,9 @@ module Adhearsion
|
|
438
439
|
raise Adhearsion::VoIP::DSL::Dialplan::ControlPassingException.new(context)
|
439
440
|
end
|
440
441
|
|
442
|
+
# The queue method puts a call into a call queue to be answered by an agent registered with that queue.
|
443
|
+
# A full description may be found here: http://www.voip-info.org/wiki-Asterisk+cmd+Queue
|
444
|
+
# The queue method takes a queue_name as an argument to place the caller in the appropriate queue.
|
441
445
|
def queue(queue_name)
|
442
446
|
queue_name = queue_name.to_s
|
443
447
|
|
@@ -558,6 +562,9 @@ module Adhearsion
|
|
558
562
|
raw_response("SET VARIABLE %s %p" % [variable_name.to_s, value.to_s]) == "200 result=1"
|
559
563
|
end
|
560
564
|
|
565
|
+
# The variable method allows you to either set or get a channel variable from Asterisk
|
566
|
+
# The method takes a hash key/value pair if you would like to set a variable
|
567
|
+
# Or a single string with the variable to get from Asterisk
|
561
568
|
def variable(*args)
|
562
569
|
if args.last.kind_of? Hash
|
563
570
|
assignments = args.pop
|
@@ -574,6 +581,11 @@ module Adhearsion
|
|
574
581
|
end
|
575
582
|
end
|
576
583
|
|
584
|
+
# Use the voicemail method to send a caller to a voicemail box to leave a message.
|
585
|
+
# A complete description is avilable at:
|
586
|
+
# http://www.voip-info.org/tiki-index.php?page=Asterisk+cmd+VoiceMail
|
587
|
+
# The method takes the mailbox_number of the user to leave a message for and a
|
588
|
+
# greeting_option that will determine which message gets played to the caller.
|
577
589
|
def voicemail(*args)
|
578
590
|
options_hash = args.last.kind_of?(Hash) ? args.pop : {}
|
579
591
|
mailbox_number = args.shift
|
@@ -606,6 +618,9 @@ module Adhearsion
|
|
606
618
|
end
|
607
619
|
end
|
608
620
|
|
621
|
+
# The voicemail_main method puts a caller into the voicemail system to fetch their voicemail
|
622
|
+
# or set options for their voicemail box. A full description may be found here:
|
623
|
+
# http://www.voip-info.org/wiki-Asterisk+cmd+VoiceMailMain
|
609
624
|
def voicemail_main(options={})
|
610
625
|
mailbox, context, folder = options.values_at :mailbox, :context, :folder
|
611
626
|
authenticate = options.has_key?(:authenticate) ? options[:authenticate] : true
|
@@ -730,6 +745,7 @@ module Adhearsion
|
|
730
745
|
|
731
746
|
protected
|
732
747
|
|
748
|
+
# wait_for_digits waits for the input of digits based on the number of milliseconds
|
733
749
|
def wait_for_digit(timeout=-1)
|
734
750
|
timeout *= 1_000 if timeout != -1
|
735
751
|
result = result_digit_from raw_response("WAIT FOR DIGIT #{timeout.to_i}")
|
@@ -744,12 +760,14 @@ module Adhearsion
|
|
744
760
|
nil
|
745
761
|
end
|
746
762
|
|
763
|
+
# set_callier_id_number method allows setting of the callerid number of the call
|
747
764
|
def set_caller_id_number(caller_id)
|
748
765
|
return unless caller_id
|
749
766
|
raise ArgumentError, "Caller ID must be numerical" if caller_id.to_s !~ /^\d+$/
|
750
767
|
raw_response %(SET CALLERID %p) % caller_id
|
751
768
|
end
|
752
769
|
|
770
|
+
# set_caller_id_name method allows the setting of the callerid name of the call
|
753
771
|
def set_caller_id_name(caller_id_name)
|
754
772
|
return unless caller_id_name
|
755
773
|
variable "CALLERID(name)" => caller_id_name
|
@@ -891,7 +909,7 @@ module Adhearsion
|
|
891
909
|
|
892
910
|
def validate_digits(digits)
|
893
911
|
returning digits.to_s do |digits_as_string|
|
894
|
-
raise ArgumentError, "Can only be called with valid digits!" unless digits_as_string =~
|
912
|
+
raise ArgumentError, "Can only be called with valid digits!" unless digits_as_string =~ /^[0-9*#-]+$/
|
895
913
|
end
|
896
914
|
end
|
897
915
|
|
@@ -298,6 +298,8 @@ module Adhearsion
|
|
298
298
|
########### ###########
|
299
299
|
####### #######
|
300
300
|
|
301
|
+
# ping sends an action to the Asterisk Manager Interface that returns a pong
|
302
|
+
# more details here: http://www.voip-info.org/wiki/index.php?page=Asterisk+Manager+API+Action+Ping
|
301
303
|
def ping
|
302
304
|
deprecation_warning
|
303
305
|
send_action "Ping"
|
@@ -310,6 +312,29 @@ module Adhearsion
|
|
310
312
|
" See http://docs.adhearsion.com/AMI for more information."
|
311
313
|
end
|
312
314
|
|
315
|
+
# The originate method launches a call to Asterisk, full details here:
|
316
|
+
# http://www.voip-info.org/tiki-index.php?page=Asterisk+Manager+API+Action+Originate
|
317
|
+
# Takes these arguments as a hash:
|
318
|
+
#
|
319
|
+
# Channel: Channel on which to originate the call (The same as you specify in the Dial application command)
|
320
|
+
# Context: Context to use on connect (must use Exten & Priority with it)
|
321
|
+
# Exten: Extension to use on connect (must use Context & Priority with it)
|
322
|
+
# Priority: Priority to use on connect (must use Context & Exten with it)
|
323
|
+
# Timeout: Timeout (in milliseconds) for the originating connection to happen(defaults to 30000 milliseconds)
|
324
|
+
# CallerID: CallerID to use for the call
|
325
|
+
# Variable: Channels variables to set (max 32). Variables will be set for both channels (local and connected).
|
326
|
+
# Account: Account code for the call
|
327
|
+
# Application: Application to use on connect (use Data for parameters)
|
328
|
+
# Data : Data if Application parameter is used
|
329
|
+
# Async: For the origination to be asynchronous (allows multiple calls to be generated without waiting for a response)
|
330
|
+
# ActionID: The request identifier. It allows you to identify the response to this request.
|
331
|
+
# You may use a number or a string. Useful when you make several simultaneous requests.
|
332
|
+
#
|
333
|
+
# For example:
|
334
|
+
# originate { :channel => 'SIP/1000@sipnetworks.com',
|
335
|
+
# :context => 'my_context',
|
336
|
+
# :exten => 's',
|
337
|
+
# :priority => '1' }
|
313
338
|
def originate(options={})
|
314
339
|
deprecation_warning
|
315
340
|
options = options.clone
|
@@ -335,11 +360,15 @@ module Adhearsion
|
|
335
360
|
call_and_exec caller, "Dial", :args => dial_args, :caller_id => opts[:caller_id]
|
336
361
|
end
|
337
362
|
|
363
|
+
# hangup terminates a call accepts a channel as the argument
|
364
|
+
# full details here: http://www.voip-info.org/wiki/index.php?page=Asterisk+Manager+API+Action+Hangup
|
338
365
|
def hangup(channel)
|
339
366
|
deprecation_warning
|
340
367
|
send_action "Hangup", :channel => channel
|
341
368
|
end
|
342
369
|
|
370
|
+
# call_and_exec allows you to make a call to a channel and then execute an Astersik application
|
371
|
+
# on that call
|
343
372
|
def call_and_exec(channel, app, opts={})
|
344
373
|
deprecation_warning
|
345
374
|
args = { :channel => channel, :application => app }
|
@@ -348,6 +377,10 @@ module Adhearsion
|
|
348
377
|
originate args
|
349
378
|
end
|
350
379
|
|
380
|
+
# call_into_context is syntactic sugar for the Asterisk originate command that allows you to
|
381
|
+
# lanuch a call into a particular context. For example:
|
382
|
+
#
|
383
|
+
# call_into_context('SIP/1000@sipnetworks.com', 'my_context', { :variables => { :session_guid => new_guid }})
|
351
384
|
def call_into_context(channel, context, options={})
|
352
385
|
deprecation_warning
|
353
386
|
args = {:channel => channel, :context => context}
|
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: jicksta-adhearsion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jay Phillips
|
@@ -14,6 +14,7 @@ default_executable:
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rubigen
|
17
|
+
type: :runtime
|
17
18
|
version_requirement:
|
18
19
|
version_requirements: !ruby/object:Gem::Requirement
|
19
20
|
requirements:
|
@@ -23,6 +24,7 @@ dependencies:
|
|
23
24
|
version:
|
24
25
|
- !ruby/object:Gem::Dependency
|
25
26
|
name: log4r
|
27
|
+
type: :runtime
|
26
28
|
version_requirement:
|
27
29
|
version_requirements: !ruby/object:Gem::Requirement
|
28
30
|
requirements:
|