Class: Adhearsion::VoIP::Asterisk::Commands::QueueProxy
- Defined in:
- lib/adhearsion/voip/asterisk/commands.rb
Defined Under Namespace
Classes: AgentProxy, QueueAgentsListProxy, QueueDoesNotExistError
Instance Attribute Summary collapse
-
#environment ⇒ Object
readonly
Returns the value of attribute environment.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
-
#agents(options = {}) ⇒ QueueAgentsListProxy
Get the agents associated with a queue.
-
#any? ⇒ Boolean
Check whether any calls are waiting in the queue.
-
#empty? ⇒ Boolean
Check whether the waiting count is zero.
-
#exists? ⇒ Boolean
Check whether a queue exists/is defined in Asterisk.
-
#initialize(name, environment) ⇒ QueueProxy
constructor
A new instance of QueueProxy.
-
#join!(options = {}) ⇒ Object
Makes the current channel join the queue.
-
#waiting_count ⇒ Integer
Check how many channels are waiting in the queue.
Constructor Details
#initialize(name, environment) ⇒ QueueProxy
Returns a new instance of QueueProxy.
1106 1107 1108 |
# File 'lib/adhearsion/voip/asterisk/commands.rb', line 1106 def initialize(name, environment) @name, @environment = name, environment end |
Instance Attribute Details
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
1105 1106 1107 |
# File 'lib/adhearsion/voip/asterisk/commands.rb', line 1105 def environment @environment end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
1105 1106 1107 |
# File 'lib/adhearsion/voip/asterisk/commands.rb', line 1105 def name @name end |
Class Method Details
.format_join_hash_key_arguments(options) ⇒ Object
1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 |
# File 'lib/adhearsion/voip/asterisk/commands.rb', line 1058 def format_join_hash_key_arguments() bad_argument = lambda do |(key, value)| raise ArgumentError, "Unrecognize value for #{key.inspect} -- #{value.inspect}" end # Direct Queue() arguments: timeout = .delete :timeout announcement = .delete :announce # Terse single-character options ring_style = .delete :play allow_hangup = .delete :allow_hangup allow_transfer = .delete :allow_transfer raise ArgumentError, "Unrecognized args to join!: #{.inspect}" if .any? ring_style = case ring_style when :ringing then 'r' when :music then '' when nil else bad_argument[:play => ring_style] end.to_s allow_hangup = case allow_hangup when :caller then 'H' when :agent then 'h' when :everyone then 'Hh' when nil else bad_argument[:allow_hangup => allow_hangup] end.to_s allow_transfer = case allow_transfer when :caller then 'T' when :agent then 't' when :everyone then 'Tt' when nil else bad_argument[:allow_transfer => allow_transfer] end.to_s = ring_style + allow_transfer + allow_hangup [, '', announcement, timeout].map(&:to_s) end |
Instance Method Details
#agents(options = {}) ⇒ QueueAgentsListProxy
Get the agents associated with a queue
1151 1152 1153 1154 1155 1156 1157 1158 1159 |
# File 'lib/adhearsion/voip/asterisk/commands.rb', line 1151 def agents(={}) cached = .has_key?(:cache) ? .delete(:cache) : true raise ArgumentError, "Unrecognized arguments to agents(): #{.inspect}" if .keys.any? if cached @cached_proxy ||= QueueAgentsListProxy.new(self, true) else @uncached_proxy ||= QueueAgentsListProxy.new(self, false) end end |
#any? ⇒ Boolean
Check whether any calls are waiting in the queue
1177 1178 1179 |
# File 'lib/adhearsion/voip/asterisk/commands.rb', line 1177 def any? waiting_count > 0 end |
#empty? ⇒ Boolean
Check whether the waiting count is zero
1171 1172 1173 |
# File 'lib/adhearsion/voip/asterisk/commands.rb', line 1171 def empty? waiting_count == 0 end |
#exists? ⇒ Boolean
Check whether a queue exists/is defined in Asterisk
1183 1184 1185 1186 |
# File 'lib/adhearsion/voip/asterisk/commands.rb', line 1183 def exists? environment.execute('RemoveQueueMember', name, 'SIP/AdhearsionQueueExistenceCheck') environment.variable("RQMSTATUS") != 'NOSUCHQUEUE' end |
#join!(options = {}) ⇒ Object
Makes the current channel join the queue.
@example
queue('sales').join!
@example
queue('sales').join! :timeout => 1.minute
@example
queue('sales').join! :play => :music
@example
queue('sales').join! :play => :ringing
@example
queue('sales').join! :announce => "custom/special-queue-announcement"
@example
queue('sales').join! :allow_transfer => :caller
@example
queue('sales').join! :allow_transfer => :agent
@example
queue('sales').join! :allow_hangup => :caller
@example
queue('sales').join! :allow_hangup => :agent
@example
queue('sales').join! :allow_hangup => :everyone
@example
queue('sales').join! :allow_transfer => :agent, :timeout => 30.seconds,
1142 1143 1144 1145 |
# File 'lib/adhearsion/voip/asterisk/commands.rb', line 1142 def join!(={}) environment.execute("queue", name, *self.class.format_join_hash_key_arguments()) normalize_queue_status_variable environment.variable("QUEUESTATUS") end |
#waiting_count ⇒ Integer
Check how many channels are waiting in the queue
1164 1165 1166 1167 |
# File 'lib/adhearsion/voip/asterisk/commands.rb', line 1164 def waiting_count raise QueueDoesNotExistError.new(name) unless exists? environment.variable("QUEUE_WAITING_COUNT(#{name})").to_i end |