Topic blueworx.cdr

The blueworx.cdr topic contains both Call and Conference Detail Records (CDRs)

Note: The topic name used can be changed using the topic_cdr parameter described in Kafka Configuration Options

Call Detail Records are created after a successful call.

The blueworx.cdr topic supports the following headers.

Table 1. Headers for blueworx.cdr
Header Value
Type Call or Conference

Call

A single call entry is generated for each successful call processed by BVR.

Table 2. JSON for Call Detail Record
Name Type Optional Description
type string No Always contains "Call"
callIndex string No Call index on the BVR
callIndexFull string No Call index unique across all BVRs
applicationUUID uuid No Application unique instance handling the call
launchedType string No How the call was launched, one of INBOUND_CALL, OUTBOUND_API
accountId string No Account handling the call
start date No Call start time/date
startEpoch epoch No Call start epoch time
end date No Call end time/date
endEpoch epoch No Call end epoch time
duration duration No Call duration
miscellaneousDuration duration No Call duration outside of a conference
conferenceDuration duration No Call duration during a conference
tts object No TTS Media Resource
asr object No ASR Media Resource
stt object No STT Media Resource
amazon object No Amazon Resource
ibm object No IBM Resource
google object No Google Resource
record object No SIPREC Record information
tromboneStreamDuration duration No Time spent tromboned to another RTP stream
dialogs array No List of dialogs Resource Information
direction string No Inbound or Outbound call
ani string No ANI/user of caller
dnis string No DNIS/user of called/BVR
terminationReason string No Call Termination Reason - listed below
conferenceId string No Last conference index if the call was in a conference
bvrMachine string No Local host IP Address of the BVR
applicationId string No Application handling the call
from uri No SIP URI of caller
to uri No SIP URI of called/BVR
sip object No SIP Information
xml object No Initial/final Call XML

Call Termination Reason

List of the call termination reasons.

Table 3. Call Termination Reason
Value Description
Far end hangup Remote party has hung up
Far end reject Remote party has rejected the call
Busy Remote party is busy
Near end hangup BVR has hung up
Near end reject BVR has rejected the call
Attended transfer Call was transferred
Blind transfer Call was transferred
Proxy auth failed SIP proxy authentication failed
WWW auth failed SIP proxy authentication failed
Force quit Forced BVR shutdown

Amazon

Information about the Amazon resource.

Table 4. JSON for Amazon
Name Type Optional Description
tts object No TTS Media Resource
virtual_assistant object No Virtual Assistant Media Resource

IBM

Information about the IBM Watson resource.

Table 5. JSON for IBM
Name Type Optional Description
stt object No STT Media Resource
tts object No TTS Media Resource
virtual_assistant object No Virtual Assistant Media Resource

Google

Information about the Google resource.

Table 6. JSON for Google
Name Type Optional Description
stt object No STT Media Resource
tts object No TTS Media Resource
virtual_assistant object No Virtual Assistant Media Resource

Media Resource

Information about a type of media resource, for example TTS. The durations are the totals across all sub resources. If multiple locales are used the total across all locales is here. The breakdown of the specific locales is within the resources array.

Table 7. JSON for Media Resource
Name Type Optional Description
sessionDuration duration No Duration of the media session
sessionUsage number No Usage of the media session
streamDuration duration No Duration of the RTP stream
streamUsage number No Usage of the RTP stream
resources array No List of Media Subresource

Media Subresource

Information about a particular media subresource, for example TTS on a specific locale.

Table 8. JSON for Media Subresource
Name Type Optional Description
locale string Yes Configured locale of the media resource
callFeatureId number Yes Call feature ID of the media resource
sessionDuration duration No Duration of the media session
sessionUsage number No Usage of the media session
streamDuration duration No Duration of the RTP stream
streamUsage number No Usage of the RTP stream

Recording

Information about SIPRec recording. This is entirely SIPRec based recording and does not contain any information concerning recordings via VXML.

Table 9. JSON for Recording
Name Type Optional Description
sessionDuration duration No Duration of the SIPREC session/call
inboundStreamDuration duration No Duration of the recording of the inbound RTP stream
outboundStreamDuration duration No Duration of the recording of the outbound RTP stream
session object No SIPREC Session Resource Information
inbound object No Inbound RTP Resource Information
outbound object No Outbound RTP Resource Information

Call XML

The initial and termination XML documents processed for this call.

Table 10. JSON for Call XML
Name Type Optional Description
initial string No Initial XML document parsed by the call
terminate string No Final XML document parsed by the call

Resource Information

