FreeSWITCH CDRs
[video]
freeswitch cuenta con varios modulos para manejar los cdrs (call detail records) y registrar todas las llamadas, en todos ellos es importante tener en cuenta que freeswitch maneja sesiones, y una llamada consta de una sesion de entrada y una de salida, comunmente conocidas como leg-a y leg-b. por default solo se almacena el leg-b, per0 se puede configurar que se almacenen ambos legs.
Por esto es una buena opcion segmentar o particionar, un solo equipo de freeswitch entre varios clientes.
CSV
Para activar los cdrs en formato csv es necesario cargar el modulo.
freeswitch@dev4fs> load mod_cdr_csv
Previo a esto configuramos el modulo de la siguiente manera:
<configuration name="cdr_csv.conf" description="CDR CSV Format">
<settings>
<param name="default-template" value="example"/>
<param name="rotate-on-hup" value="true"/>
<param name="legs" value="ab"/>
</settings>
<templates>
<template name="example">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}"</template>
</templates>
</configuration>
XML
Para activar los cdrs en formato xml es necesario cargar el modulo.
freeswitch@dev4fs> load mod_xml_cdr
Previo a esto configuramos el modulo de la siguiente manera:
<configuration name="xml_cdr.conf" description="XML CDR logger">
<settings>
<param name="log-dir" value=""/>
<param name="log-b-leg" value="true"/>
<param name="prefix-a-leg" value="true"/>
<param name="encode" value="true"/>
</settings>
</configuration>
JSON
Para activar los cdrs en formato json es necesario cargar el modulo.
freeswitch@dev4fs> load mod_json_cdr
Previo a esto configuramos el modulo de la siguiente manera:
<configuration name="json_cdr.conf" description="JSON CDR">
<settings>
<param name="log-b-leg" value="true"/>
<param name="prefix-a-leg" value="false"/>
<param name="encode-values" value="true"/>
<param name="log-http-and-disk" value="true"/>
<param name="log-dir" value=""/>
<param name="rotate" value="false"/>
<param name="url" value=""/>
<param name="auth-scheme" value="basic"/>
<param name="cred" value="string"/>
<param name="encode" value="base64|true|false"/>
<param name="retries" value="0"/>
<param name="delay" value="5000"/>
<param name="disable-100-continue" value="false"/>
<param name="err-log-dir" value=""/>
<param name="ssl-key-path" value=""/>
<param name="ssl-key-password" value=""/>
<param name="ssl-version" value=""/>
<param name="enable-ssl-verifyhost" value="false"/>
<param name="ssl-cert-path" value=""/>
<param name="enable-cacert-check" value="false"/>
<param name="ssl-cacert-file" value=""/>
</settings>
</configuration>
SQLlite
Para que freeswitch almacene los cdrs dentro de una base de datos sqllite cargamos el modulo:
freeswitch@dev4fs> load mod_cdr_sqlite
Previo a esto configuramos el modulo de la siguiente manera:
<configuration name="cdr_sqlite.conf" description="SQLite CDR">
<settings>
<param name="dev4-freeswitch" value="cdr"/>
<param name="db-table" value="cdr"/>
<param name="legs" value="ab"/>
<param name="default-template" value="example"/>
<param name="debug" value="true"/>
</settings>
<templates>
<template name="example">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}",${duration},${billsec},"${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}"</template>
</templates>
</configuration>
Mongodb
Para que freeswitch almacene los cdrs dentro de una base de datos mongodb cargamos el modulo:
freeswitch@dev4fs> load mod_cdr_mongodb
Previo a esto configuramos el modulo de la siguiente manera:
<configuration name="cdr_mongodb.conf" description="MongoDB CDR logger">
<settings>
<param name="host" value="127.0.0.1"/>
<param name="port" value="27017"/>
<param name="namespace" value="freeswitch.cdrs"/>
<param name="log-b-leg" value="true"/>
</settings>
</configuration>
Conclusión
Freeswitch cuenta con soporte para varios formatos y motores de base de datos para almacenar los cdrs, asi como tanbien nos permite customizar los campos/variables que queremos que se guarden, para mas información se recomienda consultar la documentacion oficial de freeswitch.
Julio Carranza