queri 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -0
- data/lib/queri/aggregate_report_helpers.rb +5 -7
- data/lib/queri/composite_agent_level_report_helpers.rb +6 -10
- data/lib/queri/composite_report_helpers.rb +4 -6
- data/lib/queri/stats/agents_and_sessions/agent_availability.rb +1 -1
- data/lib/queri/stats/answered_calls/agents_on_queue.rb +1 -1
- data/lib/queri/stats/answered_calls/all_calls.rb +1 -1
- data/lib/queri/stats/answered_calls/answered_calls_by_direction.rb +1 -1
- data/lib/queri/stats/answered_calls/answered_calls_by_queue.rb +1 -1
- data/lib/queri/stats/answered_calls/answered_calls_by_stints.rb +1 -1
- data/lib/queri/stats/answered_calls/calls_fully_within_the_given_time_interval.rb +1 -2
- data/lib/queri/stats/answered_calls/disconnection_causes.rb +1 -1
- data/lib/queri/stats/answered_calls/dnis_used.rb +1 -1
- data/lib/queri/stats/answered_calls/ivr_selection.rb +1 -1
- data/lib/queri/stats/answered_calls/music_on_hold_by_agent.rb +1 -1
- data/lib/queri/stats/answered_calls/queue_position.rb +1 -1
- data/lib/queri/stats/answered_calls/service_level_agreement.rb +1 -1
- data/lib/queri/stats/answered_calls/transfers.rb +1 -1
- data/lib/queri/stats/details_of_agent_sessions_and_pauses/detail_of_agent_pauses.rb +1 -1
- data/lib/queri/stats/details_of_agent_sessions_and_pauses/detail_of_agent_sessions.rb +1 -1
- data/lib/queri/stats/details_of_answered_calls/queue_details.rb +1 -1
- data/lib/queri/stats/details_of_unanswered_calls/detail_of_unanswered_calls.rb +1 -1
- data/lib/queri/stats/distributions/acd_attempts_by_queue.rb +27 -0
- data/lib/queri/stats/distributions/acd_attempts_by_terminal.rb +27 -0
- data/lib/queri/stats/distributions/inbound_acd_call_attempts.rb +31 -0
- data/lib/queri/stats/distributions.rb +11 -0
- data/lib/queri/stats/unanswered_calls/all_calls.rb +1 -1
- data/lib/queri/stats/unanswered_calls/all_calls_by_stints.rb +1 -1
- data/lib/queri/stats/unanswered_calls/call_overview.rb +1 -1
- data/lib/queri/stats/unanswered_calls/calls_fully_within_the_given_time_interval.rb +1 -1
- data/lib/queri/stats/unanswered_calls/disconnection_causes.rb +1 -1
- data/lib/queri/stats/unanswered_calls/dnis_used.rb +1 -1
- data/lib/queri/stats/unanswered_calls/dnis_used_for_all_calls.rb +1 -1
- data/lib/queri/stats/unanswered_calls/enter_queue_position.rb +1 -1
- data/lib/queri/stats/unanswered_calls/enter_queue_position_for_all_calls.rb +1 -1
- data/lib/queri/stats/unanswered_calls/inclusive_answered_service_level_agreement.rb +1 -1
- data/lib/queri/stats/unanswered_calls/inclusive_service_level_agreement.rb +1 -1
- data/lib/queri/stats/unanswered_calls/ivr_selection.rb +1 -1
- data/lib/queri/stats/unanswered_calls/ivr_selection_for_all_calls.rb +1 -1
- data/lib/queri/stats/unanswered_calls/unanswered_calls_by_key_press.rb +1 -1
- data/lib/queri/stats/unanswered_calls/unanswered_calls_by_queue.rb +1 -1
- data/lib/queri/stats/unanswered_calls/unanswered_calls_by_stints.rb +1 -1
- data/lib/queri/stats/unanswered_calls/unanswered_calls_distribution_by_length.rb +1 -1
- data/lib/queri/stats/unanswered_calls/unanswered_outbound_calls_by_agent.rb +1 -1
- data/lib/queri/version.rb +1 -1
- data/lib/queri.rb +1 -0
- data/queri.gemspec +2 -0
- data/spec/stats/distributions/acd_attempts_by_queue_spec.rb +20 -0
- data/spec/stats/distributions/acd_attempts_by_terminal_spec.rb +20 -0
- data/spec/stats/distributions/distributions_spec.rb +7 -0
- data/spec/stats/distributions/inbound_acd_call_attempts_spec.rb +20 -0
- metadata +27 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb616a6c90427ff7c15dc01e4561c0f818ba5864
|
4
|
+
data.tar.gz: b48087e47fbfc68cd0099c8185af258dd98b2e66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e18faa24b9b4b53c497bfb99649695cc3239820cfcae3bc827fb327a7df1c93d9a60ba5ed8ec17d2cddb4b9edf94c05c9c592752aae1d405bda2f62b10ea3f57
|
7
|
+
data.tar.gz: 808db2b1aa8d157c03fc6bd8298ef2cca3bf8a76f6a06fbc02af71f966a47cf155a00a5e63924ff4ede0f834d45ad1c5e15c07618c3ab4d274f0715bd0ca87d9
|
data/README.md
CHANGED
@@ -70,6 +70,10 @@ Currently returns analyses from two methods: QM.stats and QM.realtime.
|
|
70
70
|
* QueueDetails
|
71
71
|
* DetailsOfUnansweredCalls
|
72
72
|
* DetailOfUnansweredCalls
|
73
|
+
* Distributions
|
74
|
+
* AcdAttemptsByQueue
|
75
|
+
* AcdAttemptsByTerminal
|
76
|
+
* InboundAcdCallAttempts
|
73
77
|
* UnansweredCalls
|
74
78
|
* AllCalls
|
75
79
|
* AllCallsByStints
|
@@ -138,6 +142,8 @@ Composite aggregate reports return an Array of Hashes, each Hash corresponding t
|
|
138
142
|
* UnansweredCalls
|
139
143
|
* AllCalls
|
140
144
|
* CallsFullyWithinTheGivenTimeInterval
|
145
|
+
* Distributions
|
146
|
+
* InboundAcdCallAttempts
|
141
147
|
* Composite aggregate reports
|
142
148
|
* Stats
|
143
149
|
* AnsweredCalls
|
@@ -150,6 +156,9 @@ Composite aggregate reports return an Array of Hashes, each Hash corresponding t
|
|
150
156
|
* QueuePosition
|
151
157
|
* ServiceLevelAgreement
|
152
158
|
* Transfers
|
159
|
+
* Distributions
|
160
|
+
* AcdAttemptsByQueue
|
161
|
+
* AcdAttemptsByTerminal
|
153
162
|
* UnansweredCalls
|
154
163
|
* AllCallsByStints
|
155
164
|
* CallOverview
|
@@ -3,13 +3,11 @@ module AggregateReportHelpers
|
|
3
3
|
|
4
4
|
def parse_response
|
5
5
|
r = Queri.send_request(@queues, self, @period_start, @period_end)
|
6
|
-
|
7
|
-
r.each_with_index do |metric,i|
|
8
|
-
if i > 0
|
9
|
-
metric[0] = xml_keys_to_human_readable_keys[ metric[0] ]
|
10
|
-
end
|
11
|
-
end
|
6
|
+
pairs = self.class.key_translations.each_pair
|
12
7
|
r.shift
|
13
|
-
|
8
|
+
new_metrics = r.map do |metric|
|
9
|
+
[pairs.next[0], metric[1]]
|
10
|
+
end
|
11
|
+
Hash[*new_metrics.flatten]
|
14
12
|
end
|
15
13
|
end
|
@@ -3,17 +3,13 @@ module CompositeAgentLevelReportHelpers
|
|
3
3
|
|
4
4
|
def parse_response
|
5
5
|
r = Queri.send_request(@queues, self, @period_start, @period_end)
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
new_keys = self.class.keys
|
7
|
+
r.shift
|
8
|
+
new_metrics = Hash.new {|h,k| h[k] = []}
|
9
9
|
r.each do |agent|
|
10
|
-
|
10
|
+
m = Hash[new_keys.zip(agent)]
|
11
|
+
new_metrics[ m[:agent] ] << m
|
11
12
|
end
|
12
|
-
|
13
|
-
parsed_metrics = Hash.new
|
14
|
-
agents.each do |agent|
|
15
|
-
parsed_metrics[agent] = agent_metrics.select {|m| m[:agent] == agent}
|
16
|
-
end
|
17
|
-
return parsed_metrics
|
13
|
+
new_metrics
|
18
14
|
end
|
19
15
|
end
|
@@ -3,12 +3,10 @@ module CompositeReportHelpers
|
|
3
3
|
|
4
4
|
def parse_response
|
5
5
|
r = Queri.send_request(@queues, self, @period_start, @period_end)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
agent_metrics << Hash[new_keys.zip(agent)]
|
6
|
+
new_keys = self.class.keys
|
7
|
+
r.shift
|
8
|
+
r.map do |agent|
|
9
|
+
Hash[new_keys.zip(agent)]
|
11
10
|
end
|
12
|
-
return agent_metrics
|
13
11
|
end
|
14
12
|
end
|
@@ -10,8 +10,7 @@ module Queri
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def key_translations
|
13
|
-
|
14
|
-
:calls_fully_within_the_given_time_interval, "Calls fully within the given time interval:",
|
13
|
+
ActiveSupport::OrderedHash[
|
15
14
|
:calls_answered, "N. calls answered by operators:",
|
16
15
|
:average_call_length, "Average call length:",
|
17
16
|
:minimum_call_length, "Min call length:",
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Queri
|
2
|
+
class Stats
|
3
|
+
class Distributions
|
4
|
+
class AcdAttemptsByQueue < Queri::Stats
|
5
|
+
include CompositeReportHelpers
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def xml_code
|
9
|
+
Distributions.xml_code + ".AcdByQueue"
|
10
|
+
end
|
11
|
+
|
12
|
+
def key_translations
|
13
|
+
ActiveSupport::OrderedHash[
|
14
|
+
:queue, "Queue",
|
15
|
+
:number_of_lost_agent_attempts, "N. lost",
|
16
|
+
:average_ring_time_for_lost_attempts, "Avg ring",
|
17
|
+
:total_ring_time_for_lost_attempts, "Ring (s)",
|
18
|
+
:number_of_taken_agent_attempts, "N. Taken",
|
19
|
+
:average_ring_time_for_taken_attempts, "Avg ring",
|
20
|
+
:total_ring_time_for_taken_attempts, "Ring (s)"
|
21
|
+
]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Queri
|
2
|
+
class Stats
|
3
|
+
class Distributions
|
4
|
+
class AcdAttemptsByTerminal < Queri::Stats
|
5
|
+
include CompositeReportHelpers
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def xml_code
|
9
|
+
Distributions.xml_code + ".AcdByTerminals"
|
10
|
+
end
|
11
|
+
|
12
|
+
def key_translations
|
13
|
+
ActiveSupport::OrderedHash[
|
14
|
+
:agent, "Agent",
|
15
|
+
:number_of_lost_attempts, "N. lost",
|
16
|
+
:average_ring_time_for_lost_attempts, "Avg ring",
|
17
|
+
:total_ring_time_for_lost_attempts, "Ring (s)",
|
18
|
+
:number_of_taken_attempts, "N. Taken",
|
19
|
+
:average_ring_time_for_taken_attempts, "Avg ring",
|
20
|
+
:total_ring_time_for_taken_attempts, "Ring (s)"
|
21
|
+
]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Queri
|
2
|
+
class Stats
|
3
|
+
class Distributions
|
4
|
+
class InboundAcdCallAttempts < Queri::Stats
|
5
|
+
include AggregateReportHelpers
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def xml_code
|
9
|
+
Distributions.xml_code + ".ReportAcd"
|
10
|
+
end
|
11
|
+
|
12
|
+
def key_translations
|
13
|
+
ActiveSupport::OrderedHash[
|
14
|
+
:total_attempts_sent_to_operators, "Total ACD attempts sent to operators:",
|
15
|
+
:placeholder_for_taken_calls, "Taken calls",
|
16
|
+
:average_attempts_for_taken_calls, "Average attempts:",
|
17
|
+
:minimum_attempts_for_taken_calls, "Min attempts:",
|
18
|
+
:maximum_attempts_for_taken_calls, "Max attempts:",
|
19
|
+
:total_attempts_for_taken_calls, "Total attempts:",
|
20
|
+
:placeholder_for_lost_calls, "Lost calls",
|
21
|
+
:average_attempts_for_lost_calls, "Average attempts:",
|
22
|
+
:minimum_attempts_for_lost_calls, "Min attempts:",
|
23
|
+
:maximum_attempts_for_lost_calls, "Max attempts:",
|
24
|
+
:total_attempts_for_lost_calls, "Total attempts:"
|
25
|
+
]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -14,7 +14,7 @@ module Queri
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def key_translations
|
17
|
-
|
17
|
+
ActiveSupport::OrderedHash[
|
18
18
|
:calls_unanswered, "N.of unanswered calls:",
|
19
19
|
:average_wait_before_disconnect, "Average wait time before disconnection:",
|
20
20
|
:minimum_wait_before_disconnect, "Min wait time before disconnection:",
|
@@ -14,7 +14,7 @@ module Queri
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def key_translations
|
17
|
-
|
17
|
+
ActiveSupport::OrderedHash[
|
18
18
|
:calls_fully_within_the_given_time_interval, "Calls fully within the given time interval:",
|
19
19
|
:calls_unanswered, "N.of unanswered calls:",
|
20
20
|
:average_call_waiting_time, "Average wait time before disconnection:",
|
data/lib/queri/version.rb
CHANGED
data/lib/queri.rb
CHANGED
data/queri.gemspec
CHANGED
@@ -19,6 +19,8 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
+
spec.add_dependency "activesupport"
|
23
|
+
|
22
24
|
spec.add_development_dependency "bundler", "~> 1.3"
|
23
25
|
spec.add_development_dependency "rake"
|
24
26
|
spec.add_development_dependency "rspec", "~> 2.14.1"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Queri::Stats::Distributions::AcdAttemptsByQueue do
|
4
|
+
let(:report_class) { Queri::Stats::Distributions::AcdAttemptsByQueue }
|
5
|
+
let(:xml_code) { report_class.xml_code }
|
6
|
+
|
7
|
+
before { Queri.configure_with(File.join(File.dirname(__FILE__), '..', '..', 'config.yml')) }
|
8
|
+
|
9
|
+
it_behaves_like "a report class"
|
10
|
+
|
11
|
+
it_behaves_like "a report method"
|
12
|
+
|
13
|
+
it_behaves_like "a queuemetrics report"
|
14
|
+
|
15
|
+
it_behaves_like "a stats report"
|
16
|
+
|
17
|
+
describe "An instance of", Queri::Stats::Distributions::AcdAttemptsByQueue do
|
18
|
+
it_behaves_like "a composite aggregate report instance"
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Queri::Stats::Distributions::AcdAttemptsByTerminal do
|
4
|
+
let(:report_class) { Queri::Stats::Distributions::AcdAttemptsByTerminal }
|
5
|
+
let(:xml_code) { report_class.xml_code }
|
6
|
+
|
7
|
+
before { Queri.configure_with(File.join(File.dirname(__FILE__), '..', '..', 'config.yml')) }
|
8
|
+
|
9
|
+
it_behaves_like "a report class"
|
10
|
+
|
11
|
+
it_behaves_like "a report method"
|
12
|
+
|
13
|
+
it_behaves_like "a queuemetrics report"
|
14
|
+
|
15
|
+
it_behaves_like "a stats report"
|
16
|
+
|
17
|
+
describe "An instance of", Queri::Stats::Distributions::AcdAttemptsByTerminal do
|
18
|
+
it_behaves_like "a composite aggregate report instance"
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Queri::Stats::Distributions::InboundAcdCallAttempts do
|
4
|
+
let(:report_class) { Queri::Stats::Distributions::InboundAcdCallAttempts }
|
5
|
+
let(:xml_code) { report_class.xml_code }
|
6
|
+
|
7
|
+
before { Queri.configure_with(File.join(File.dirname(__FILE__), '..', '..', 'config.yml')) }
|
8
|
+
|
9
|
+
it_behaves_like "a report class"
|
10
|
+
|
11
|
+
it_behaves_like "a report method"
|
12
|
+
|
13
|
+
it_behaves_like "a queuemetrics report"
|
14
|
+
|
15
|
+
it_behaves_like "a stats report"
|
16
|
+
|
17
|
+
describe "An instance of", Queri::Stats::Distributions::InboundAcdCallAttempts do
|
18
|
+
it_behaves_like "an aggregate report instance"
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: queri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brad Rice
|
@@ -10,6 +10,20 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2014-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,6 +111,10 @@ files:
|
|
97
111
|
- lib/queri/stats/details_of_answered_calls/queue_details.rb
|
98
112
|
- lib/queri/stats/details_of_unanswered_calls.rb
|
99
113
|
- lib/queri/stats/details_of_unanswered_calls/detail_of_unanswered_calls.rb
|
114
|
+
- lib/queri/stats/distributions.rb
|
115
|
+
- lib/queri/stats/distributions/acd_attempts_by_queue.rb
|
116
|
+
- lib/queri/stats/distributions/acd_attempts_by_terminal.rb
|
117
|
+
- lib/queri/stats/distributions/inbound_acd_call_attempts.rb
|
100
118
|
- lib/queri/stats/unanswered_calls.rb
|
101
119
|
- lib/queri/stats/unanswered_calls/all_calls.rb
|
102
120
|
- lib/queri/stats/unanswered_calls/all_calls_by_stints.rb
|
@@ -146,6 +164,10 @@ files:
|
|
146
164
|
- spec/stats/details_of_answered_calls/queue_details_spec.rb
|
147
165
|
- spec/stats/details_of_unanswered_calls/detail_of_unanswered_calls_spec.rb
|
148
166
|
- spec/stats/details_of_unanswered_calls/details_of_unanswered_calls_spec.rb
|
167
|
+
- spec/stats/distributions/acd_attempts_by_queue_spec.rb
|
168
|
+
- spec/stats/distributions/acd_attempts_by_terminal_spec.rb
|
169
|
+
- spec/stats/distributions/distributions_spec.rb
|
170
|
+
- spec/stats/distributions/inbound_acd_call_attempts_spec.rb
|
149
171
|
- spec/stats/stats_spec.rb
|
150
172
|
- spec/stats/unanswered_calls/all_calls_by_stints_spec.rb
|
151
173
|
- spec/stats/unanswered_calls/all_calls_spec.rb
|
@@ -231,6 +253,10 @@ test_files:
|
|
231
253
|
- spec/stats/details_of_answered_calls/queue_details_spec.rb
|
232
254
|
- spec/stats/details_of_unanswered_calls/detail_of_unanswered_calls_spec.rb
|
233
255
|
- spec/stats/details_of_unanswered_calls/details_of_unanswered_calls_spec.rb
|
256
|
+
- spec/stats/distributions/acd_attempts_by_queue_spec.rb
|
257
|
+
- spec/stats/distributions/acd_attempts_by_terminal_spec.rb
|
258
|
+
- spec/stats/distributions/distributions_spec.rb
|
259
|
+
- spec/stats/distributions/inbound_acd_call_attempts_spec.rb
|
234
260
|
- spec/stats/stats_spec.rb
|
235
261
|
- spec/stats/unanswered_calls/all_calls_by_stints_spec.rb
|
236
262
|
- spec/stats/unanswered_calls/all_calls_spec.rb
|