queri 0.0.10 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20af8492e945ee7eaf882ff131edde6ae06b58bb
4
- data.tar.gz: fa46795033124ef03e4682dd141962f3620f8af2
3
+ metadata.gz: efd6822a01d26d086332c69907548f6d66a2a40b
4
+ data.tar.gz: e79b2a589fb598865acaa625a0c606dce897eea0
5
5
  SHA512:
6
- metadata.gz: 12b4d1aaa690c5108a6dcfe4fee8f5c34623bce23f0f1f608df27a1b996e74e76a8efa8457bb1fca2a61bd777b4648871457bd91dc36c8a54f4ea4940ea7ae48
7
- data.tar.gz: 0bd09e2f135b61946c35fa8db70349fd8b873a25a8432dddbc2a2d81cfe7c03448d5b64bdd6f16317006cf22b340cd017897b9bd525d2cd659bc98932b161e8d
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 = ""
@@ -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
- def self.query_method
7
- @@query_method
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 self.xml_code
11
- @@xml_code
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
- attr_reader :response
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
- Hash[
12
+ ActiveSupport::OrderedHash[
17
13
  :ready_state, "&nbsp;",
18
14
  :empty_column, "&nbsp;",
19
15
  :agent, "Agent &nbsp;",
@@ -27,54 +23,7 @@ module Queri
27
23
  :magic_wand, "&nbsp;"
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, "&nbsp;",
14
+ :queue, "Queue &nbsp;",
15
+ :clid, "Caller &nbsp;",
16
+ :time_call_entered_queue, "Entered &nbsp;",
17
+ :time_call_on_wait, "Waiting &nbsp;",
18
+ :call_duration, "Duration &nbsp;",
19
+ :agent, "Agent &nbsp;",
20
+ :music_on_hold, "MOH",
21
+ :server, "Srv",
22
+ :magic_wand, "&nbsp;"
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
- attr_reader :response
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, "&nbsp;",
@@ -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
@@ -0,0 +1,13 @@
1
+ module RealtimeArgHelpers
2
+
3
+ private
4
+
5
+ def valid_args? args
6
+ valid = true
7
+ valid = false if args[0].class != Array
8
+ if valid and args[0].empty?
9
+ raise ArgumentError, "queues array cannot be empty"
10
+ end
11
+ return valid
12
+ end
13
+ end
data/lib/queri/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Queri
2
- VERSION = "0.0.10"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -1,4 +1,4 @@
1
- require File.join( File.dirname(__FILE__), '..', 'spec_helper' )
1
+ require 'spec_helper'
2
2
 
3
3
  describe Queri::Realtime::Agents do
4
4
  let(:report_class) { Queri::Realtime::Agents }
@@ -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
@@ -1,4 +1,4 @@
1
- require File.join( File.dirname(__FILE__), '..', 'spec_helper' )
1
+ require 'spec_helper'
2
2
 
3
3
  describe Queri::Realtime do
4
4
  let(:report_method) { Queri::Realtime }
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.10
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-05 00:00:00.000000000 Z
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