asterisk_mini_statement 0.1.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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/asterisk_mini_statement.rb +79 -0
- metadata +108 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b84d84acf68553f1234ec8e3fdb9bb47219bdfcb
|
4
|
+
data.tar.gz: 19193af36e377171fbd39e6ebd85346581fd6d8e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0fc862e796765e1d7f791bc91ad3eccba1e789719ab55113a52f9fe4f0729c627357a9d5fc25d1d5bb62971c0398c8e342d5d756d8a01b03aceaff1e4fc1e196
|
7
|
+
data.tar.gz: 8eb5d29518c8d00c8dfdfb121542a6f49efcdff30fc344cadaebed6b7e5797c24d274c36a65ec98d9dc05e8b80b54fc2fb317ee9e21266e858aa09f160d299fb
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
@@ -0,0 +1,79 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: asterisk_mini_statement.rb
|
4
|
+
|
5
|
+
|
6
|
+
require 'csv'
|
7
|
+
require 'polyrex'
|
8
|
+
require 'subunit'
|
9
|
+
|
10
|
+
class AsteriskMiniStatement
|
11
|
+
|
12
|
+
attr_reader :to_xml
|
13
|
+
|
14
|
+
def initialize(cdr_file='/var/log/asterisk/cdr-csv/Master.csv',
|
15
|
+
startdate: (Date.today - 8).strftime("%d-%b-%Y"),
|
16
|
+
enddate: (Date.today - 1).strftime("%d-%b-%Y"),
|
17
|
+
telno: 'unknown', outgoing_regex: /SIP\/(\d+)@sipgate,30,tr/)
|
18
|
+
|
19
|
+
sdate = Date.parse startdate
|
20
|
+
edate = Date.parse enddate
|
21
|
+
|
22
|
+
s = File.read cdr_file
|
23
|
+
|
24
|
+
headings = %i(accountcode src dst dcontet clid channel dstchannel
|
25
|
+
lastapp lastdata start answer end duration billsec disposition
|
26
|
+
amaflags astid)
|
27
|
+
|
28
|
+
a = s.lines.map {|line| Hash[headings.zip(CSV.parse(line).first)] }
|
29
|
+
|
30
|
+
|
31
|
+
a2 = a.select do |x|
|
32
|
+
date = Date.parse(x[:start])
|
33
|
+
date >= sdate and date <= edate and x[:disposition] == 'ANSWERED'
|
34
|
+
end
|
35
|
+
|
36
|
+
a3 = a2.group_by {|x| Date.parse(x[:start]) }
|
37
|
+
|
38
|
+
px = Polyrex.new('calls[telno, period]/day[date]/item[time, telno,' +
|
39
|
+
' io, dur]')
|
40
|
+
|
41
|
+
px.summary.period = "%s - %s" % [sdate.strftime("%d/%m/%Y"),
|
42
|
+
edate.strftime("%d/%m/%Y")]
|
43
|
+
px.summary.telno = telno
|
44
|
+
|
45
|
+
a3.each do |day, items|
|
46
|
+
|
47
|
+
px.create_day({date: day.strftime("%d-%b-%Y")}) do |create|
|
48
|
+
|
49
|
+
items.each do |x|
|
50
|
+
|
51
|
+
outgoing = x[:lastdata][outgoing_regex,1]
|
52
|
+
|
53
|
+
io, telno = if outgoing then
|
54
|
+
io = ['out', outgoing]
|
55
|
+
else
|
56
|
+
telno = ['in', x[:clid][/"([^"]+)/,1]]
|
57
|
+
end
|
58
|
+
|
59
|
+
raw_a = Subunit.new(units={minutes:60, hours:60},
|
60
|
+
seconds: x[:duration].to_i).to_a
|
61
|
+
|
62
|
+
a = raw_a.zip(%w(h m s)).inject([]) do |r, x|
|
63
|
+
val, label = x
|
64
|
+
val > 0 ? r << (val.to_s + label) : r
|
65
|
+
end.take 2
|
66
|
+
|
67
|
+
create.item(time: x[:start], telno: telno, io: io, dur: a.join(' ') )
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
@to_xml = px.to_xml pretty: true
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
metadata
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: asterisk_mini_statement
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Robertson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
|
14
|
+
YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
|
15
|
+
8ixkARkWAmV1MB4XDTE2MDUxNTE4NTgwMFoXDTE3MDUxNTE4NTgwMFowSDESMBAG
|
16
|
+
A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
|
17
|
+
EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
18
|
+
ggEBAJnbspKQ19yeWkfGnkSEzK9wZO4su+ha0u5KjodLc6N4d2xUi4RSLRCimaZy
|
19
|
+
KHnLveqMhICNFe1QOQdGKM7Z9/J2Yps9nizikP+1YuUnvp9S3bA34YrtHJy4+mk5
|
20
|
+
VaT1ZOWueCOBppgN7EU6mjAVVzNhM9PM7xMV1RthcKRhhLXN9BRnM8HBkTnIehfi
|
21
|
+
TPAVOG1nyF8yYcEwJqF8mkCsyiAh3SeCOmH/cmWrNts8UaGv2rg0K6f62A6mIrZj
|
22
|
+
/H1dDns6MoshUaGnejO/OR/V3IXvtTq7bE4nkhTHUEIBK65rfYQsjb2TxgVoWeEh
|
23
|
+
Urx7dZB8ZeURtKgovmzocXzbrCkCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
|
24
|
+
DwQEAwIEsDAdBgNVHQ4EFgQUw472hCHwwQhZKBRCO3vxJkH2PSAwJgYDVR0RBB8w
|
25
|
+
HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
|
26
|
+
c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAEgrRydb/
|
27
|
+
19qGKcJ3+5Xc2YCBskwtlc8wZ+yUJT3Gtt9v89jvf+Lgyp1XHo7CvpR+edePY3cR
|
28
|
+
1Ofstda/866qmUlIyjcGVtSjHja9++ACrIKYmJyH5wR8ZogX1a6nbOBUUgbPGcKJ
|
29
|
+
b7bclON+//K4T2oLWm+/u+W+/JNTSuWdPM4QJVNoE64L73m/vz+k16wg8qx6cd50
|
30
|
+
MO6K/mNBXmvGe2WMDiWnkn12PVHxfd/TiaoUpIXttxVIw/pPdWookPrompEl83mT
|
31
|
+
nvlgfc5b1kUBa0viP6I53DUsYpTa1sWNpVQoXGEIIgB46Gtx/+fY83adQ3SrThtn
|
32
|
+
MbY57VwNAM4kow==
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2016-05-15 00:00:00.000000000 Z
|
35
|
+
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: subunit
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0.2'
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.2.4
|
46
|
+
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - "~>"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0.2'
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.2.4
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: polyrex
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '1.1'
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.1.1
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '1.1'
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.1.1
|
76
|
+
description:
|
77
|
+
email: james@r0bertson.co.uk
|
78
|
+
executables: []
|
79
|
+
extensions: []
|
80
|
+
extra_rdoc_files: []
|
81
|
+
files:
|
82
|
+
- lib/asterisk_mini_statement.rb
|
83
|
+
homepage: https://github.com/jrobertson/asterisk_mini_statement
|
84
|
+
licenses:
|
85
|
+
- MIT
|
86
|
+
metadata: {}
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubyforge_project:
|
103
|
+
rubygems_version: 2.4.8
|
104
|
+
signing_key:
|
105
|
+
specification_version: 4
|
106
|
+
summary: Project under development to output a mini statement of recent telephone
|
107
|
+
calls from the Asterisk Call Detail Records (cdr-csv/Master.csv) file.
|
108
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|