echi-converter 0.4.2 → 0.4.4
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.
- data/.gitignore +7 -0
- data/{History.txt → CHANGELOG} +6 -1
- data/Gemfile +4 -0
- data/{License.txt → LICENSE} +0 -0
- data/README.md +184 -0
- data/Rakefile +16 -142
- data/TODO +4 -0
- data/bin/echi-converter +13 -12
- data/config/extended_version14.yml +2 -1
- data/config/install_files.yml +1 -7
- data/config/standard_version14.yml +2 -1
- data/config/version16.yml +353 -0
- data/echi-converter.gemspec +29 -0
- data/files/processed/chr0003 +0 -0
- data/files/processed/chr0004 +0 -0
- data/lib/echi-converter.rb +4 -3
- data/lib/echi-converter/version.rb +1 -1
- metadata +143 -127
- data/Manifest.txt +0 -49
- data/README.txt +0 -48
- data/scripts/txt2html +0 -67
- data/test/test_echi-converter.rb +0 -11
- data/test/test_helper.rb +0 -2
- data/website/index.html +0 -199
- data/website/index.txt +0 -194
- data/website/javascripts/rounded_corners_lite.inc.js +0 -285
- data/website/stylesheets/screen.css +0 -138
- data/website/template.rhtml +0 -48
@@ -1,5 +1,6 @@
|
|
1
1
|
#ECH File construct, order is important, as the application sequentially reads the file
|
2
2
|
#Version 14 - Extended Schema
|
3
|
+
# Documentation: http://support.avaya.com/elmodocs2/cms/R14/ECHI.pdf
|
3
4
|
echi_records:
|
4
5
|
- name: callid
|
5
6
|
type: int
|
@@ -327,4 +328,4 @@ echi_vectors:
|
|
327
328
|
length: 255
|
328
329
|
- name: name
|
329
330
|
type: str
|
330
|
-
length: 255
|
331
|
+
length: 255
|
data/config/install_files.yml
CHANGED
@@ -17,13 +17,7 @@ dirs_to_create:
|
|
17
17
|
- name: lib/echi-converter
|
18
18
|
|
19
19
|
files_to_copy:
|
20
|
-
- name: History.txt
|
21
|
-
- name: License.txt
|
22
|
-
- name: Manifest.txt
|
23
|
-
- name: README.txt
|
24
20
|
- name: Rakefile
|
25
|
-
- name: test/test_echi-converter.rb
|
26
|
-
- name: test/test_helper.rb
|
27
21
|
- name: config/application.yml
|
28
22
|
- name: config/database.yml
|
29
23
|
- name: config/extended_version12.yml
|
@@ -70,4 +64,4 @@ files_to_upgrade:
|
|
70
64
|
- name: db/migrate/005_change_log_processedat_name.rb
|
71
65
|
- name: db/migrate/006_create_echi_aux_reasons.rb
|
72
66
|
- name: db/migrate/007_create_echi_cwcs.rb
|
73
|
-
- name: db/migrate/008_create_echi_vdns.rb
|
67
|
+
- name: db/migrate/008_create_echi_vdns.rb
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#ECH File construct, order is important, as the application sequentially reads the file
|
2
2
|
#Version 14 - Standard Schema
|
3
|
+
# Documentation: http://support.avaya.com/elmodocs2/cms/R14/ECHI.pdf
|
3
4
|
echi_records:
|
4
5
|
- name: callid
|
5
6
|
type: int
|
@@ -291,4 +292,4 @@ echi_vectors:
|
|
291
292
|
length: 255
|
292
293
|
- name: name
|
293
294
|
type: str
|
294
|
-
length: 255
|
295
|
+
length: 255
|
@@ -0,0 +1,353 @@
|
|
1
|
+
# ECH File construct, order is important, as the application
|
2
|
+
# sequentially reads the file
|
3
|
+
# Source: http://support.avaya.com/css/P8/documents/100114943
|
4
|
+
# Version 16
|
5
|
+
echi_records:
|
6
|
+
- name: callid
|
7
|
+
type: int
|
8
|
+
length: 4
|
9
|
+
- name: acwtime
|
10
|
+
type: int
|
11
|
+
length: 4
|
12
|
+
- name: onholdtime
|
13
|
+
type: int
|
14
|
+
length: 4
|
15
|
+
- name: consulttime
|
16
|
+
type: int
|
17
|
+
length: 4
|
18
|
+
- name: disptime
|
19
|
+
type: int
|
20
|
+
length: 4
|
21
|
+
- name: duration
|
22
|
+
type: int
|
23
|
+
length: 4
|
24
|
+
- name: segstart
|
25
|
+
type: datetime
|
26
|
+
length: 4
|
27
|
+
- name: segstart_utc
|
28
|
+
type: datetime
|
29
|
+
length: 4
|
30
|
+
- name: segstop
|
31
|
+
type: datetime
|
32
|
+
length: 4
|
33
|
+
- name: segstop_utc
|
34
|
+
type: datetime
|
35
|
+
length: 4
|
36
|
+
- name: talktime
|
37
|
+
type: int
|
38
|
+
length: 4
|
39
|
+
- name: netintime
|
40
|
+
type: int
|
41
|
+
length: 4
|
42
|
+
- name: origholdtime
|
43
|
+
type: int
|
44
|
+
length: 4
|
45
|
+
- name: queuetime
|
46
|
+
type: int
|
47
|
+
length: 4
|
48
|
+
- name: ringtime
|
49
|
+
type: int
|
50
|
+
length: 4
|
51
|
+
- name: dispivector
|
52
|
+
type: int
|
53
|
+
length: 2
|
54
|
+
- name: dispsplit
|
55
|
+
type: int
|
56
|
+
length: 2
|
57
|
+
- name: firstivector
|
58
|
+
type: int
|
59
|
+
length: 2
|
60
|
+
- name: split1
|
61
|
+
type: int
|
62
|
+
length: 2
|
63
|
+
- name: split2
|
64
|
+
type: int
|
65
|
+
length: 2
|
66
|
+
- name: split3
|
67
|
+
type: int
|
68
|
+
length: 2
|
69
|
+
- name: trunkgroup
|
70
|
+
type: int
|
71
|
+
length: 2
|
72
|
+
- name: tklocid
|
73
|
+
type: int
|
74
|
+
length: 2
|
75
|
+
- name: origlocid
|
76
|
+
type: int
|
77
|
+
length: 2
|
78
|
+
- name: answerlocid
|
79
|
+
type: int
|
80
|
+
length: 2
|
81
|
+
- name: obslocid
|
82
|
+
type: int
|
83
|
+
length: 2
|
84
|
+
- name: uuilen
|
85
|
+
type: int
|
86
|
+
length: 2
|
87
|
+
- name: assist
|
88
|
+
type: bool
|
89
|
+
length: 1
|
90
|
+
- name: audiodifficulty
|
91
|
+
type: bool
|
92
|
+
length: 1
|
93
|
+
- name: conference
|
94
|
+
type: bool
|
95
|
+
length: 1
|
96
|
+
- name: daqueued
|
97
|
+
type: bool
|
98
|
+
length: 1
|
99
|
+
- name: holdabn
|
100
|
+
type: bool
|
101
|
+
length: 1
|
102
|
+
- name: malicious
|
103
|
+
type: bool
|
104
|
+
length: 1
|
105
|
+
- name: observingcall
|
106
|
+
type: bool
|
107
|
+
length: 1
|
108
|
+
- name: transferred
|
109
|
+
type: bool
|
110
|
+
length: 1
|
111
|
+
- name: agentreleased
|
112
|
+
type: boolint
|
113
|
+
length: 1
|
114
|
+
- name: acdnum
|
115
|
+
type: int
|
116
|
+
length: 1
|
117
|
+
- name: calldisp
|
118
|
+
type: int
|
119
|
+
length: 1
|
120
|
+
- name: disppriority
|
121
|
+
type: int
|
122
|
+
length: 1
|
123
|
+
- name: holds
|
124
|
+
type: int
|
125
|
+
length: 1
|
126
|
+
- name: segment
|
127
|
+
type: int
|
128
|
+
length: 1
|
129
|
+
- name: ansreason
|
130
|
+
type: int
|
131
|
+
length: 1
|
132
|
+
- name: origreason
|
133
|
+
type: int
|
134
|
+
length: 1
|
135
|
+
- name: dispsklevel
|
136
|
+
type: int
|
137
|
+
length: 1
|
138
|
+
- name: events0
|
139
|
+
type: int
|
140
|
+
length: 1
|
141
|
+
- name: events1
|
142
|
+
type: int
|
143
|
+
length: 1
|
144
|
+
- name: events2
|
145
|
+
type: int
|
146
|
+
length: 1
|
147
|
+
- name: events3
|
148
|
+
type: int
|
149
|
+
length: 1
|
150
|
+
- name: events4
|
151
|
+
type: int
|
152
|
+
length: 1
|
153
|
+
- name: events5
|
154
|
+
type: int
|
155
|
+
length: 1
|
156
|
+
- name: events6
|
157
|
+
type: int
|
158
|
+
length: 1
|
159
|
+
- name: events7
|
160
|
+
type: int
|
161
|
+
length: 1
|
162
|
+
- name: events8
|
163
|
+
type: int
|
164
|
+
length: 1
|
165
|
+
- name: ucid
|
166
|
+
type: str
|
167
|
+
length: 21
|
168
|
+
- name: dispvdn
|
169
|
+
type: str
|
170
|
+
length: 8
|
171
|
+
- name: eqloc
|
172
|
+
type: str
|
173
|
+
length: 10
|
174
|
+
- name: firstvdn
|
175
|
+
type: str
|
176
|
+
length: 8
|
177
|
+
- name: origlogid
|
178
|
+
type: str
|
179
|
+
length: 10
|
180
|
+
- name: anslogid
|
181
|
+
type: str
|
182
|
+
length: 10
|
183
|
+
- name: lastobserver
|
184
|
+
type: str
|
185
|
+
length: 10
|
186
|
+
- name: dialednumber
|
187
|
+
type: str
|
188
|
+
length: 25
|
189
|
+
- name: callingparty
|
190
|
+
type: str
|
191
|
+
length: 13
|
192
|
+
- name: collectdigits
|
193
|
+
type: str
|
194
|
+
length: 17
|
195
|
+
- name: cwcdigits
|
196
|
+
type: str
|
197
|
+
length: 17
|
198
|
+
- name: callingII
|
199
|
+
type: str
|
200
|
+
length: 3
|
201
|
+
- name: cwcs0
|
202
|
+
type: str
|
203
|
+
length: 17
|
204
|
+
- name: cwcs1
|
205
|
+
type: str
|
206
|
+
length: 17
|
207
|
+
- name: cwcs2
|
208
|
+
type: str
|
209
|
+
length: 17
|
210
|
+
- name: cwcs3
|
211
|
+
type: str
|
212
|
+
length: 17
|
213
|
+
- name: cwcs4
|
214
|
+
type: str
|
215
|
+
length: 17
|
216
|
+
- name: vdn2
|
217
|
+
type: str
|
218
|
+
length: 16
|
219
|
+
- name: vdn3
|
220
|
+
type: str
|
221
|
+
length: 16
|
222
|
+
- name: vdn4
|
223
|
+
type: str
|
224
|
+
length: 16
|
225
|
+
- name: vdn5
|
226
|
+
type: str
|
227
|
+
length: 16
|
228
|
+
- name: vdn6
|
229
|
+
type: str
|
230
|
+
length: 16
|
231
|
+
- name: vdn7
|
232
|
+
type: str
|
233
|
+
length: 16
|
234
|
+
- name: vdn8
|
235
|
+
type: str
|
236
|
+
length: 16
|
237
|
+
- name: vdn9
|
238
|
+
type: str
|
239
|
+
length: 16
|
240
|
+
- name: asaiuui
|
241
|
+
type: str
|
242
|
+
length: 97
|
243
|
+
- name: interruptdel
|
244
|
+
type: int
|
245
|
+
length: 1
|
246
|
+
- name: agentsurplus
|
247
|
+
type: int
|
248
|
+
length: 1
|
249
|
+
- name: agentskilllevel
|
250
|
+
type: int
|
251
|
+
length: 1
|
252
|
+
- name: prefskilllevel
|
253
|
+
type: int
|
254
|
+
length: 1
|
255
|
+
- name: padding
|
256
|
+
type: string
|
257
|
+
length: 45
|
258
|
+
|
259
|
+
#ACD table definition derived from acd.dat
|
260
|
+
echi_acds:
|
261
|
+
- name: acd_id
|
262
|
+
type: str
|
263
|
+
length: 255
|
264
|
+
- name: acd_number
|
265
|
+
type: str
|
266
|
+
length: 255
|
267
|
+
- name: name
|
268
|
+
type: str
|
269
|
+
length: 255
|
270
|
+
|
271
|
+
#Agents table definition derived from agname.dat
|
272
|
+
echi_agents:
|
273
|
+
- name: group_id
|
274
|
+
type: str
|
275
|
+
length: 255
|
276
|
+
- name: login_id
|
277
|
+
type: str
|
278
|
+
length: 255
|
279
|
+
- name: name
|
280
|
+
type: str
|
281
|
+
length: 255
|
282
|
+
|
283
|
+
#Aux Reasons table definition derived from aux_rsn.dat
|
284
|
+
echi_reasons:
|
285
|
+
- name: group_id
|
286
|
+
type: str
|
287
|
+
length: 255
|
288
|
+
- name: aux_reason
|
289
|
+
type: str
|
290
|
+
length: 255
|
291
|
+
- name: name
|
292
|
+
type: str
|
293
|
+
length: 255
|
294
|
+
|
295
|
+
#CWC definition derived from cwc.dat
|
296
|
+
echi_cwcs:
|
297
|
+
- name: group_id
|
298
|
+
type: str
|
299
|
+
length: 255
|
300
|
+
- name: cwc
|
301
|
+
type: str
|
302
|
+
length: 255
|
303
|
+
- name: name
|
304
|
+
type: str
|
305
|
+
length: 255
|
306
|
+
|
307
|
+
#Split table definition derived from split.dat
|
308
|
+
echi_splits:
|
309
|
+
- name: acd_number
|
310
|
+
type: str
|
311
|
+
length: 255
|
312
|
+
- name: split_number
|
313
|
+
type: str
|
314
|
+
length: 255
|
315
|
+
- name: name
|
316
|
+
type: str
|
317
|
+
length: 255
|
318
|
+
|
319
|
+
#Trunk Group table definition derived from tkgrp.dat
|
320
|
+
echi_trunks:
|
321
|
+
- name: acd_number
|
322
|
+
type: str
|
323
|
+
length: 255
|
324
|
+
- name: trunk_group
|
325
|
+
type: str
|
326
|
+
length: 255
|
327
|
+
- name: name
|
328
|
+
type: str
|
329
|
+
length: 255
|
330
|
+
|
331
|
+
#VDN definition derived from vdn.dat
|
332
|
+
echi_vdns:
|
333
|
+
- name: group_id
|
334
|
+
type: str
|
335
|
+
length: 255
|
336
|
+
- name: vdn
|
337
|
+
type: str
|
338
|
+
length: 255
|
339
|
+
- name: name
|
340
|
+
type: str
|
341
|
+
length: 255
|
342
|
+
|
343
|
+
#Vector definition derived from vector.dat
|
344
|
+
echi_vectors:
|
345
|
+
- name: acd_number
|
346
|
+
type: str
|
347
|
+
length: 255
|
348
|
+
- name: vector_number
|
349
|
+
type: str
|
350
|
+
length: 255
|
351
|
+
- name: name
|
352
|
+
type: str
|
353
|
+
length: 255
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "echi-converter/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'echi-converter'
|
7
|
+
s.version = EchiConverter::VERSION::STRING
|
8
|
+
s.authors = ['Jason Goecke', 'Ben Klang']
|
9
|
+
s.email = ['echi@mojolingo.com']
|
10
|
+
s.homepage = "https://github.com/mojolingo/echi-converter"
|
11
|
+
s.summary = %q{ECHI Conversion Utility}
|
12
|
+
s.description = %q{Provides a utility to fetch Avaya CMS / ECHI binary files, convert them and insert into a database table via ActiveRecord}
|
13
|
+
|
14
|
+
s.rubyforge_project = "ruby_speech"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_runtime_dependency %q<activerecord>, ['>=1.15.3']
|
22
|
+
s.add_runtime_dependency %q<activesupport>, ['>=1.4.2']
|
23
|
+
s.add_runtime_dependency %q<daemons>, ['>=1.0.7']
|
24
|
+
s.add_runtime_dependency %q<fastercsv>, ['>=1.2.0']
|
25
|
+
s.add_runtime_dependency %q<rake>, ['>=0.7.3']
|
26
|
+
s.add_runtime_dependency %q<uuidtools>, ['>=1.0.1']
|
27
|
+
|
28
|
+
s.add_development_dependency 'yard'
|
29
|
+
end
|
Binary file
|
Binary file
|
data/lib/echi-converter.rb
CHANGED
@@ -6,6 +6,7 @@ require 'net/smtp'
|
|
6
6
|
require 'fileutils'
|
7
7
|
require 'uuidtools'
|
8
8
|
require 'thread'
|
9
|
+
require 'logger'
|
9
10
|
require $workingdir + '/ftp_fetcher.rb'
|
10
11
|
|
11
12
|
class Logger
|
@@ -88,7 +89,7 @@ module EchiConverter
|
|
88
89
|
#Method to strip special characters from a string
|
89
90
|
def strip_specials(data)
|
90
91
|
if $config["strip_characters"] == true
|
91
|
-
|
92
|
+
[*$config["characters_to_strip"]].compact.each do |char|
|
92
93
|
data.gsub!(char.chr,"")
|
93
94
|
end
|
94
95
|
end
|
@@ -317,7 +318,7 @@ module EchiConverter
|
|
317
318
|
#in order to commit as one atomic action upon success
|
318
319
|
EchiRecord.transaction do
|
319
320
|
@record_cnt = 0
|
320
|
-
|
321
|
+
CSV.foreach(echi_file) do |row|
|
321
322
|
if row != nil
|
322
323
|
@log.debug '<====================START RECORD ' + @record_cnt.to_s + ' ====================>'
|
323
324
|
echi_record = EchiRecord.new
|
@@ -544,4 +545,4 @@ module EchiConverter
|
|
544
545
|
end
|
545
546
|
|
546
547
|
require $workingdir + '/echi-converter/version.rb'
|
547
|
-
end
|
548
|
+
end
|