Mobile-Originated Call Inputs and Mappings

The TAP3 JSON Kafka CDR Consumer requires a specific JSON input format and mapping rules for TAP3 mobile-originated call events.

Input Format

The following is an example mobile-originated call JSON file. The JSON consists of only a subset of mobile-originated call TAP3 definitions.
{
  "mobileOriginatedCall": {
    "basicCallInformation": {
      "chargeableSubscriber": {
        "simChargeableSubscriber": {
          "imsi": "250270000370016",
          "msisdn": "79047186350"
        }
      },
      "destination": {
        "calledNumber": "79869528070"
      },
      "callEventStartTimeStamp": {
        "localTimeStamp": "20151203105032",
        "utcTimeOffset": "+0300"
      }
    },
    "locationInformation": {
      "networkLocation": {
        "cellId": 57717
      }
    },
    "equipmentIdentifier": {
      "imei": "866369021397230"
    },
    "basicServiceUsedList": [
      {
        "chargeInformationList": [
          {
            "chargedItem": "D",
            "chargeDetailList": [
              {
                "charge": 3.3299,
                "chargeableUnits": 143
              }
            ]
          }
        ]
      }
    ]
  }
}

Mapping Rules

Mapping Rules describes the mapping rules for processing the JSON input.
Table 1. Mapping Rules
JSON Field Required? Data Type MtxDiamRoMsg Field/Description Example
basicCallInformation: Y
‒ chargeableSubscriber Y
‒‒ simChargeableSubcriber: Y
‒‒‒ imsi Y string MtxDiamRoMsg.imsi 250270000370016
‒‒‒ msisdn N string MtxDiamRoMsg.accessNumber, MtxDiamRoMsg.callingStationId 79047186350
‒ destination: N
‒‒ calledNumber N string MtxDiamRoMsg.calledStationId 79869528070
‒ callEventStartTimeStamp Y
‒‒ localTimeStamp Y string MtxDiamRoMsg.eventTime

(Local timestamps are in YYYYMMDDhhmmss format.)

20151203105032
‒‒ utcTimeOffset Y string MtxDiamRoMsg.eventTime

(UTC time offsets are in +/-HHMM format, within the range ‒1300 to +1400 in steps of 15MM (minutes).)

+-300
locationInformation: N
‒ networkLocation: N
‒‒ cellId N integer MtxDiamRoMsg.callingTowerId 57717
equipmentIdentifier: Y
‒ imei Y string MtxDiamRoMsg.deviceId 866369021397230
basicServiceUsedList: Y list
‒ chargeInformationList: Y list
‒ chargeItem Y string The value that determines whether the event is voice or text:
  • A, D, and F are voice usage and set MtxDiamRoMsg.op to 4 and MtxDiamRoMsg.serviceTypeObjectId to 3.
  • E is text usage and sets MtxDiamRoMsg.op to 1 and MtxDiamRoMsg.serviceTypeObjectId to 4.
D
‒‒ chargeDetailList: Y list
‒‒‒ charge Y number MtxDiamRoMsg.costInfo.unitValue (If multiple charges are in the message, they are summed.) 3.3299
‒‒‒ chargeableUnits N integer For voice usage, this data is set in the MtxDiamRoMsg.multiServiceList[x].usedQuantityList[y].actualDurationQuantity field, and the following flags are added:
  • MtxDiamRoMsg.multiServiceList[x].usedQuantityList[y].durationUnit = 100
  • MtxDiamRoMsg.multiServiceList[x].serviceId = 1

For text usage, this data is set in the MtxDiamRoMsg.multiServiceList[m].usedQuantityList[n].quantity field, and the MtxDiamRoMsg.multiServiceList[x].serviceId = 1 is added.

143

Example Mapped MtxDiamRoMsg Message

This example of an MtxDiamRoMsg message follows the mapping rules. The message is sent to MATRIXX Engine for rating:
{
  "$" : "MtxDiamRoMsg",
  "Op" : 4,
  "ApplicationId" : 3,
  "DiamOp" : 271,
  "SessionId" : "kafka-d3fddd168585-1662543322;1",
  "Imsi" : "250270000370016",
  "AccessNumber" : "79047186350",
  "DeviceId" : "866369021397230",
  "ServiceTypeObjectId" : 3,
  "CallingStationId" : "79047186350",
  "CalledStationId" : "79869528070",
  "MultiServiceList" : [ {
    "$" : "MtxMultiServiceData",
    "UsedQuantityList" : [ {
      "$" : "MtxUsedQuantityData",
      "ActualDurationQuantity" : 143,
      "DurationUnit" : 100
    } ],
    "ServiceId" : 1
  } ],
  "EventTime" : "2015-12-03T10:50:32+03:00",
  "CallingTowerId" : 57717,
  "CostInfo" : {
    "$" : "MtxDiamCostInfoData",
    "UnitValue" : 3.3299
  }
}