Information about a specific type of resource, this can be dialog's or record related resources.

Table 11. JSON for Resource Information
Name Type Optional Description
name string Yes Resource name
usage number No Number of times the resource is used
duration duration No Total duration
start date No Start time/date
startEpoch epoch No Start epoch time
end date No End time/date
endEpoch epoch No End epoch time

SIP Information

Information about call SIP session.

Table 12. JSON for SIP Information
Name Type Optional Description
user string No SIP user
callId string No SIP CallId
to object No To SIP Address
from object No From SIP Address
proxy string No Configured SIP proxy group
headers array No List of SIP headers
rtp object No SIP RTP Information

SIP Address

Information about the SIP address.

Table 13. JSON for SIP Address
Name Type Optional Description
uri uri No SIP URI
header string No SIP header value
user string No SIP user

RTP Information

Information about the RTP session.

Table 14. JSON for RTP Information
Name Type Optional Description
local object No Local IP Address
remote object No Remote IP Address

IP Address

IP address information.

Table 15. JSON for IP Address
Name Type Optional Description
ip string No Host or IP address
port number No Port number

Example

{
    "type": "Call",
    "callIndex": "091431A800000001",
    "callIndexFull": "9.20.49.168-20210211104628-091431A800000001",
    "applicationUUID": "008e8779-aa8a-4080-9bbc-808517e9248e",
    "launchedType": "INBOUND_CALL",
    "accountId": "0x00000000",
    "start": "2021-02-11 10:46:28.182",
    "startEpoch": 1613058388182,
    "end": "2021-02-11 10:46:46.345",
    "endEpoch": 1613058406345,
    "duration": 18163,
    "miscellaneousDuration": 18163,
    "conferenceDuration": 0,
    "tts": {
        "resources": [],
        "sessionDuration": 0,
        "sessionUsage": 0,
        "streamDuration": 0,
        "streamUsage": 0
    },
    "asr": {
        "resources": [],
        "sessionDuration": 0,
        "sessionUsage": 0,
        "streamDuration": 0,
        "streamUsage": 0
    },
    "stt": {
        "resources": [],
        "sessionDuration": 0,
        "sessionUsage": 0,
        "streamDuration": 0,
        "streamUsage": 0
    },
    "polly": {
        "tts": {
            "resources": [],
            "sessionDuration": 0,
            "sessionUsage": 0,
            "streamDuration": 0,
            "streamUsage": 0
        }
    },
    "watson": {
        "stt": {
            "resources": [],
            "sessionDuration": 0,
            "sessionUsage": 0,
            "streamDuration": 0,
            "streamUsage": 0
        },
        "tts": {
            "resources": [],
            "sessionDuration": 0,
            "sessionUsage": 0,
            "streamDuration": 0,
            "streamUsage": 0
        },
        "assistant": {
            "resources": [],
            "sessionDuration": 0,
            "sessionUsage": 0,
            "streamDuration": 0,
            "streamUsage": 0
        }
    },
    "google": {
        "stt": {
            "resources": [],
            "sessionDuration": 0,
            "sessionUsage": 0,
            "streamDuration": 0,
            "streamUsage": 0
        },
        "tts": {
            "resources": [],
            "sessionDuration": 0,
            "sessionUsage": 0,
            "streamDuration": 0,
            "streamUsage": 0
        },
        "dialogflow": {
            "resources": [
                {
                    "sessionDuration": 17139,
                    "sessionUsage": 1,
                    "streamDuration": 11016,
                    "streamUsage": 3
                }
            ],
            "sessionDuration": 17139,
            "sessionUsage": 1,
            "streamDuration": 11016,
            "streamUsage": 3
        }
    },
    "record": {
        "sessionDuration": 0,
        "inboundStreamDuration": 0,
        "outboundStreamDuration": 0,
        "session": {
            "usage": 0,
            "duration": 0
        },
        "inbound": {
            "usage": 0,
            "duration": 0
        },
        "outbound": {
            "usage": 0,
            "duration": 0
        }
    },
    "tromboneStreamDuration": 0,
    "dialogs": [
        {
            "name": "CCXML",
            "usage": 1,
            "duration": 18059,
            "start": "2021-02-11 10:46:28.265",
            "startEpoch": 1613058388265,
            "end": "2021-02-11 10:46:46.324",
            "endEpoch": 1613058406324
        },
        {
            "name": "DialogFlow",
            "usage": 1,
            "duration": 17033,
            "start": "2021-02-11 10:46:29.291",
            "startEpoch": 1613058389291,
            "end": "2021-02-11 10:46:46.324",
            "endEpoch": 1613058406324
        }
    ],
    "direction": "Inbound",
    "ani": "phil",
    "dnis": "dialogflow",
    "terminationReason": "Far end hangup",
    "conferenceId": "N/A",
    "bvrMachine": "9.20.49.168",
    "applicationId": "0x00000013",
    "from": "sip:phil@10.12.12.7:5060;transport=udp",
    "to": "sip:dialogflow@mortyphilcos8",
    "sip": {
        "user": "dialogflow",
        "callId": "fc8627bb006e1d0e8f8b3cb6236ca6ff@0:0:0:0:0:0:0:0",
        "to": {
            "uri": "sip:dialogflow@mortyphilcos8",
            "header": "<sip:dialogflow@mortyphilcos8>",
            "user": "dialogflow"
        },
        "from": {
            "uri": "sip:phil@10.12.12.7:5060;transport=udp",
            "header": "phil <sip:phil@10.12.12.7:5060;transport=udp>",
            "user": "phil"
        },
        "proxy": "inbound_call_proxy_group",
        "headers": {
            "Call-ID": "fc8627bb006e1d0e8f8b3cb6236ca6ff@0:0:0:0:0:0:0:0",
            "CSeq": "1 INVITE",
            "Max-Forwards": "70",
            "User-Agent": "Jitsi2.10.5550Windows 10",
            "From": "phil <sip:phil@10.12.12.7:5060;transport=udp>;tag=500a7d71",
            "To": "<sip:dialogflow@mortyphilcos8>",
            "Content-Length": "323",
            "req": "sip:dialogflow@mortyphilcos8",
            "Contact": "phil <sip:phil@10.12.12.7:5060;transport=udp>",
            "Content-Type": "application/sdp",
            "Via": "SIP/2.0/UDP 10.12.12.7:5060;branch=z9hG4bK-313030-ebc6eda47ec0433f24f7bb13be6200b5;received=10.12.12.7"
        },
        "rtp": {
            "local": {
                "ip": "mortyphilcos8.hursley.blueworx.com/9.20.49.168",
                "port": 56126
            },
            "remote": {
                "ip": "/10.12.12.7",
                "port": 5012
            }
        }
    },
    "xml": {
        "initial": "file:///bvr_apps/DialogFlowSample.ccxml",
        "terminate": "file:///bvr_apps/DialogFlowSample.ccxml"
    }
}

