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