PDA

Voir la version complète : [RESOLU] Mauvaise langue avec Dial-Out



danardf
17/10/2013, 10h34
Salut tout le monde.

Ce n'est pas souvent que je traine par là, mais là je bloque sur quelque chose de relativement simple. Bien que pour moi ce ne soit pas très normal ce qui m'arrive.

Voilà, j'ai concocté un auto-dial dans /var/spool/asterisk/outgoing/

Channel: Local/101@from-internal
CallerID: WakeUp <101>
MaxRetries: 3
RetryTime: 60
WaitTime: 30
Application: Playback
Data: roomx/wakeup
Extension: 101
Priority: 1
Sauf que la langue est prise par défaut (en).

Pour chaque <lang> => /var/lib/asterisk/sounds/<lang>/roomx/wakeup

Si je rajoute fr devant /roomx/wakeup, ça fonctionne.

Si je rajoute dans le script: Set: CHANNEL(language)=fr, ça fonctionne aussi.

J'ai forcé fr dans la config de l'extension et dans les paramètres généraux du SIP et le résultat de sip show settings montre bien que la langue sélectionnée est fr et non en (par défaut).

Soit il y a un bug quelque part, ou je pointe au mauvais endroit c'est qui replierait sur la langue par défaut, mais j'en doute.

Je pensais pouvoir récupérer la langue sur la variable ${LANGUAGE}, mais visiblement elle contient en!Si quelqu'un à une idée sur ce truc zarbi. :)

danardf
17/10/2013, 10h48
Bon je pense que j'ai trouvé.
Dans core show settings la langue est en.

Mais ce qui n'explique pas pourquoi la langue utilisée n'est pas celle de l'appelé!

danardf
17/10/2013, 11h51
Bon...... j'ai rusé.

Dans mon code PHP, j'ai extrait la valeur de la langue utilisée et je l'ai mise dans une variable que l'inclue dans

"Set: CHANNEL(language)=${lang}\n".

Pas très propre, mais ça fonctionne.

Si toute fois quelqu'un à une solution ou une piste.

A+

danardf
17/10/2013, 12h04
Ha zute... ça règle en parti mon problème.

Pour ce qui est de la réponse du réveil ok.

Par contre j'ai un script shell qui tourne en tâche de fond, surveillant les status Expired et Failed afin de notifier l'accueil d'un non réveil.

#!/bin/sh
while true ;
do
################################################## #########################
# Check the existing .call files from roomx within outgoing_done directory.
################################################## #########################
ls /var/spool/asterisk/outgoing_done/roomx_wakeup_*.call 1>/dev/null 2>&1 && res=OK || res=KO

R1=""
R2=""

################################
# Check Expired and Failed files.
################################
if [ $res == "OK" ] && [ ! -f /var/spool/asterisk/outgoing_done/flag ] ; then
R1=$(grep -l Expired /var/spool/asterisk/outgoing_done/roomx_wakeup_*.call)
R2=$(grep -l Failed /var/spool/asterisk/outgoing_done/roomx_wakeup_*.call)
fi

################################################## #########
# If last test is true, then sending alert to the operator.
################################################## #########
if [ "$R1" != "" ]||[ "$R2" != "" ] ; then
touch /var/spool/asterisk/outgoing_done/flag
echo "Channel: Local/100@from-internal" >> /var/spool/asterisk/tmp/alert.call
echo "CallerID: Alert <100>" >> /var/spool/asterisk/tmp/alert.call
echo "MaxRetries: 3" >> /var/spool/asterisk/tmp/alert.call
echo "RetryTime: 60" >> /var/spool/asterisk/tmp/alert.call
echo "WaitTime: 30" >> /var/spool/asterisk/tmp/alert.call
echo "Application: Playback" >> /var/spool/asterisk/tmp/alert.call
echo "Data: roomx/alert" >> /var/spool/asterisk/tmp/alert.call
echo "Priority: 1" >> /var/spool/asterisk/tmp/alert.call
echo "Extension: 100" >> /var/spool/asterisk/tmp/alert.call
mv /var/spool/asterisk/tmp/alert.call /var/spool/asterisk/outgoing/
chgrp asterisk /var/spool/asterisk/outgoing/alert.call
chown asterisk /var/spool/asterisk/outgoing/alert.call
fi

####################
# Wait 15 seconds #
####################
sleep 15
done



Là même cas, la langue est par défaut.

danardf
17/10/2013, 13h17
Héhé... j'ai trouvé. :)

Au lieu d'utiliser le canal Local: Channel: Local/100@from-internal
Il faut utiliser le canal SIP : Channel: SIP/100

C'est good.