Consultar el registro de llamadas del softswitch (CDR)

El registro de llamadas es accesible mediante servicios web REST. El cliente REST deberá enviar un filtro mediante la composición de un JSON con los parámetros deseados y un límite de registros.

Existe un método para solicitar los registros de llamadas por cuenta (sabiendo el accountId) y otro método para obtener el registro de llamadas de todos las cuentas.

Objeto JSON para el CDR

Un registro de llamada (CDR) estará definido por los siguientes campos en un JSON:

Nombre Descripción Tipo Comentarios
id ID del registro String
accountId ID de cuenta String
accountRef Referencia de la cuenta String
accountDefaultCallerIdNumber Número por defecto con el que se identifica la cuenta String Valor indicado en la cuenta
callerIdNumber Número de origen Formato E164 sin "+"
destinationNumber Número de destino Formato E164 sin "+"
diversionNumber Número que origina el desvío Formato E164 sin "+" null si no hay desvío
direction Dirección de la llamada Enumerado (INBOUND/OUTBOUND)
created Fecha de creación Timestamp en milisegundos Tener en cuenta que sera en la zona horario GMT
duration Segundos de llamada Entero
billsec Segundos de conversación Entero
hangupCause Causa de colgado String
totalPrice Precio total de venta Numérico
totalAgentSellPrice Precio total de venta para el agente Numérico Para comisiones
totalBuyPrice Precio total de compra Numérico
flatRateId ID de tarifa plana aplicado String null si no se ha aplicado tarifa plana
prefixGroupId ID de grupo de prefijo del destino String
prefixGroupName Nombre del grupo de prefijo del destino String
destinationName Nombre del destino String
countryIso2 ISO 2 del país del destino String
freeField1 Valor cabecera "X-Free-Field-1" String
freeField2 Valor cabecera "X-Free-Field-2" String
freeField3 Valor cabecera "X-Free-Field-3" String
freeField4 Valor cabecera "X-Free-Field-4" String
freeField5 Valor cabecera "X-Free-Field-5" String
freeField6 Valor cabecera "X-Free-Field-6" String
freeField7 Valor cabecera "X-Free-Field-7" String
freeField8 Valor cabecera "X-Free-Field-8" String
freeField9 Valor cabecera "X-Free-Field-9" String
freeField10 Valor cabecera "X-Free-Field-10" String
internalDid Did interno Booleano
cdrImported Si el cdr es importado Booleano
providerId ID de proveedor por el que ha entrado o salido la llamada String

Ejemplo de CDR JSON

{
  "internalDid": false,
  "freeField10": null,
  "freeField9": null,
  "freeField8": null,
  "freeField7": null,
  "freeField6": null,
  "freeField5": null,
  "freeField4": null,
  "freeField3": null,
  "freeField2": null,
  "freeField1": null,
  "countryIso2": "ES",
  "billsec": 55,
  "duration": 62,
  "created": 1478096146000,
  "direction": "OUTBOUND",
  "destinationNumber": "34931123123",
  "diversionNumber": null,
  "callerIdNumber": "34966261122",
  "accountId": "96132d2d83ea48d7a566c6eae90b9915",
  "accountRef": "mireferenciainterna",
  "accountRef": null,
  "accountDefaultCallerIdNumber": "34966261122",
  "id": "d771750ebd644a818c290daaaa5debca",
  "hangupCause": "NORMAL_CLEARING",
  "totalPrice": 0.03,
  "totalAgentSellPrice": null,
  "totalBuyPrice": 0.01,
  "flatRateId": null,
  "prefixGroupId": "96132d2d83ea48d7a566c6eae90b9915",
  "prefixGroupName": "España Fijo",
  "destinationName": "Nacional Barcelona"
}

Filtro para el registro de llamadas

En los métodos que permiten un filtro para indicar qué llamadas queremos, siempre se usará el mismo formato de filtro definido aquí.

El filtro serán parámetros pasados en la URL con los siguientes campos:

Nombre Descripción Tipo Comentarios
from Desde fecha timestamp en milisegundos
to Hasta fecha timestamp en milisegundos
billsecFrom Desde los segundos indicados de conversación Entero
billsecTo Hasta los segundos indicados de conversación Entero
skip_hangup_cause Ignorar llamadas con el hangup cause indicado String
direction Dirección de la llamada Entero (0=INBOUND / 1=OUTBOUND)
internal Sólo llamadas a DID's internos Booleano (true)
src Número de origen String Formato E164 sin "+"
dst Número de destino String Formato E164 sin "+"
freeField1 Valor cabecera "X-Free-Field-1" String
offset Offset a partir del cuál obtener los cdrs Entero Para paginación
limit Teniendo en cuenta en offset, el límite de resultados a obtener Entero Para paginación
rangeStart Inicio a partir del cuál se obtendrán los cdrs Entero Para paginación, empieza en 0
rangeStop Final hasta el que se obtendrán los cdrs (excluido) Entero Para paginación

Contar los CDR's de una cuenta

Utilizado el filtro necesario, obtendremos el total de cdr's para ese filtro indicado.

Al utilizar este método podremos obtener los registros de forma "controlada" en lotes no mayores a 5000 registros. Si se desean obtener todos los registros, primero habrá que consultar la cantidad de cdr's disponibles con el filtro indicado (método count) y luego ir pidiendo en lotes no superiores a 5000.

URL

GET /account/<accountId>/cdr/count

Permisos

Acceso a los registros de llamadas de la cuenta del softswitch asignado a la Api Key utilizada.

Respuesta

La respuesta es número con el total de registros para el filtro especificado

Ejemplo

  • Petición indicando en el filtro:
  • cuenta (accountId): 96132d2d83ea48d7a566c6eae90b9915
  • from: 01/11/2016 00:00:00
  • to: 30/11/2016 23:59:59
GET https://ssl.siptize.com/satmakapi/api/v-1.0/account/96132d2d83ea48d7a566c6eae90b9915/cdr/count?from=1477958400000&to=1480550399000
  • Respuesta:
159

Obtener los CDR's de una cuenta

URL

GET /account/<accountId>/cdr

Permisos

Acceso a los registros de llamadas de la cuenta del softswitch asignado a la Api Key utilizada.

Petición

El servicio espera un petición GET con el filtro indicado como parámetros URL e indicando el rango de cdr's que se quiere obtener.

Recomendamos obtener los cdr's en candidades no superiores a 2000 registros.

Ejemplo

  • Petición (mismos datos que el count, pero inidicando el rango que queremos: 159 registros, desde el 0 al 158)
GET https://ssl.siptize.com/satmakapi/api/v-1.0/account/96132d2d83ea48d7a566c6eae90b9915/cdr?from=1477958400000&to=1480550399000&rangeStart=0&rangeStop=158

Respuesta

El servicio web devolverá un JSON consistente en un array de objectos JSON cdr conforme a los filtros especeficados.

Respuesta de ejemplo

[
  {
    "internalDid": true,
    "freeField10": null,
    "freeField9": null,
    "freeField8": null,
    "freeField7": null,
    "freeField6": null,
    "freeField5": null,
    "freeField4": null,
    "freeField3": null,
    "freeField2": null,
    "freeField1": null,
    "countryIso2": "ES",
    "billsec": 8,
    "duration": 15,
    "created": 1478095916000,
    "direction": "INBOUND",
    "destinationNumber": "34966261122",
    "callerIdNumber": "34911123123",
    "accountId": "96132d2d83ea48d7a566c6eae90b9915",
    "accountRef": null,
    "id": "eeced3c71c4c47cba32403a39333eb6f",
    "hangupCause": "NORMAL_CLEARING",
    "totalPrice": 0,
    "totalAgentSellPrice": null,
    "totalBuyPrice": 0,
    "flatRateId": null,
    "prefixGroupId": "4028818b3ee63997013ee5ca61d40002",
    "prefixGroupName": "Geografico",
    "destinationName": "Todo"
  },
  {
    "internalDid": false,
    "freeField10": null,
    "freeField9": null,
    "freeField8": null,
    "freeField7": null,
    "freeField6": null,
    "freeField5": null,
    "freeField4": null,
    "freeField3": null,
    "freeField2": null,
    "freeField1": null,
    "countryIso2": "ES",
    "billsec": 55,
    "duration": 62,
    "created": 1478096146000,
    "direction": "OUTBOUND",
    "destinationNumber": "34931123123",
    "callerIdNumber": "34966261122",
    "accountId": "96132d2d83ea48d7a566c6eae90b9915",
    "accountRef": null,
    "id": "d771750ebd644a818c290daaaa5debca",
    "hangupCause": "NORMAL_CLEARING",
    "totalPrice": 0.03,
    "totalAgentSellPrice": null,
    "totalBuyPrice": 0.01,
    "flatRateId": null,
    "prefixGroupId": "96132d2d83ea48d7a566c6eae90b9915",
    "prefixGroupName": "España Fijo",
    "destinationName": "Nacional Barcelona"
  }
  ...
]

