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"
}
...
]