When BVR handles a bridge transfer, Conference Detail Records are logged, in addition to Call Detail Records.

Conference

A single conference entry is generated for each completed conference. The members contains a list of all the parties involved in the conference.

Table 16. JSON for Conference
Name Type Optional Description
type string No Always contains "Conference"
conferenceId string No Conference index unique across all BVRs
accountId string No Account handling the conference
applicationId string No Application handling the conference
applicationUUID uuid No Application unique instance handling the conference
start date No Conference start time/date
startEpoch epoch No Conference start epoch time
end date No Conference end time/date
endEpoch epoch No Conference end epoch time
duration duration No Total duration
members array No List of conference members - see below Conference Member

Conference Member

Information about a particular conference member.

Table 17. JSON for Conference Member
Name Type Optional Description
callIndex string No Call index on the BVR
callIndexFull string No Call index unique across all BVRs
start date No Call start time/date
startEpoch epoch No Call start epoch time
end date No Call end time/date
endEpoch epoch No Call end epoch time

Example

{
    "members":[
        {
            "callIndex":"0102030400000001",
            "callIndexFull":"1.2.3.4-20180628145856-0102030400000001",
            "start": "2021-02-11 10:46:28.182",
            "startEpoch": 1613058388182,
            "end": "2021-02-11 10:46:46.345",
            "endEpoch": 1613058406345,
        },
        {
            "callIndex":"0102030400000002",
            "callIndexFull":"1.2.3.4-20180628145902-0102030400000002",
            "start": "2021-02-11 10:46:28.182",
            "startEpoch": 1613058388182,
            "end": "2021-02-11 10:46:46.345",
            "endEpoch": 1613058406345,
        }
    ],
    "conferenceId":"1.2.3.4-20180628145902-00000000",
    "applicationUUID": "008e8779-aa8a-4080-9bbc-808517e9248e",
    "applicationId": "0x00000013",
    "accountId": "0x00000000",
    "start": "2021-02-11 10:46:28.182",
    "startEpoch": 1613058388182,
    "end": "2021-02-11 10:46:46.345",
    "endEpoch": 1613058406345,
    "duration":3560,
    "type":"Conference"
}