Accueil > Réalisations > Logiciels > Outils pour autocommutateurs Alcatel 4400 > Numérotation automatique depuis un Intranet (STAP/CTI) > Numéroter depuis un programme

Numéroter depuis un programme

samedi 6 avril 2013, par Paul Courbis

Revoir la configuration des postes

Pour éviter de payer des frais prohibitifs à notre intégrateur, nous avons choisit de simuler l’utilisation de l’annuaire « Omniview » par un utilisateur. La commande « wget » permet de faire cela très simplement...

Le code ci-dessous est écrit en shell et peut facilement être converti dans un autre langage.

Il prend trois arguments :

  • le numéro du poste appelant (en général 4 chiffre) ;
  • le code secret du poste (par défaut c’est souvent 0000). Il ne s’agit pas du code de la messagerie vocale. Ce code peut être réinitialisé via la 4760 dans le même menu que celui utilisé pour activer le « STAP » (voir l’article précédent) ;
  • le numéro appelé (numéro de poste pour un appel interne, numéro extérieur avec prefixe de sortie, le plus souvent « 0 », pour un appel externe).

Le code ci-dessous doit être adapté à votre configuration en remplaçant l’IP de « SERVER=1.2.3.4 » par l’adresse de votre 4760.

#!/bin/sh

if [ "$#" != 3 ]
then
  echo "Syntax is $0 <poste> <code_secret> <no appele>"
  exit 1
fi

STATION=$1
SECRET=$2
CALLING=$3

######################################################################
SERVER=1.2.3.4
COOKIES=/tmp/cookies$$.txt
OUT=/tmp/out$$
WGET=/usr/bin/wget
#######################################################################

Error()
{
  echo "$1"
  rm -f $COOKIES $OUT
  exit 2
}

#Contact server to get association form & get a session cookie
$WGET -q --load-cookies=$COOKIES "http://$SERVER/php-bin/Webclient.php?action=station" --keep-session-cookies --save-cookies=$COOKIES -O $OUT
RES=$?
if [ "$RES" != "0" ]
then
  Error "Unable to contact server $SERVER"
fi

#Get an association cookie by submitting station Id and secret code
$WGET -q --load-cookies=$COOKIES "http://$SERVER/php-bin/Webclient.php" --keep-session-cookies --save-cookies=$COOKIES -O $OUT --post-data="action=stationCheck&st%5BcallerExt%5D=$STATION&st%5BcallerCode%5D=$SECRET&validation=+Appl"

SUCCESS=`cat "$OUT" | grep "The operation completed successfully."`
if [ "$SUCCESS" = "" ]
then
  Error "Unable to associate station. Invalid secret code ?"
fi

#Hangout station
$WGET -q --load-cookies=$COOKIES "http://$SERVER/php-bin/WebClient.php?action=releaseCall" --keep-session-cookies --save-cookies=$COOKIES -O $OUT

#Call number
$WGET -q --load-cookies=$COOKIES "http://$SERVER/php-bin/WebClient.php?action=makeCall&calledExt=$CALLING&calledPersonDn=uid=etst+4,o=CNOM,o=directoryRoot&calledAttr=mobile" --keep-session-cookies --save-cookies=$COOKIES -O $OUT

SUCCESS=`cat "$OUT" | grep "^$STATION->"`
if [ "$SUCCESS" = "" ]
then
  Error "Unable to dial"
fi

rm -f $COOKIES $OUT
exit 0

Le principe de fonctionnement est le suivant :

  • on commence par vérifier le nombre d’argument et par afficher un court rappel de la syntaxe si nécessaire ;
  • on fixe ensuite un certain nombre de variables, dont l’IP du serveur et le nom de certains fichiers temporaires ;
  • on fait ensuite un premier appel à l’annuaire pour vérifier qu’il est présent et disponible ainsi que pour créer une nouvelle session HTTP. Au passage on teste que la réponse est correcte et on arrête le script si tel n’est pas le cas ;
  • on réalise ensuite une association avec le n° de poste appelant en utilisant le code secret. Il peut y avoir échec si le code est faux et le script s’arrête si tel est le cas. En cas de succès, un cookie est crée (valable 1 an) ;
  • on raccroche le poste (hangup) au cas où il serait déjà en communication. Cette étape n’est pas forcément nécessaire ;
  • enfin on lance la numérotation et on vérifie le résultat.

Ce code peut être facilement intégré dans un serveur web, par exemple dans un serveur Intranet (rubrique annuaire) pour permettre une numérotation directe dès que l’utilisateur est identifié et qu’il est donc possible de connaître son numéro de poste.

Voilà, ce n’est pas plus compliqué et surtout cela ne coûte pas les 25000 €que réclamait mon intégrateur (pour une solution en plus non garantie)....

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Les spams donneront systématiquement lieu à dépôt de plainte. Les messages comportant trop de fautes d'orthographe seront purement et simplement supprimés.
ipv6 ready ipv6 test
Suivre ce site :
Recommander cette page :
Bookmark and Share
Traduire :