# Cisco Callmanager CDR Events Webhooks

# Feature Overview

The CDR (Call Detail Record) Events Webhooks feature allows you to send Cisco Call Accounting data to any JSON API endpoint. You can define triggers for any CDR event, and send the payload to any JSON API. For example, you could trigger on missed calls, duration over 5 minutes, calls to certain numbers like your call center, or send followup call data to your CRM or ticketing system.

# Feature Requirements

# Create a new CDR Webhook

In this step you will create a new webhook, and define the conditions for triggering the webhook. You can choose any field in the Cisco Callmanager CDR Schema shown.

Follow the steps below to create a new webhook:

  1. Accessing Webhooks: Navigate to the CDR Sidebar within the Cisco Callmanager interface and select the Webhooks from the sidebar.

  2. Creating a New Webhook: Click the Add button to initiate the creation of a new webhook.

  3. Webhook Configuration:

    • Name: Provide a descriptive name for the webhook.
    • Destination URL: Specify the destination URL where the JSON payload will be sent.
    • Triggering Conditions: Define triggering conditions using logical AND operators.
    • Meta Data: optional data you enter that you want to include to your API under the meta key.
    • Custom Headers: Any other optional headers, like authentication.

Screenshot showing custom webhook headers

# Verification and Webhook Statistics

Once you have created a webhook, you can view the webhook hit counts, and last hit. You must be sending CDR data to the Call Telemetry server to see these statistics.

Below is an example of viewing the webhook hit counts:

Screenshot showing CDR webhook hits and statistics

# Customizing the Webhook Payload

The webhook payload will include 3 keys. All keys will be fully rendered as JSON keys. This payload will be uplaoded as a POST to your destination URL.

Payload structure:

  • meta: Metadata defined during webhook configuration.
  • cdr: Raw CDR payload capturing the triggering event.
  • name: Identifier for the webhook.

# Example Webhook Payload

This is an example showing a full example payload of a CDR Webhook for reference.

{
    "cdr": {
        "lastRedirectRedirectReason": "0",
        "destPrecedenceLevel": "4",
        "destMediaCap_maxFramesPerPacket": "0",
        "destNodeId": "1",
        "origRoutingReason": "0",
        "authorizationLevel": "0",
        "destIpAddr": "1048291520",
        "origPrecedenceLevel": "4",
        "destCause_location": "0",
        "globalCallID_callManagerId": "1",
        "destVideoCap_Resolution": "0",
        "origIpAddr": "1048291520",
        "dateTimeOrigination": "2023-11-06T14:57:22Z",
        "destMediaCap_Bandwidth": "0",
        "origVideoCap_Bandwidth_Channel2": "0",
        "origCause_value": "16",
        "globalCallId_ClusterID": "StandAloneCluster",
        "totalWaitTimeInQueue": "0",
        "origMobileCallDuration": "0",
        "destRSVPAudioStat": "0",
        "destDeviceName": "SEP20BBC020AAAA",
        "origMediaCap_payloadCapability": "0",
        "origMediaCap_maxFramesPerPacket": "0",
        "destVideoTransportAddress_IP": "0",
        "destVideoTransportAddress_IP_Channel2": "0",
        "destMediaCap_g723BitRate": "0",
        "lastRedirectingRoutingReason": "0",
        "dateTimeDisconnect": "2023-11-06T14:57:25Z",
        "destVideoCap_Bandwidth": "0",
        "origLegCallIdentifier": "19111441",
        "destConversationId": "0",
        "origVideoTransportAddress_IP": "0",
        "origCalledPartyRedirectReason": "0",
        "origConversationId": "0",
        "origRSVPVideoStat": "0",
        "destVideoCap_Bandwidth_Channel2": "0",
        "destRSVPVideoStat": "0",
        "destCallTerminationOnBehalfOf": "0",
        "origVideoCap_Resolution_Channel2": "0",
        "origVideoCap_Resolution": "0",
        "origMediaCap_g723BitRate": "0",
        "origVideoTransportAddress_Port": "0",
        "origVideoTransportAddress_Port_Channel2": "0",
        "destVideoChannel_Role_Channel2": "0",
        "origMediaTransportAddress_Port": "0",
        "origDeviceName": "SEP20BBC020AAAA",
        "calledPartyPatternUsage": "2",
        "wasCallQueued": "0",
        "origVideoCap_Codec": "0",
        "originalCalledPartyNumber": "1000",
        "origIpv4v6Addr": "192.168.123.62",
        "dateTimeConnect": "Never",
        "origCalledPartyRedirectOnBehalfOf": "0",
        "destVideoCap_Codec": "0",
        "origVideoCap_Codec_Channel2": "0",
        "destDTMFMethod": "3",
        "globalCallID_callId": "28001",
        "origRSVPAudioStat": "0",
        "originalCalledPartyPattern": "1000",
        "finalCalledPartyNumber": "1000",
        "mobileCallType": "0",
        "cdrRecordType": "1",
        "callSecuredStatus": "0",
        "origVideoCap_Bandwidth": "0",
        "lastRedirectDn": "1000",
        "destVideoCap_Resolution_Channel2": "0",
        "origVideoChannel_Role_Channel2": "0",
        "destVideoCap_Codec_Channel2": "0",
        "lastRedirectRedirectOnBehalfOf": "0",
        "currentRoutingReason": "0",
        "joinOnBehalfOf": "0",
        "pkid": "1a9eef3d-408d-4f7a-8cfe-dbc40eb59f17",
        "origVideoTransportAddress_IP_Channel2": "0",
        "destMediaTransportAddress_IP": "0",
        "origDTMFMethod": "3",
        "destVideoTransportAddress_Port_Channel2": "0",
        "origNodeId": "1",
        "destMediaTransportAddress_Port": "0",
        "origSpan": "0",
        "destLegIdentifier": "19111442",
        "origMediaTransportAddress_IP": "0",
        "origCause_location": "0",
        "lastRedirectingPartyPattern": "1000",
        "callingPartyNumber": "1000",
        "origCallTerminationOnBehalfOf": "12",
        "finalCalledPartyPattern": "1000",
        "destMobileCallDuration": "0",
        "destCause_value": "0",
        "destVideoTransportAddress_Port": "0",
        "destSpan": "0",
        "origMediaCap_Bandwidth": "0",
        "duration": 0,
        "destMediaCap_payloadCapability": "0"
    },
    "meta": {
        "event": "missed call"
    },
    "name": "Caller ID Webhook"
}
Last Updated: 3/11/2024, 1:48:42 PM