queri 0.0.10 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/lib/queri.rb +2 -0
- data/lib/queri/realtime.rb +21 -4
- data/lib/queri/realtime/agents.rb +3 -54
- data/lib/queri/realtime/calls.rb +28 -0
- data/lib/queri/realtime/queues.rb +2 -38
- data/lib/queri/realtime_arg_helpers.rb +13 -0
- data/lib/queri/version.rb +1 -1
- data/spec/realtime/agents_spec.rb +1 -1
- data/spec/realtime/calls_spec.rb +20 -0
- data/spec/realtime/realtime_spec.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: efd6822a01d26d086332c69907548f6d66a2a40b
|
4
|
+
data.tar.gz: e79b2a589fb598865acaa625a0c606dce897eea0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9e70aee15638273b0934afe74418c607549e00084268a2992fc3eee81f32d13822d529d932b1634498d4bb1c467257361cf023b6ff94bd4b111b98d748a0446
|
7
|
+
data.tar.gz: 4e61d974581eee5bb987ab44a455da17d057234937853eaedacc88d83b2ec12924ee65cc7920e723e20d4f5e3a3e725ec2f8adb5a837367cb255102d3ec8bf86
|
data/README.md
CHANGED
@@ -139,6 +139,7 @@ Currently returns analyses from two methods: QM.stats and QM.realtime.
|
|
139
139
|
* UnansweredOutboundCallsByAgent
|
140
140
|
* Realtime
|
141
141
|
* Agents
|
142
|
+
* Calls
|
142
143
|
* Queues
|
143
144
|
|
144
145
|
### Required Arguments
|
@@ -182,6 +183,7 @@ Composite aggregate reports return an Array of Hashes, each Hash corresponding t
|
|
182
183
|
* UnansweredCallsByKeyPress
|
183
184
|
* Realtime
|
184
185
|
* Agents
|
186
|
+
* Calls
|
185
187
|
* Queues
|
186
188
|
* Composite agent-level reports
|
187
189
|
* Stats
|
data/lib/queri.rb
CHANGED
@@ -3,8 +3,10 @@ require "yaml"
|
|
3
3
|
require "xmlrpc/client"
|
4
4
|
require 'active_support/ordered_hash'
|
5
5
|
|
6
|
+
require File.join( File.dirname(__FILE__), "queri", "realtime_arg_helpers" )
|
6
7
|
Dir[ File.join( File.dirname(__FILE__), "**", "*.rb" ) ].each {|f| require f}
|
7
8
|
|
9
|
+
|
8
10
|
module Queri
|
9
11
|
LOGFILE = ""
|
10
12
|
PERIOD = ""
|
data/lib/queri/realtime.rb
CHANGED
@@ -1,14 +1,31 @@
|
|
1
1
|
module Queri
|
2
2
|
class Realtime
|
3
|
+
include RealtimeArgHelpers
|
4
|
+
|
5
|
+
attr_reader :response
|
6
|
+
|
3
7
|
@@query_method = "QM.realtime"
|
4
8
|
@@xml_code = "RealtimeDO"
|
5
9
|
|
6
|
-
|
7
|
-
|
10
|
+
class << self
|
11
|
+
def query_method
|
12
|
+
@@query_method
|
13
|
+
end
|
14
|
+
|
15
|
+
def xml_code
|
16
|
+
@@xml_code
|
17
|
+
end
|
18
|
+
|
19
|
+
def keys
|
20
|
+
key_translations.keys
|
21
|
+
end
|
8
22
|
end
|
9
23
|
|
10
|
-
def
|
11
|
-
|
24
|
+
def initialize *args
|
25
|
+
raise ArgumentError, "expected argument: queues(Array)" unless valid_args?(args)
|
26
|
+
@queues = args.first
|
27
|
+
@response = parse_response
|
12
28
|
end
|
29
|
+
|
13
30
|
end
|
14
31
|
end
|
@@ -1,19 +1,15 @@
|
|
1
1
|
module Queri
|
2
2
|
class Realtime
|
3
|
-
class Agents
|
4
|
-
|
3
|
+
class Agents < Queri::Realtime
|
4
|
+
include CompositeReportHelpers
|
5
5
|
|
6
6
|
class << self
|
7
7
|
def xml_code
|
8
8
|
Realtime.xml_code + ".RTAgentsLoggedIn"
|
9
9
|
end
|
10
10
|
|
11
|
-
def query_method
|
12
|
-
Realtime.query_method
|
13
|
-
end
|
14
|
-
|
15
11
|
def key_translations
|
16
|
-
|
12
|
+
ActiveSupport::OrderedHash[
|
17
13
|
:ready_state, " ",
|
18
14
|
:empty_column, " ",
|
19
15
|
:agent, "Agent ",
|
@@ -27,54 +23,7 @@ module Queri
|
|
27
23
|
:magic_wand, " "
|
28
24
|
]
|
29
25
|
end
|
30
|
-
|
31
|
-
def keys
|
32
|
-
# This response is a conversion of a table view, and contains non-unique
|
33
|
-
# key values, so this method must be statically recorded, as to maintain
|
34
|
-
# order of keys.
|
35
|
-
[
|
36
|
-
:ready_state,
|
37
|
-
:empty_column,
|
38
|
-
:agent,
|
39
|
-
:login_time,
|
40
|
-
:assigned_queues,
|
41
|
-
:extension,
|
42
|
-
:pause,
|
43
|
-
:server,
|
44
|
-
:time_last_call_ended,
|
45
|
-
:on_queue,
|
46
|
-
:magic_wand
|
47
|
-
]
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def initialize *args
|
52
|
-
raise ArgumentError, "expected argument: queues(Array)" unless valid_args?(args)
|
53
|
-
@queues = args.first
|
54
|
-
@response = parse_response
|
55
26
|
end
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
def valid_args? args
|
60
|
-
valid = true
|
61
|
-
valid = false if args[0].class != Array
|
62
|
-
if valid and args[0].empty?
|
63
|
-
raise ArgumentError, "queues array cannot be empty"
|
64
|
-
end
|
65
|
-
return valid
|
66
|
-
end
|
67
|
-
|
68
|
-
def parse_response
|
69
|
-
r = Queri.send_request(@queues, self)
|
70
|
-
agent_metrics = []
|
71
|
-
r.each_with_index do |agent,i|
|
72
|
-
if i > 0
|
73
|
-
agent_metrics << Hash[self.class.keys.zip(agent)]
|
74
|
-
end
|
75
|
-
end
|
76
|
-
return agent_metrics
|
77
|
-
end
|
78
27
|
end
|
79
28
|
end
|
80
29
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Queri
|
2
|
+
class Realtime
|
3
|
+
class Calls < Queri::Realtime
|
4
|
+
include CompositeReportHelpers
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def xml_code
|
8
|
+
Realtime.xml_code + ".RTCallsBeingProc"
|
9
|
+
end
|
10
|
+
|
11
|
+
def key_translations
|
12
|
+
ActiveSupport::OrderedHash[
|
13
|
+
:direction_of_call, " ",
|
14
|
+
:queue, "Queue ",
|
15
|
+
:clid, "Caller ",
|
16
|
+
:time_call_entered_queue, "Entered ",
|
17
|
+
:time_call_on_wait, "Waiting ",
|
18
|
+
:call_duration, "Duration ",
|
19
|
+
:agent, "Agent ",
|
20
|
+
:music_on_hold, "MOH",
|
21
|
+
:server, "Srv",
|
22
|
+
:magic_wand, " "
|
23
|
+
]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,17 +1,13 @@
|
|
1
1
|
module Queri
|
2
2
|
class Realtime
|
3
|
-
class Queues
|
4
|
-
|
3
|
+
class Queues < Queri::Realtime
|
4
|
+
include CompositeReportHelpers
|
5
5
|
|
6
6
|
class << self
|
7
7
|
def xml_code
|
8
8
|
Realtime.xml_code + ".RTRiassunto"
|
9
9
|
end
|
10
10
|
|
11
|
-
def query_method
|
12
|
-
Realtime.query_method
|
13
|
-
end
|
14
|
-
|
15
11
|
def key_translations
|
16
12
|
Hash[
|
17
13
|
:empty_column, " ",
|
@@ -26,39 +22,7 @@ module Queri
|
|
26
22
|
:agents_handling_outbound_calls, "On phone outbound"
|
27
23
|
]
|
28
24
|
end
|
29
|
-
|
30
|
-
def keys
|
31
|
-
key_translations.keys
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def initialize *args
|
36
|
-
raise ArgumentError, "expected argument: queues(Array)" unless valid_args?(args)
|
37
|
-
@queues = args.first
|
38
|
-
@response = parse_response
|
39
25
|
end
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
def valid_args? args
|
44
|
-
valid = true
|
45
|
-
valid = false if args[0].class != Array
|
46
|
-
if valid and args[0].empty?
|
47
|
-
raise ArgumentError, "queues array cannot be empty"
|
48
|
-
end
|
49
|
-
return valid
|
50
|
-
end
|
51
|
-
|
52
|
-
def parse_response
|
53
|
-
r = Queri.send_request(@queues, self)
|
54
|
-
xml_keys_to_human_readable_keys = self.class.key_translations.invert
|
55
|
-
new_keys = r.shift.map {|k| xml_keys_to_human_readable_keys[k]}
|
56
|
-
agent_metrics = []
|
57
|
-
r.each do |agent|
|
58
|
-
agent_metrics << Hash[new_keys.zip(agent)]
|
59
|
-
end
|
60
|
-
return agent_metrics
|
61
|
-
end
|
62
26
|
end
|
63
27
|
end
|
64
28
|
end
|
data/lib/queri/version.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Queri::Realtime::Calls do
|
4
|
+
let(:report_class) { Queri::Realtime::Calls }
|
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 realtime report"
|
16
|
+
|
17
|
+
describe "An instance of", Queri::Realtime::Calls do
|
18
|
+
it_behaves_like "a realtime report instance"
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: queri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brad Rice
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -87,7 +87,9 @@ files:
|
|
87
87
|
- lib/queri/composite_report_helpers.rb
|
88
88
|
- lib/queri/realtime.rb
|
89
89
|
- lib/queri/realtime/agents.rb
|
90
|
+
- lib/queri/realtime/calls.rb
|
90
91
|
- lib/queri/realtime/queues.rb
|
92
|
+
- lib/queri/realtime_arg_helpers.rb
|
91
93
|
- lib/queri/stats.rb
|
92
94
|
- lib/queri/stats/agents_and_sessions.rb
|
93
95
|
- lib/queri/stats/agents_and_sessions/agent_availability.rb
|
@@ -183,6 +185,7 @@ files:
|
|
183
185
|
- queri.gemspec
|
184
186
|
- spec/queri_spec.rb
|
185
187
|
- spec/realtime/agents_spec.rb
|
188
|
+
- spec/realtime/calls_spec.rb
|
186
189
|
- spec/realtime/queues_spec.rb
|
187
190
|
- spec/realtime/realtime_spec.rb
|
188
191
|
- spec/spec_helper.rb
|
@@ -316,6 +319,7 @@ summary: Send requests to QM's XMLRPC client and receive human-readable response
|
|
316
319
|
test_files:
|
317
320
|
- spec/queri_spec.rb
|
318
321
|
- spec/realtime/agents_spec.rb
|
322
|
+
- spec/realtime/calls_spec.rb
|
319
323
|
- spec/realtime/queues_spec.rb
|
320
324
|
- spec/realtime/realtime_spec.rb
|
321
325
|
- spec/spec_helper.rb
|