PDA

Voir la version complète : Créer un service : appel de minuterie avec Asterisk



xunil2003
05/01/2014, 12h33
Bonjour,

Ayant asterisk couplé avec mon système domotique, en utilisant des smartphones / tablette / PC et téléphones fixe ip (2x Gigaset C610 IP Trio),
Ayant besoin souvent d'un minuteur, je me suis dit pourquoi ne pas en créer un.
Au moment que je vous écris je suis sur Linux Debian 2.6.39.4 armv5tel et j'utilise Asterisk 1.8.11.0.
C'est pourquoi je vais vous expliquer comment j'ai créé un appel de minuterie, pour ceux qui son intéressé.

Pour commencer, il faut éditer le fichier /etc/asterisk/extensions.conf avec nano par exemple.

# nano /etc/asterisk/extensions.conf
Puis faite un copier coller dans fichier /etc/asterisk/extensions.conf édité.

;# Appel de minuterie #
; Fichier : /var/lib/asterisk/agi-bin/minuterie.agi
exten => 556,1,Answer()
exten => 556,n,Playtones(ring)
exten => 556,n,wait(10)
exten => 556,n,Set(NUMERO=${CALLERID(name)})
exten => 556,n,wait(1)
exten => 556,n,Playback(/lib/asterisk/sounds/custom/domotique_appel_minuterie_bienvenue)
exten => 556,n,Read(MINUTE,,3)
exten => 556,n,Saynumber(${MINUTE})
exten => 556,n,Playback(minute)
exten => 556,n,AGI(/var/lib/asterisk/agi-bin/minuterie.agi,${NUMERO},${MINUTE})
exten => 556,n,Playback(/lib/asterisk/sounds/custom/domotique_appel_minuterie_sachez)
exten => 556,n,Playback(/lib/asterisk/sounds/custom/domotique_appel_minuterie_merci)
exten => 556,n,Playback(vm-goodbye)
exten => 556,n,Hangup()

;Extension pour minuterie
exten => minuterie,1,Answer()
exten => minuterie,n,Wait(1)
exten => minuterie,n,PlayBack(hello-world)
exten => minuterie,n,Wait(1)
exten => minuterie,n,Playback(rqsted-wakeup-for)
exten => minuterie,n,Playback(digits/today)
exten => minuterie,n,SayUnixTime(,America/Montreal,AdBY 'digits/at' IMp)
exten => minuterie,n,Hangup()

Ensuite il faut créer le fichier /var/lib/asterisk/agi-bin/minuterie.agi

# touch /var/lib/asterisk/agi-bin/minuterie.agi
Puis l'éditer avec nano par exemple.

# nano /var/lib/asterisk/agi-bin/minuterie.agi
et y copier coller ce qui suit :

#!/bin/bash

NUMERO=$1
MINUTE=$2

JOUR=$(date +%d)
MOIS=$(date +%m)
ANNEE=$(date +%Y)
HEURE=$(date +%H%M)

OPT_STOP=$MINUTE
OPT_TIME=$(date +%s)
OPT_FIN=$(date -d "1970-01-01 GMT $(($OPT_TIME+60*$OPT_STOP)) seconds" "+ MOIS=%m JOUR=%d ANNEE=%Y" )
HEURE2=$(date -d "1970-01-01 GMT $(($OPT_TIME+60*$OPT_STOP)) seconds" "+%H%M" )
HORAIRE=$HEURE2


TIMESTAMP=$ANNEE$MOIS$JOUR$HORAIRE

FICHIER=$NUMERO$TIMESTAMP.call
cd /var/spool/asterisk/tmp/
touch $FICHIER

echo "Channel: SIP/$NUMERO" >> /var/spool/asterisk/tmp/$FICHIER
echo "Account: $NUMERO" >> /var/spool/asterisk/tmp/$FICHIER
echo "CallerID: Minuterie <556>" >> /var/spool/asterisk/tmp/$FICHIER
echo "MaxRetries: 0" >> /var/spool/asterisk/tmp/$FICHIER #Nombre d'appel / par defaults : 3
echo "RetryTime: 60" >> /var/spool/asterisk/tmp/$FICHIER #Durée de l'appel / par defaults : 10
echo "WaitTime: 60" >> /var/spool/asterisk/tmp/$FICHIER #Temps d'attente entre les appels / par défauts : 10
echo "Context: interne" >> /var/spool/asterisk/tmp/$FICHIER
echo "Extension: minuterie" >> /var/spool/asterisk/tmp/$FICHIER

