Asterisk + Interface WEB pour écouter les conversations téléphoniques enregistrées

Si vous avez mis en place les enregistrements de conversations téléphoniques en Asterisk, il est très pratique d’utiliser une interface WEB pour voire toutes les conversations avec la possibilité d’écouter ou de télécharger les fichiers enregistrés depuis WEB.

Pour ce but on peut utiliser la solution Asterisk-CDR-Viewer, qu’on a déjà parlé dans cet article.
Mais il faut faire quelques modifications dans le Dialplan, ajouter le flashplayer dans l’interface WEB et protéger notre page WEB.

Pré requis :
– le CDR et la base de données MySQL doivent être déjà en place dans Asterisk (Intégration de la solution CDR dans Asterisk).
– Serveur Web Apache avec le support de PHP

webinterface

1. On ajoute la nouvelle colonne « filename » dans notre tableau CDR :

# mysql –p

mysql> use asterisk ;

mysql> alter table `cdr` add column `filename` varchar(120) after `userfield`;

mysql>alter table cdr alter filename set default `none`;

mysql> describe cdr;

2. Dans le fichier extensions.conf on va créer la macro StartRecord.
Les conversations seront enregistrées dans le dossier /records/mp3. On les attribuera le nom suivant : « uniqueID-date-time-source(callerID)-destination »

Exemple :

1410260102.64-2014-09-09-12_55-4000-2000.mp3

[macro-StartRecord]

exten => s,1,NoOp ; permet d’afficher, dans la console Asterisk, ce qui se passe

same => n,Set(fname=/records/mp3/${STRFTIME(${EPOCH},,${CDR(uniqueid)}-%Y-%m-%d-%H_%M)}-${CALLERID(num)}-${CDR(dst)}) ; nous définissons le nom de fichier et le dossier d’enregistrement

same => n,Set(CDR(filename)=${STRFTIME(${EPOCH},,${CDR(uniqueid)}-%Y-%m-%d-%H_%M)}-${CALLERID(num)}-${CDR(dst)}.mp3) ; on ajoute les données attribués dans le CDR

same => n,Set(MONITOR_OPT=nice -n 19 /usr/bin/lame -b 16 –silent « ${fname}.wav » « ${fname}.mp3 » && rm -f « ${fname}.wav ») ; cet option permet de convertir wav en mp3

same => n,MixMonitor(${fname}.wav,b,${MONITOR_OPT}) ;on commence l’enregistrement avec le nom prédéfini, à la fin il sera convertis wav en mp3

Au début toutes les fichiers seront stockées dans le dossier /records/mp3/. Plus tard on va créer le script de rangements des fichiers dans les dossiers structurés par la date.

On ajoute le plan de numération (exemple simple) :

exten => _0033XXXXXXXXX, 1,Macro(StartRecord)

same => n,Dial(SIP/pstn/${EXTEN})

same => n,Hangup()

3. On va créer le scripte de rangements des fichiers de mp3 enregistrés dans les dossiers structurés par la date.

# nano /records/mp3/mvrecords.sh
# chmod +x /records/mp3/mvrecords.sh

#!/bin/bash
ym=`date +%Y-%m -%d "-1 day"`
ymd=`date +%Y-%m-%d -d "-1 day"`
mkdir -p /records/mp3/$ym/$ymd/
mv /records/mp3/*$ymd* /records/mp3/$ym/$ymd/

On l’ajoute dans « cron » pour démarrage automatique

# crontab -e

00 23 * * * /records/mp3/mvrecords.sh

Chaque soir le script sera lancé pour ranger les fichiers mp3 dans les dossiers structurés par date

4. On s’occupe de notre interface WEB.
On va créer le nouvel hôte virtuel. Il existe les différentes méthodes pour le mettre en place mais on va utiliser l’hôte virtuel basé sur le nom. On lui attribue le nom d’asteriskcdr
Dans le fichier /etc/hosts il faut ajouter le nouveau hôte :

# nano /etc/hosts

On va créer le dossier asteriskcdr :

# mkdir /var/www/asteriskcdr

Dans le dossier /etc/apache2/sites-available/ il faut créer le fichier asteriskcdr

# nano /etc/apache2/sites-available/asteriskcdr

<VirtualHost *:80>

ServerName asteriskcdr
ServerAlias asteriskcdr

DocumentRoot /var/www/asteriskcdr

</VirtualHost>

Maintenant il faut faire le lien de fichier nouvellement créé dans le dossier /etc/apache2/sites-enabled.

# sudo a2ensite asteriskcdr

On recharge la configuration d’Apache :

# service apache2 reload

Il faut vérifier si le paquet php5-mysql est bien installé, si non :

# sudo apt-get install php5-mysql

On télécharge le module modifié « asteriskcdrWEB » et on le décompresse dans le dossier /var/www/ :

# cd /var/www/
# wget http://tsrit.16mb.com/wp-content/uploads/2014/09/asteriskcdrWEB.tar.gz

# tar –xvf asteriskcdrWEB.tar.gz

Pour se connecter à notre base de données MySQL il faut configurer le fichier /var/www/asteriskcdr/include/config.inc.php

Sans le dossier /var/www/asteriskcdr il faut faire un lient sur nos fichiers mp3 :

# ln -s /records/mp3/ /var/www/asteriskcdr/

On ouvre le lien http://ip_asterik/asteriskcdr :

5. On va sécuriser notre interface WEB. Je donne un exemple simple de la protection, mais vous pouvez utiliser le protocole ssl pour la sécurisation plus forte.

5.1 Nous créerons l’alias /acdr/ et acceptons les autorisations. A la fin de fichier 000-default on ajoute les lignes suivantes :

# nano /etc/apache2/sites-enabled/000-default

Alias /acdr/ /var/www/asteriskcdr/

<Directory « /var/www/asteriskcdr/ »>

AllowOverride All

</Directory>

5.2 Maintenait dans le dossier /asteriskcdr/ de serveur WEB qu’on doit protéger il faut créer le fichier « .htaccess » :

# nano /var/www/asteriskcdr/.htaccess
On rajoute les lignes suivantes :

AuthName « Password protected »
AuthType Basic
AuthUserFile /var/www/asteriskcdr/.htpasswd
require valid-user

5.3 On va créer l’utilisateur « admin » qui sera autorisé d’entrer dans l’interface WEB

htpasswd -c /var/www/asteriskcdr/.htpasswd admin

Maintenant que l’admin est autorisé pour entrer en interface WEB.

Si vous voulez donner un accès à plusieurs utilisateurs, on peut faire les restrictions de droits dans le fichier include/config.inc.php :

$admin_user_names = « admin1,admin2,iokunev » – toutes les trois sont des administrateurs

$admin_user_names = ‘*’ – toutes les utilisateurs sont des administrateurs

Les administrateurs ont l’accès à toutes les données de CDR

On peut créer l’utilisateur avec les droits limités (il ne peut pas voire que ses conversations effectués)

# htpasswd -b /var/www/asteriskcdr/.htpasswd 2201 test

Son nom doit être le même que son CID (callerid) ou DID (Direct inbound dialing).

Laisser un commentaire