88 lines
2.0 KiB
Plaintext
88 lines
2.0 KiB
Plaintext
input {
|
|
rabbitmq {
|
|
host => "localhost"
|
|
port => 5672
|
|
vhost => "/"
|
|
durable => true
|
|
queue => "active_call_queue"
|
|
ack => true
|
|
user => "$rabbit"
|
|
password => "thebestmostsecurepasswordever"
|
|
codec => json {
|
|
target => "[body]"
|
|
}
|
|
}
|
|
}
|
|
|
|
filter {
|
|
mutate {
|
|
convert => {
|
|
"[channelState][Event-Date-Timestamp]" => "integer"
|
|
}
|
|
}
|
|
ruby {
|
|
path => "/etc/logstash-files/field_whitelist.rb"
|
|
script_params => {
|
|
"top_level_key" => "body"
|
|
"whitelist_names" => [ "FreeSWITCH-Switchname", "Caller-Network-Addr", "FreeSWITCH-IPv4", "Event-Date-Timestamp", "Call-Direction", "Channel-Call-UUID", "Answer-State", "Caller-Direction", "Caller-Caller-ID-Name", "Caller-Caller-ID-Number", "Caller-ANI", "Caller-Destination-Number", "Caller-Context" ]
|
|
}
|
|
}
|
|
|
|
if [body][Call-Direction] == "inbound" and [body][Answer-State] == "hangup" {
|
|
ruby {
|
|
code => '
|
|
state = event.get("body").to_hash
|
|
ts = state["Event-Date-Timestamp"]
|
|
state["Event-Date-Timestamp"] = ts/1000
|
|
event.set("body", state)
|
|
'
|
|
}
|
|
|
|
date {
|
|
match => ["[body][Event-Date-Timestamp]", "UNIX_MS"]
|
|
target => "hangup_time"
|
|
}
|
|
}
|
|
}
|
|
|
|
output {
|
|
if [body][Call-Direction] == "inbound" {
|
|
mongodb {
|
|
uri => "mongo://localhost:27017"
|
|
collection => "activeCalls"
|
|
database => "FreeswitchDB"
|
|
isodate => true
|
|
action => "update"
|
|
upsert => true
|
|
max_retries => 3
|
|
filter => {
|
|
"call_id" => "[body][Channel-Call-UUID]"
|
|
}
|
|
update_expressions => {
|
|
"$set" => {
|
|
"hangup_time" => "[hangup_time]"
|
|
"a_legs" => body
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
mongodb {
|
|
uri => "mongo://localhost:27017"
|
|
collection => "activeCalls"
|
|
database => "FreeswitchDB"
|
|
isodate => true
|
|
action => "update"
|
|
upsert => true
|
|
max_retries => 3
|
|
filter => {
|
|
"call_id" => "[body][Channel-Call-UUID]"
|
|
}
|
|
update_expressions => {
|
|
"$set" => {
|
|
"b_legs" => body
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|