touch -t $TIMESTAMP /var/spool/asterisk/tmp/$FICHIER

cp -a /var/spool/asterisk/tmp/$FICHIER /var/spool/asterisk/outgoing && rm /var/spool/asterisk/tmp/$FICHIER
puis quitter et enregistrer.

Ensuite il faut redémarrer Asterisk pour qu'il prenne en compte les changements.

# service asterisk restart
Et il ne vous reste plus qu'à composer le 556, le numéro de l'appel de minuterie.
Et voilà vous n’oublieriez plus vos pattes qui cuisent sur les feux !

* Vous remarquerez que dans le fichier /etc/asterisk/extensions.conf
Il y a d'indiquer les fichiers audio suivant pour asterisk :
domotique_appel_minuterie_bienvenue -----> domotique_appel_minuterie_bienvenue.wav
domotique_appel_minuterie_sachez -----> domotique_appel_minuterie_sachez.wav
domotique_appel_minuterie_merci -----> domotique_appel_minuterie_merci.wav

Ce sont des fichiers audio que je me suis créés pour asterisk, voilà comment j'ai fait depuis un autre poste linux Ubuntu 12.04 LTS x64.
Il faut installer outRec : http://outrec.sourceforge.net/
une fois outrec installé, il faut installé Audacity

sudo apt-get install audacity
Ensuite il faut se rendre sur le site internet suivant
http://www.acapela-group.fr/text-to-speech-interactive-demo.html
Puis à :

sélectionnez une langue : French (France)
choisissez une voix : French (France) Alice
Dans tapez votre texte ici, j'ai mis pour :

domotique_appel_minuterie_bienvenue

Bonjour, Bienvenue sur appel de minuterie. Veuillez indiquer dans combien de minutes, je dois vous appeler. Pour les chiffre inférieur à 10, mettre des 0 avant. C'est à vous.

domotique_appel_minuterie_sachez

Sachez que le téléphone, sonnera une fois pendant 60 secondes, depuis le poste où vous effectuez l'appel.

domotique_appel_minuterie_merci

Merci d'avoir utilisé appel de minuterie.

Ensuite cliquer sur écouter!
Si c'est correct alors cliquer sur le bouton rond de couleur rouge dans outrec et appuyer vite sur la lecture du texte audio précédemment complété.
une fois la lecture terminéé cliquer dans outrec sur le carré blanc pour arrêter l'enregistrement.
les enregistrements audio avec outrec ce trouvent dans le repertoire $HOME/outRec/

ls -al $HOME/outRec/

Ensuite ouvrir le fichier audio précédemment enregistré avec Audiacity et couper tous les blancs. pour enregistrer le fichier , cliquer sur : Fichier - Exporter - puis indiquer un nom de fichier.

Ensuite il ne vous reste plus qu'à convertir le ficher wav au format audio compatible pour asterisk
Doc disponible ici : https://wiki.xivo.fr/index.php/Convertir_des_fichiers_son_pour_Asterisk
Exemple :

$ sox -t .wav $HOME/outRec/domotique_appel_minuterie_bienvenue.wav -t .wav -r 8000 -c 1 $HOME/outRec/domotique_appel_minuterie_bienvenue_ok.wav

Puis sur le serveur Asterisk , créer le dossier /lib/asterisk/sounds/custom/

sudo mkdir -v /lib/asterisk/sounds/custom/
Et copier vos fichiers audio pour asterisk dedans

/lib/asterisk/sounds/custom/
Pour voir tous les fichiers dans le dossier taper :

ls -al /lib/asterisk/sounds/custom/
Pour écouter un fichier audio

aplay /lib/asterisk/sounds/custom/domotique_appel_minuterie_bienvenue.wav
Voilà en espérant que ce tuto vous rende service.

_AK_
10/01/2014, 14h55
sympa de partager le fruit de ton travail :)
Merci

vienuj
15/01/2014, 22h23
Effectivement,

Merci d'avoir partagé ce travail intéressant.

apex
28/02/2014, 09h12
Merci d'avoir partagé! c'est sympa :)