Contar los CDR's del softswitch

Utilizado el filtro necesario, obtendremos el total de cdr's para ese filtro indicado.

Al utilizar este método podremos obtener los registros de forma "controlada" en lotes no mayores a 5000 registros. Si se desean obtener todos los registros, primero habrá que consultar la cantidad de cdr's disponibles con el filtro indicado (método count) y luego ir pidiendo en lotes no superiores a 5000.

URL

GET /cdr/count

Permisos

Acceso a los registros de llamadas del softswitch asignado a la Api Key utilizada.

Respuesta

La respuesta es número con el total de registros para el filtro especificado

Ejemplo

  • Petición indicando en el filtro:
  • from: 01/11/2016 00:00:00
  • to: 30/11/2016 23:59:59
GET https://ssl.siptize.com/satmakapi/api/v-1.0/cdr/count?from=1477958400000&to=1480550399000
  • Respuesta:
159

Obtener los CDR's del softswitch

URL

GET /cdr

Permisos

Acceso a los registros de llamadas del softswitch asignado a la Api Key utilizada.

Petición

El servicio espera un petición GET con el filtro indicado como parámetros URL e indicando el rango de cdr's que se quiere obtener.

Recomendamos obtener los cdr's en candidades no superiores a 2000 registros.

Ejemplo

  • Petición (mismos datos que el count, pero inidicando el rango que queremos: 159 registros, desde el 0 al 158)
GET https://ssl.siptize.com/satmakapi/api/v-1.0/cdr?from=1477958400000&to=1480550399000&rangeStart=0&rangeStop=158

Respuesta

El servicio web devolverá un JSON consistente en un array de objectos JSON cdr conforme a los filtros especificados.

Respuesta de ejemplo

[
  {
    "internalDid": true,
    "freeField10": null,
    "freeField9": null,
    "freeField8": null,
    "freeField7": null,
    "freeField6": null,
    "freeField5": null,
    "freeField4": null,
    "freeField3": null,
    "freeField2": null,
    "freeField1": null,
    "countryIso2": "ES",
    "billsec": 8,
    "duration": 15,
    "created": 1478095916000,
    "direction": "INBOUND",
    "destinationNumber": "34966261122",
    "callerIdNumber": "34911123123",
    "accountId": "96132d2d83ea48d7a566c6eae90b9915",
    "accountRef": null,
    "id": "eeced3c71c4c47cba32403a39333eb6f",
    "hangupCause": "NORMAL_CLEARING",
    "totalPrice": 0,
    "totalAgentSellPrice": null,
    "totalBuyPrice": 0,
    "flatRateId": null,
    "prefixGroupId": "4028818b3ee63997013ee5ca61d40002",
    "prefixGroupName": "Geografico",
    "destinationName": "Todo"
  },
  {
    "internalDid": false,
    "freeField10": null,
    "freeField9": null,
    "freeField8": null,
    "freeField7": null,
    "freeField6": null,
    "freeField5": null,
    "freeField4": null,
    "freeField3": null,
    "freeField2": null,
    "freeField1": null,
    "countryIso2": "ES",
    "billsec": 55,
    "duration": 62,
    "created": 1478096146000,
    "direction": "OUTBOUND",
    "destinationNumber": "34931123123",
    "callerIdNumber": "34966261122",
    "accountId": "96132d2d83ea48d7a566c6eae90b9915",
    "accountRef": null,
    "id": "d771750ebd644a818c290daaaa5debca",
    "hangupCause": "NORMAL_CLEARING",
    "totalPrice": 0.03,
    "totalAgentSellPrice": null,
    "totalBuyPrice": 0.01,
    "flatRateId": null,
    "prefixGroupId": "96132d2d83ea48d7a566c6eae90b9915",
    "prefixGroupName": "España Fijo",
    "destinationName": "Nacional Barcelona"
  }
  ...
]