Académique Documents
Professionnel Documents
Culture Documents
conversation téléphonique
Enregistrement de conversation téléphonique c’est une fonction très utile d’Asterisk.
Il faut savoir que vous pouvez enregistrer les conversations mais dans un cadre particulier lié à
l’activité, par exemple en centre d’appels dans le but d’améliorer la qualité. Il faut faire une
déclaration spéciale à la CNIL. Les personnes dont on enregistre les conversations doivent être
prévenues au moyen d’une alerte sonore ou visuelle, ils peuvent avoir accès aux enregistrements
et ils sont conservés 6 mois maximum.
La fonction « record » est utile pour enregistrer vos propres fichiers vocaux (messages
d’accueille, SVI et etc.). Dans cet exemple il vous suffira alors d’appeler vers le numéro 1000
depuis le numéro 555 (dans le context vous pouvez définir n’importe quelle numéro de source)
pour enregistrer votre message d’accueil après le bip et de taper la touche [#] à la fin de votre
message pour le réécouter :
# nano extensions.conf
[local]
exten => 1000/555,1,Answer
exten => 1000/555,n,Wait(2)
exten => 1000/555,n,Background(hello-world)
exten => 1000/555,n,Record(IVR-%d:ulaw)
exten => 1000/555,n,Wait(2)
exten => 1000/555,n,Playback(${RECORDED_FILE})
exten => 1000/555,n,7,Wait(2)
exten => 1000/555,n,8,Hangup
Vous pourrez alors trouver les fichiers enregistrés (IVR-0, IVR-1, etc.) dans le dossier « sounds »
d’Asterisk
Pour enregistrer les conversations téléphoniques dans Asterisk on utilise le plus souvent la
fonction « mixmonitor ».
1. L’enregistrement des appels dans les fichiers structurés par la date (avec d’un message
d’avertissement):
# nano extensions.conf
exten=>_X.,1,Set(DIRNAME=${CALLERID(num)}/${STRFTIME(${EPOCH},,%Y%m/%d)})
exten=>_X.,n,Set(FILENAME=${DIRNAME}/${STRFTIME(${EPOCH},,%H%M%S)}-${EXTEN})
exten=>_X.,n,System(/bin/mkdir -p /var/spool/asterisk/monitor/${DIRNAME})
exten=>_X.,n,MixMonitor(${FILENAME}.wav)
exten=>_X.,n,Playback(WarningRecord) ; on peut créer votre message d’avertissement dans le dossier
utilisé par défaut
exten => _X.,n,Dial(SIP/${EXTEN},20)
2. L’enregistrement des appels avec de conversion de fichiers audio en mp3 (lame doit être déjà
installé) :
# nano extensions.conf
exten => _X.,1,Set(FILENAME=${UNIQUEID})
exten => _X.,n,Set(monopt=nice -n 19 lame -b 16 –silent ${MP3}/${FILENAME}.wav
${MP3}/${FILENAME}.mp3 && rm -f ${MP3}/${FILENAME}.wav)
exten => _X.,n,MixMonitor(${MP3}/${FILENAME}.wav,b,${monopt})
exten => _X.,n,Playback(WarningRecord) ; il faut créer votre message d’avertissement dans le dossier
utilisé par défaut
exten => _X.,n,Dial(SIP/${EXTEN},20)
3. L’enregistrement des appels à la demande de l’utilisateur.
Il faut activer cette fonction et attribuer une touche du téléphone à la fonction d’enregistrement :
# nano /etc/asterisk/features.conf
[featuremap]
…
automon => *1 ; on attribue *1 a l’enregistrement d’appel
…
[general]
…
featuredigittimeout = 1000 ; Max time (ms) between digits for feature activation (default is 500 ms)
…
On ajoute la ligne suivante au début de la catégorie [globals] dans extensions.conf :
# nano /etc/asterisk/extensions.conf
[globals]
DYNAMIC_FEATURES => automon
; test
[local]
exten => _X.,n,Dial(SIP/${EXTEN},20,wW) ; w indique que l’enregistrement peut etre initie par l’appele
et W par l’appelant
Sans utilisation la catégorie « global » on peut faire comme ici :
/var/spool/asterisk/monitor.
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 voir 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
# mysql –p
mysql> use asterisk ;
mysql> alter table `cdr` add column `filename` varchar(120) after `userfield`;
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
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.
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
# 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 :
Sans le dossier /var/www/asteriskcdr il faut faire un lient sur nos fichiers mp3 :
# ln -s /records/mp3/ /var/www/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
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 :
5.3 On va créer l’utilisateur « admin » qui sera autorisé d’entrer dans l’interface WEB
On peut créer l’utilisateur avec les droits limités (il ne peut pas voire que ses conversations effectués)
On va créer l’utilisateur ‘asterisk’ avec mot de passe ‘password’ et avec l’accès nécessaire dans cette
database :
IDENTIFIED BY 'password';
);
hostname=127.0.0.1
dbname=asterisk
table=cdr
password=pa$$w0rd
user=asterisk
port=3306
[columns]
Chaque CDR est désormais sauvegardé dans le fichier au format CSV et également dans la base de
données.
Maintenant on peut recevoir l’information avec les requêtes SQL ou mettre en place Asterisk-CDR-
Viewer.
Exemple de requête SQL:
# mkdir /var/www/asteriskcdr
Dans le dossier /etc/apache2/sites-available/ créer le fichier asteriskcdr
# nano /etc/apache2/sites-available/asteriskcdr
<VirtualHost *:80>
ServerName asteriskcdr
ServerAlias asteriskcdr
DocumentRoot /var/www/asteriskcdr
</VirtualHost>
Pour terminer, il vous suffit de créer le lien de fichier nouvellement créé dans le
dossier /etc/apache2/sites-enabled. Pour ce faire, une commande a été faite spécialement
# sudo a2ensite asteriskcdr
Puis, afin de recharger la configuration d’Apache :
# sudo /etc/init.d/apache2 reload
Il faut vérifier si le paquet php5-mysql est bien installé, si non :
Finalement, les conférences audio peuvent mixer des canaux large bande, supérieurs aux 8 KHz autorisés
par DAHDI, ouvrant ainsi la voie vers des conférences à haute qualité audio.
ConfBridge est disponible depuis la version 1.6.2 d’Asterisk.
; conference
; admin
exten => 902,1,Answer(); le conference 901 avec menu d’administrateur pour gerer le
menu en tapant » # »
exten => 902,n,Authenticate(12345)
exten => 902,n,ConfBridge(901,am1s)
# service asterisk reload
[testbridge]
type=bridge
max_members=20
mixing_interval=10
internal_sample_rate=auto
record_conference=no
video_mode=follow_talker
[testuser]
type=user
music_on_hold_when_empty=yes
music_on_hold_class=default
announce_user_count_all=yes
announce_join_leave=yes
dsp_drop_silence=yes
denoise=yes
[testmenu]
type=menu
*=playback_and_continue(conf-usermenu)
*1=toggle_mute
1=toggle_mute
*4=decrease_listening_volume
4=decrease_listening_volume
*6=increase_listening_volume
6=increase_listening_volume
*7=decrease_talking_volume
7=decrease_talking_volume
*8=leave_conference
8=leave_conference
# nano /etc/asterisk/extensions.conf
exten => 111,1,Answer()
exten => 111,n,ConfBridge(4444,testbridge,testuser,testmenu)
On reload nos fichiers de configurations :
Installation de GoogleTTS
;Asterisk repond
exten => s,1,Answer()
; on demande l’autorisation
exten => s,n,Authenticate(1234) ; on demande l’autorisation Authenticate(1234)
;Si l’utilisateur tape les numeros entre 7-9 ou 0 on annonce que le choix n’est pas correcte
exten => i,1,agi(googletts.agi,’le numero choisi n’est pas correcte’,fr,any)
exten => i,n,Goto(s,3)
;Si l’utilisateur ne fait pas son choix pendant 20 sec on raccroche en prononcant « au revoir »
exten => t,1,Playback(vm-goodbye)
exten => t,n,Hangup()