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 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