Le CDR ou Call Detail Record est une fonctionnalité d’Asterisk qui permet de recueillir des informations sur les appels qui transitent par le serveur.
Ces informations peuvent ensuite être utilisées pour facturer les appels surtaxés, ou bien simplement à des fins d’analyse.
1) Fonctionnement
Comme évoqué en introduction, le Call Detail Record permet de collecter toute une série d’informations sur les appels qui transitent par notre serveur Asterisk.
Dans ces informations, nous retrouvons par exemple :
- La source de l’appel
- La destination de l’appel
- La date de l’appel
- La durée de l’appel
- Etc…
Ces informations peuvent être extraites soit dans un fichier CSV, soit dans une base MySQL.
Par défaut, Asterisk est configuré pour collecter les données dans un fichier CSV.
Le CDR est souvent utilisé pour facturer les appels surtaxés aux appelants.
Mais il existe aussi un grand nombre d’outils permettant d’analyser les données, et de restituer des rapports comportant des graphiques, etc…
2) Configuration
La configuration du CDR est à faire dans le fichier cdr.conf.
Voici la configuration de base (normalement) déjà présente dans le fichier :
[csv] usegmtime=yes ; log date/time in GMT. Default is "no" loguniqueid=yes ; log uniqueid. Default is "no" loguserfield=yes ; log user field. Default is "no" accountlogs=yes ; create separate log file for each account code. Default is "yes"
Il faut également modifier le fichier cdr_manager.conf comme ceci :
[general] enabled = yes
Si le module CDR n’est pas encore chargé dans Asterisk, il est possible de le charger comme ceci :
asterisk -rvv module load cdr_csv.so
Pour stocker les données dans une base de donnéesMySQ, le fichier cdr_mysql.conf doit être rempli.
Bien entendu, cette base de données devra contenir une table à même de recevoir les données, c’est-à-dire qu’elle doit comporter les bonnes colonnes, avec le bon format de données, etc…
Asterisk ne supporte que les bases SQL par défaut. Mais il existe des modules permettant la connexion à des bases Oracle, PostgreSQL, etc…
Quant au fichier CSV qui contient les données, il s’agit du fichier suivant : /var/log/asterisk/cdr-csv/Master.csv
Les données de ce fichier sont séparées par des virgules.
Vous pouvez donc ouvrir ce fichier avec un tableur tel qu’Excel, afin d’obtenir une meilleure lisibilité.
Voici un extrait du fichier Master.csv après deux appels, avec le nom des colonnes :
Parmi les colonnes, nous retrouvons :
- Clid : l’ID de l’appelant
- Start : date de début de l’appel
- Answer : date de la réponse
- End : date de fin de l’appel
- Duration : durée total de l’appel
- Billsec : durée de l’appel après décrochage
Le champ Disposition peut prendre les valeurs suivantes :
- NO ANSWER
- CONGESTION
- FAILED
- BUSY
- ANSWERED
Vous conviendrez que l’analyse du fichier CSV peut dépanner, mais que l’utilisation d’un outil d’analyse dédié, permettra une analyse bien plus poussée.
Bien entendu, ces outils nécessitent que les données soient stockées dans une base de données.
Grand merci pour ce grand travail abattu pour nous produire ce lab, il est pour moi un sauveur et m’a énormément aidé. Merci et encore d’autres s’il vous plais.
merci pour ce travail
mais je veut savoir si on peut stocker ce fichier cdr (Master.csv) dans une base déja existante
en particulier dans ma base symfony ???
Bonjour,
Je ne comprends pas bien ce que vous souhaitez faire.
salut
merci pour la clarté de ce tutot.
vous n’avez pas d’idée sur asterisk-stat qui nous permet d’avoir le CDR sous forme de tableau