lib/adhearsion/voip/asterisk/config_generators/queues.conf.rb in adhearsion-0.8.3 vs lib/adhearsion/voip/asterisk/config_generators/queues.conf.rb in adhearsion-0.8.4
- old
+ new
@@ -2,11 +2,11 @@
module Adhearsion
module VoIP
module Asterisk
module ConfigFileGenerators
-
+
# This will generate a queues.conf file. If there is no documentation on what a method
# actually does, take a look at the documentation for its original key/value pair in
# an unedited queues.conf file. WARNING! Don't get too embedded with these method names.
# I'm still not satisfied. These settings will be greatly abstracted eventually.
class Queues < AsteriskConfigGenerator
@@ -20,11 +20,11 @@
@general_section = DEFAULT_GENERAL_SECTION.clone
@properties = {}
@queue_definitions = []
super
end
-
+
def queue(name)
new_queue = QueueDefinition.new name
yield new_queue if block_given?
queue_definitions << new_queue
new_queue
@@ -34,32 +34,32 @@
AsteriskConfigGenerator.warning_message +
general_section.inject("[general]") { |section,(key,value)| section + "\n#{key}=#{value}" } + "\n\n" +
queue_definitions.map(&:to_s).join("\n\n")
end
alias conf to_s
-
+
def persistent_members(yes_no)
boolean :persistentmembers => yes_no, :with => general_section
end
-
+
def monitor_type(symbol)
criteria = {:monitor => "Monitor", :mix_monitor => "MixMonitor"}
one_of_and_translate criteria, 'monitor-type' => symbol, :with => general_section
end
-
-
+
+
class QueueDefinition < AsteriskConfigGenerator
DEFAULT_QUEUE_PROPERTIES = {
:autofill => 'yes',
:eventwhencalled => 'vars',
:eventmemberstatus => 'yes',
:setinterfacevar => 'yes'
}
SUPPORTED_RING_STRATEGIES = [:ringall, :roundrobin, :leastrecent, :fewestcalls, :random, :rrmemory]
-
+
DEFAULT_SOUND_FILES = {
'queue-youarenext' => 'queue-youarenext',
'queue-thereare' => 'queue-thereare',
'queue-callswaiting' => 'queue-callswaiting',
'queue-holdtime' => 'queue-holdtime',
@@ -89,11 +89,11 @@
@name = name
@members = []
@properties = DEFAULT_QUEUE_PROPERTIES.clone
@sound_files = DEFAULT_SOUND_FILES.clone
end
-
+
def to_s
"[#{name}]\n" +
properties.merge(@sound_files).map { |key, value| "#{key}=#{value}" }.sort.join("\n") + "\n\n" +
members.map { |member| "member => #{member}" }.join("\n")
end
@@ -142,11 +142,11 @@
# Ex: wrapup_time 1.minute
def wrapup_time(seconds)
int :wrapuptime => seconds
end
-
+
def autopause(yes_no)
boolean :autopause => yes_no
end
def maximum_length(number)
@@ -157,11 +157,11 @@
int "announce-frequency" => seconds
end
def periodically_announce(sound_file, options={})
frequency = options.delete(:every) || 1.minute
-
+
string 'periodic-announce' => sound_file
int 'periodic-announce-frequency' => frequency
end
def announce_hold_time(seconds)
@@ -173,44 +173,44 @@
end
def monitor_format(symbol)
one_of [:wav, :gsm, :wav49], 'monitor-format' => symbol
end
-
+
def monitor_type(symbol)
criteria = {:monitor => "Monitor", :mix_monitor => "MixMonitor"}
one_of_and_translate criteria, 'monitor-type' => symbol
end
# Ex: join_empty true
# Ex: join_empty :strict
def join_empty(yes_no_or_strict)
one_of [true, false, :strict], :joinempty => yes_no_or_strict
end
-
+
def leave_when_empty(yes_no)
boolean :leavewhenempty => yes_no
end
def report_hold_time(yes_no)
boolean :reportholdtime => yes_no
end
-
+
def ring_in_use(yes_no)
boolean :ringinuse => yes_no
end
# Number of seconds to wait when an agent is to be bridged with
# a caller. Normally you'd want this to be zero.
def delay_connection_by(seconds)
int :memberdelay => seconds
end
-
+
def timeout_restart(yes_no)
boolean :timeoutrestart => yes_no
end
-
+
# Give a Hash argument here to override the default sound files for this queue.
#
# Usage:
#
# queue.sound_files :you_are_next => 'queue-youarenext',
@@ -234,10 +234,10 @@
raise ArgumentError, message
end
@sound_files[SOUND_FILE_SYMBOL_INTERPRETATIONS[key]] = value
end
end
-
+
def member(driver)
members << (driver.kind_of?(String) && driver =~ %r'/' ? driver : "Agent/#{driver}")
end
end