RAPPORT SVA Par: Jean François Diokel DIOKH Professeur: M. OUYA Jean François Diokel DIOKH 1
SOMMAIRE INTRODUCTION PREREQUIS I. Le Serveur Vocal Interactif 1. Présentation de Asterisk 2. Installation 3. Création des comptes pour les utilisateurs 4. Les fichiers sons 5. Le répertoire /var/spool/asterisk/outgoing/ 6. La consultation de compte 7. Le transfert d'agent 8. La prise de rendez vous II. SVA PAR SMS 1. Le réseau GSM GPRS 2. Le SMS 3. Kannel 4. La consultation de compte par SMS 5. Le transfert d'argent par SMS 6. Le WEB to SMS CONCLUSION Jean François Diokel DIOKH 2
INTRODUCTION Un service à valeur ajoutée est une application, cumulant des notions de Télécommunications et d informatiques, dont l'usage fait l'objet d'une tarification. Il présente donc un caractère purement commercial. Dans ce module nous avions mettre en oeuvre de service tels les jeux, le e banking dont la consultation de son compte et le transfère de crédit par SMS et par un serveur vocal interactif, le Web to SMS et le prise de rendez vous avec des logiciels libre. Dans ce cadre nous allons dans un premier temps parler de la mise en oeuvre de ces services avec Asterisk pour la voix puis sur Kannel pour le SMS. PRÉREQUIS _ MYSQL MySQL est une base de données implémentant le langage de requête SQL un langage relationnel très connu. Avec MySQL vous pouvez créer plusieurs bases de données sur un serveur. Une base est composée de tables contenant des enregistrements. Donc on a utiliser ce serveur pour la base de données. On crée une base de données contenant les champs prenom, nom, code secret de l'utilisateur (code), le numéro de téléphone (num) le montant de son compte (montant). Cette base de donnée est supposée être celle de la banque. Et nous allons travailler dans le cas d'une seule banque. Jean François Diokel DIOKH 3
_PHP PHP est un langage de scripts Open Source, spécialement conçu pour le développement d'applications Web. Il peut être intégré facilement au HTML. Le grand avantage de PHP est qu'il est extrêmement simple, mais offre des fonctionnalités avancées notamment en ce qui concerne les entrées sorties, mais aussi une grande facilité dans la manipulation des fichiers. Il permet de traiter des données reçues. Il y' a aussi le AGI pour le serveur asterisk. Du fait de sa simplicité, connaissant sa puissance et le maîtrisant le plus, nous l'avons utiliser pour la réalisation des services. I. Le Serveur Vocal Interactif (SVI) Le SVI ( serveur vocal interactif) consiste à mettre un mettre en place un serveur asterisk sur une machine avec des applications développées en php, tels que la consultation de compte d'un utilisateur d'une banque et aussi la gestion du transfert d'argent, qui vont faire les requêtes dans la base de données mysql. Sur cette parti allons faire une brève présentation de asterisk, puis l'installation et la configuration et après la mise en place des applications pour la consultation de compte, le transfert d'argent et la prise de rendez vous. 1. Présentation de asterisk Asterisk est un logiciel libre qui implémente un central téléphonique. Le logiciel permet à un certain nombre de téléphones connectés d'échanger des appels, et de les relier au réseau téléphonique mondial. Le code fut originellement écrit par Marc Spencer (Digium). Pour exécuter Asterisk, un ordinateur personnel (PC) suffit, mais du matériel supplémentaire sera nécessaire si vous souhaitez y connecter des téléphones ordinaires, ou le relier au réseau téléphonique. Pour la mise en place du serveur vocal interactif on aura à utiliser dans les fichiers de asterisk seulement le fichier /etc/asterisk/extensions.conf pour l'attribution des numéros d'appel avec l'usage de fonctions et d'applications pour la mise en œuvre de nos SVA. On aura principalement à certaines fonctions et applications dans ce fichier : _ les fonctions.cut: Permet de couper une variable. CURL: Retrieves the contents of a URL _ les applications. Answer: Répondre à un appel. Read: Lit une variable. Set: Définie une variable ou la valeur d'une fonction. Playback: Lire un fichier son. Background: Lire un fichier son en tâche de fond dans l'attente de la saisie d'une touche Jean François Diokel DIOKH 4
. GotoIf: Se rendre à une priorité d extension précise d un contexte suivant la condition posée. Record: Permet d'enregistrer un son en format wav ou gsm.system: Pour exécuter une commande système 2. Installation Liste des paquets nécessaires pour la mise en fonction du serveur : asterisk : Paquet principal ; espeak : Pour la synthèse vocale; sox : Utilitaire d édition et de conversion audio (wav, gsm, mp3,...). On tape la commande apt get install asterisk espeak sox 3. Création des comptes pour les utilisateurs La création de comptes se fait dans le fichier /etc/asterisk/sip.conf [jean] type=friend username=jean secret=1234 host=dynamic callerid=666 context=thies [dio] type=friend username=dio secret=1234 host=dynamic context=thies [toto] type=friend username=toto secret=1234 host=dynamic callerid=888 context=thies Jean François Diokel DIOKH 5
4. Les fichiers sons On enregistre les sons qui vont guider l'utilisateur lors d'une requête avec l'application Record de asterisk dans le fichier extensions.conf ;son de bienvenu exten =>100,1,Answer() exten =>100,2,Record(bienvenu:gsm) exten =>100,3,Hangup() ;son pour entrer le code secret exten =>101,1,Answer() exten =>101,2,Record(entrer_code:gsm) exten =>101,3,Hangup() Suivant le même principe on va enregistrer les fichier sons qu'on aura à utiliser pour guider les utilisateurs. Après on copie tous ces fichiers dans le répertoire /son/ qu'on a crée pour contenir l'ensemble des sons. 5. Le repertoire /var/spool/asterisk/outgoing/ C'est un répertoire du serveur asterisk qui doit contenir des fichier d'extensions.call dont le serveur va exécuter automatiquement les paramètres qui s'y trouvent. Nous l'avons utiliser pour la prise de rendez vous pour que le serveur puisse initier un appel entre 2 comptes. Les paramètres du fichier.call Channel: SIP/jean : Le canal qui initie l'appel MaxRetries: 2 : le nombre de fois pour réessayer l'appel RetryTime: 60 : Le temps à attendre pour réessayer l'appel WaitTime: 30 : Le temps d'attente pour que l'appelé décroche Context: thies : Le contexte où le numéro est spécifié Extension: 666 : Le numéro de l'utilisateur à appeler Priority: 1 : La priorité 6. La consultation de compte Pour la consultation du montant de la somme de son l'utilisateur devra taper le numéro 1000 puis suivra les consignes. Après la saisi de son code secret le serveur lui dira le montant qu'il a dans son compte. Ceci grace au fichier php montant2.php qui va prendre le code secret saisi depuis asterisk et le traiter. Pour des mesures de sécurité l'utilisateur ne pourra consulter son compte qu'avec son code secret et le numéro de téléphone qui a été enregistré dans la base de données. Jean François Diokel DIOKH 6
On ajoute alors dans le fichier /etc/asterisk.extensions.conf ;consultation de compte exten => 1000,1,Playback(/son/bienvenu) exten => 1000,2,Background(/son/entrer_code) exten => 1000,3,Read(code,,3,,,10) ;l'utilisateur doit taper 3 touches avant les 10 secondes exten => 1000,4,GotoIf($[${code!=0]?1000,5:1000,2) exten => 1000,5,Set(montant=${CURL(http://localhost/montant2.php,code=${code&num=$ {CALLERID(num))) exten => 1000,6,Playback(/son/son${CALLERID(num)) exten => 1000,7,GotoIf($[${montant==0]?1000,2:1000,8) exten => 1000,8,Hangup() Et puis on crée le fichier montant2.php <? php $code=$_post['code']; $num=$_post['num']; $numm=1; @mysql_connect('localhost','root','passer') or die("echec de connexion"); @mysql_select_db('lirt') or die("echec de sélection de la base."); $requete = "select * from banq where code='$code'"; $result = mysql_query($requete); $ligne = mysql_fetch_row($result); $numm = mysql_num_rows($result); // teste de l'existance du code if($numm!=0) { // renvoi du montant SI le CODE existe ET le NUM de l'appelant est AUTORISé a utiliser ce num pour consulter son compte if($ligne[3]==$num) { $montant = $ligne[4]; $test = "espeak v fr+f2 s 135 \"le montant de votre compte est de $montant \" w /son/son$num.wav"; // Le Numéro étant différant du numéro associé a ce code dans la base de donnée else $test = "espeak v fr+f2 s 135 \"vous n'étes pas autorisé à utiliser ce numéro\" w /son/son$num.wav"; // le code n'existant pas dans la base de donnée else { $test = "espeak v fr+f5 s 135 \"le code n'existe pas\" w /son/son$num.wav"; $montant = 0; Jean François Diokel DIOKH 7
// création du fichier son exec($test); $son = "sox /son/son$num.wav r 8000 c1 g /son/son$num.gsm"; exec($son); $rm = "rm /son/son$num.wav"; exec($rm); echo $montant;?> On voit sur l'interface de asterisk l'utilisateur jean dont le numéro est le 666 qui consulte son compte Jean François Diokel DIOKH 8
1. Le transfert d'agent Pour le transfert de crédit l'utilisateur devra taper le numéro 1001 puis se laisser guider par le serveur. C'est à dire il devra entrer son code secret, le numéro d'identification du destinataire de l'argent et enfin la somme à transférer. De même pour des mesures de sécurité l'utilisateur ne pourra faire de transfert d'argent qu'avec son code secret et le numéro de téléphone qui a été enregistré dans la base de données. On vérifiera aussi si l'id du destinataire existe et la personne qui fait la transaction à assez d'argent effectuer sa requête. On ajoute alors dans le fichier /etc/asterisk.extensions.conf ;transfert d'argent exten => 1001,1,Playback(/son/bienvenu) exten => 1001,2,Background(/son/entrer_code) exten => 1001,3,Read(code,,3,,,10) exten => 1001,4,Background(/son/entrer_id_code_dest) exten => 1001,5,Read(code1,,1,,,10) exten => 1001,6,Background(/son/entrer_montant) exten => 1001,7,Read(code2,,,,,10) ; On dira à l'utilisateur de taper # pour terminer exten => 1001,8,Set(trans=${CURL(http://localhost/transfert2.php,code=${code&id_code_dest=$ {code1&montant=${code2&num=${callerid(num))) exten => 1001,9,GotoIf($[${trans==0]?1001,2:1001,10) exten => 1001,10,GotoIf($[${trans==1]?1001,4:1001,11) exten => 1001,11,GotoIf($[${trans==2]?1001,6:1001,12) exten => 1001,12,Playback(/son/son${CALLERID(num)) exten => 1001,13,Hangup() et puis on crée le fichier transfert2.php <? php $code=$_post['code']; $num=$_post['num']; $id_code_dest=$_post['id_code_dest']; $montant=$_post['montant']; @mysql_connect('localhost','root','passer') or die("echec de connexion"); @mysql_select_db('lirt') or die("echec de sélection de la base"); $requete = "select * from banq where code='$code'"; $result = mysql_query($requete); $ligne = mysql_fetch_row($result); $numm = mysql_num_rows($result); $requetedest = "select * from banq where id_code='$id_code_dest'"; $resultdest = mysql_query($requetedest); $lignedest = mysql_fetch_row($resultdest); $nummdest = mysql_num_rows($resultdest); // teste de l'existance du code if($numm!=0){ Jean François Diokel DIOKH 9
if($ligne[3]==$num) { if($nummdest!=0){ if($ligne[4]>$montant){ $update = "update banq set montant=($ligne[4] $montant) where code=$code"; $up = mysql_query($update); $updatedest = "update banq set montant=($lignedest[4]+$montant) where id_code=$id_code_dest"; $updest = mysql_query($updatedest); //$test = "touch /son/son.php"; $test = "espeak v fr+f2 s 135 \"le transfert de $montant franc vers le compte de $lignedest[1] est bien effectuer\" w /son/son$num.wav"; $trans = 4; else { $test = "espeak v fr+f2 s 135 \"Vous n'avez pas assez d'argent pour effectuer le transfer\" w /son/son$num.wav"; $trans = 2; else { $test = "espeak v fr+f2 s 135 \"l'identifiant du destinateur n'existe pas\" w /son/son$num.wav"; $trans = 1; else { $test = "espeak v fr+f2 s 135 \"vous n'étes pas autorisé à utiliser ce numéro\" w /son/son$num.wav"; $trans = 5; else { $test = "espeak v fr+f5 s 135 \"le code n'existe pas\" w /son/son$num.wav"; $trans = 0; exec($test); $son = "sox /son/son$num.wav r 8000 c1 g /son/son$num.gsm"; exec($son); $rm = "rm /son/son$num.wav"; exec($rm); echo $trans;?> Jean François Diokel DIOKH 10
et maintenant en faisant un test avec l'utilisateur jean avec le numéro 666 qui veut donner un montant de 1000 à l'utilisateur dont l'id_code est 3, on a sur l'interface de asterisk: 8. La prise de rendez vous Elle consiste à programmer un appel à l'aide du serveur vocal interactif. On ajoute dans le fichier extensions.conf les lignes qui vont suivre pour que l'utilisateur puisse taper la date et l'heure du rendez vous, le numéro de la personne qu'il voudra joindre et que le serveur envoie ces informations au fichier php pour les traiter. Après traitement, quant la prise de rendez vous est bien faites le serveur va différé le processus de la commande qui permettre d'envoyer le fichier d'extensions.call dans le répertoire /var/spool/asterisk/ outgoing/. La donnée envoyer par le fichier php pouvant être du type "at $heur:$min $mois/$jr/$annee < /son/at$num" ou «34» qui sont différents, on utilise la fonction CUT pour prendre que les 2 première lettre ou chiffre. Jean François Diokel DIOKH 11
On ajoute dans le fichier extensions.conf ;prise de rendez vous exten => 1011,1,Playback(bienvenu) exten => 1011,2,Background(entrer_date) ;;la date sera du format JJ/MM/AA, donc 6 chiffres exten => 1011,3,Read(date,,8,,15) exten => 1011,4,Background(entrer_heure) ; l'heure sera du format HH/Min exten => 1011,5,Read(heure,,4,,15) exten => 1011,6,Background(entrer_num) exten => 1011,7,Read(num,,3,,15) exten => 1011,8,Set(rv=${CURL(http://localhost/rv.php?date=${date&heure=${heure&num=$ {num)) exten => 1011,9,Playback(/son/son_rv${CALLERID(num)) exten => 1011,10,Set(test=${CUT(rv,,1)) exten => 1011,11,GotoIf($[${test==32]?1011,2:1011,12) exten => 1011,12,GotoIf($[${test==33]?1011,4:1011,13) exten => 1011,13,GotoIf($[${test==34]?1011,2:1011,14) exten => 1011,14,System(${rv) exten => 1011,15,Hangup() Le fichier rv.php L'objectif de ce fichier est de voir si l'heure du rendez vous choisi est disponible. Si c'est le cas il va créer un fichier d' extensions.call et un fichier que la commande at va prendre en paramètre. NB: L'utilisateur doit lors de la prise de rendez vous tenir compte d'une intervalle de 20 minutes entre 2 appels pour lui permettre de bien traiter ses appels. Donc les minutes seront par pas de 20. <? php $date=$_get['date']; $heure=$_get['heure']; $num=$_get['num']; $jr = substr($date,0,2); $mois = substr($date,2,2); $annee = substr($date,4,2); $heur = substr($heure,0,2); $min = substr($heure,2,2); @mysql_connect('localhost','root','passer') or die("echec de connexion"); @mysql_select_db('lirt') or die("echec de sélection de la base."); $requete = "select * from rv where time='$date$heure'"; $result = mysql_query($requete); $numm = mysql_num_rows($result); //teste de la validite des données reçu if($jr <= 31 && $mois <= 12 && $heur <= 24 && $min <= 60) { //teste du respect de l'intervalle de temps suggérée Jean François Diokel DIOKH 12
if($min%20 == 0) { //teste pour voir si l'heure (heure et date) n'a pas été choisi if($numm == 0) { $update = "insert into rv values('$date$heure')"; $up = mysql_query($update); //création du fichier test suivi du num.call $touch="/usr/bin/touch /son/test$num.call"; exec($touch); $text="echo \"Channel: SIP/jean\nMaxRetries: 0\nRetryTime: 60\nWaitTime: 31\nContext: thies\nextension: $num\npriority: 1\" >> /son/test$num.call"; exec($text); //création du fichier qui va recevoir la commande a executer par at $at="/usr/bin/touch /son/at$num"; exec($at); $text2="echo \"mv /son/test$num.call /var/spool/asterisk/outgoing/\" >> /son/at$num"; exec($text2); $dio="at $heur:$min $mois/$jr/$annee < /son/at$num"; $rv = $dio; $son = "espeak v fr+f2 s 135 \"Rv bien pris\" w /son/son_rv$num.wav"; else { $son = "espeak v fr+f2 s 135 \"l'heure a été choisi\" w /son/son_rv$num.wav"; $rv = 32; else { $son = "espeak v fr+f2 s 135 \"veuillez respecter l'intervalle de temps\" w /son/son_rv$num.wav"; $rv = 33; else { $son = "espeak v fr+f2 s 135 \"veuillez taper une bonne date\" w /son/son_rv$num.wav"; $rv = 34; exec($son); $son1 = "sox /son/son_rv$num.wav r 8000 c1 g /son/son_rv$num.gsm"; exec($son1); $rm = "rm /son/son_rv$num.wav"; exec($rm); echo $rv;?> Jean François Diokel DIOKH 13
On voit alors sur l'interface de asterisk II. SVA PAR SMS Pour la mise en place de ces services on a branché notre téléphone portable à la machine via le câble par le port USB pour jouer le rôle de modem. Dans cette on a utilisé le logiciel libre Kannel dont on va faire sa présentation, l'installation et la configuration. Parler du SMS dans le réseau GSM et en dernier lieu des services mise en oeuvre tels que la consultation de compte banquaire, transfert d'argent et Web to SMS Jean François Diokel DIOKH 14
1. Le réseau GSM GPRS L'achitecture les Cannaux Logiques Jean François Diokel DIOKH 15
2. Le SMS Un des services offert par le GSM est la gestion des mini messages ou SMS (Short Message Service). Il ne s'agit plus de la transmission de sons mais d'un texte limité théoriquement à 160 caractères. Chaque message envoyé transite vers le centre de messagerie baptisé SMSC (Short Message Service Center) où il est temporairement stocké. Dés que le destinataire est disponible, c'est à dire lorsque le mobile est sous tension et présent dans la zone de couverture du réseau GSM, le message est transmis. Le message peut exceptionnellement rester sur le SMSC durant plusieurs jours. En situation normale on peut considérer que l'envoie d'un SMS est instantané à condition que le mobile de destination soit opérationnel. Selon le degré de perfectionnement du mobile utilisé, un «accusé de réception» peut cependant s afficher lorsque le SMS a effectivement atteint sa destination. Et pour peu que l abonné mobile bénéficie d une option «Monde» (souvent gratuite), ses SMS l atteindront en principe même à l étranger. L envoi d un SMS ne nécessite pas un grand déploiement coté opérateur car le trafic SMS n emprunte pas les mêmes canaux que les communications vocales (il transite par des canaux de «signalisation» beaucoup moins sollicités). Un SMS reçu sur le mobile est traité de manière différent suivant sa classe. La classe est définie dans le SMS Data Coding Scheme (DCS Voir norme 3GPP 23.038) : classe 0 : le message est directement affiché à l'utilisateur sur l'écran du mobile à la réception. Un rapport est envoyé ensuite au centre de service. Le message n'est enregistré ni dans la mémoire du téléphone ni dans la carte SIM. Il est effacé dès que l'utilisateur a validé la visualisation. classe 1 : le message est enregistré dans la mémoire du téléphone et si cette mémoire est pleine, dans la carte SIM par défaut. Note : un message reçu de type WAP Push pour configurer un mobile par exemple est de classe 1. classe 2 : le message est enregistré sur la carte USIM. Un accusé de réception est envoyé au centre de service une fois que le message a bien été transféré sur l'usim. classe 3 : le message est transféré sur un équipement externe connecté au mobile (PDA, PC portable..). Dans notre cas on voit que les SMS seront de classe 3 pour que Kannel puisse les traiter. Jean François Diokel DIOKH 16
3. Kannel a. Présentation Kannel est une passerelle SMS et WAP open source et gratuit. Kannel est actuellement disponible pour les systèmes Linux (Redhat et Debian). Lancé en mars 1999, le projet est à l initiative de la compagnie Finlandaise WAPIT. Kannel a été reconnue en mars 1011 lorsqu il a été certifié par Wap Forum en tant que première passerelle WAP 1.1 dans le monde. C'est un outil très intéressant pour développer des applications en collaboration avec le serveur Apache b. Achitechture de Kannel La passerelle possède trois interfaces chacune ne pouvant communiquer qu avec un type d équipement spécifique : Les centres SMS (SMSC), utilisant divers protocoles. Les serveurs HTTP, pour les contenus WAP et SMS. Les terminaux WAP, implémentant la pile de protocole WAP. External interfaces of Kannel Il est noté que Kannel utilise les commandes AT pour communiquer avec le téléphone. AT+CPIN AT+CNMI AT+CMGL AT+CMGR AT+CMGS AT+CMSS AT+CMGW Entrer le code PIN Indication concernant un nouveau SMS Liste les SMS stockés en mémoire Lecture d'un SMS Envoie d'un SMS Envoie d'un SMS stockés en mémoire Écriture d'un SMS Jean François Diokel DIOKH 17
c. Installation On tape la commande apt get install kannel d. Configuration Le fichier de configuration /etc/kannel.conf peut être divisé en 2 parties : la configuration du bearerbox, la configuration du smsbox, La partie Bearerbox a un «groupe core» et tous les groupes de Centres SMS, alors que la partie wapbox a seulement un groupe wapbox. Dans la partie smsbox il y a un groupe smsbox et un bon nombre de groupes sms service et sendsms user. On télécharge le fichier gateway 1.4.1.tar.gz, et le désarchive dans /usr/local/ Copier les fichiers kannel.conf et modems.conf qui sont dans /usr/local/gateway 1.4.1/doc/examples/ vers /etc/ Configuration du bearerbox Le Groupe Core: Le Groupe SMSC: Jean François Diokel DIOKH 18
Configuration du smsbox Le Groupe smsbox il définit la configuration de kannel qui gère l'envoie et la réception de SMS Le groupe sendsms user Ce groupe permet de définir les utilisateurs pouvant utiliser l'envoie de SMS via le Web. Le Groupe sms service Il permet de définir les services SMS à utiliser. Chaque service est identifié par un mot clé et l'application qui se chargera de traiter les requêtes. Jean François Diokel DIOKH 19
Dans la configuration de kannel, nous avons inclus le fichier /etc/modems.conf qui contient des informations supplémentaire sur le type de modem utiliser. Include = "/etc/modems.conf" Pour démarrer Kannel il faut agir comme suit: Démarrer d'abord le bearerbox: bearebox /etc/kannel.conf Démarrer ensuite le smsbox smsbox /etc/kannel.conf Pour arrêter le tout, appuyer sur Ctrl+c sur la fenêtre du bearberbox. 4. La consultation de compte par SMS La consultation de compte consiste a mettre créer un fichier php qui va recueillir les données envoyé de l'utilisateur c'est à dire son code secret puis les traiter et lui renvoyer le montant de compte par sms L'utilisateur devra donc écrire : consulter «code secret» Donc dans le fichier kannel.conf on ajoute les lignes suivantes pour indiquer le mot clé et le fichier php group = sms service keyword = consulter post url = "http://localhost/sva/montant.php2?text=%r&num=%p" et puis on crée le fichier montant2.php <? php $code=$_get['text']; $num=$_get['num']; @mysql_connect('localhost','root','passer') or die("echec de connexion"); @mysql_select_db('lirt') or die("echec de sélection de la base."); $requete = "select * from banq where code='$code'"; $result = mysql_query($requete); $ligne = mysql_fetch_row($result); $numm = mysql_num_rows($result); Jean François Diokel DIOKH 20
// teste de l'existance du code if($numm!=0){ // teste de l'autorisation du num de l'utilisateur à consulter ce compte if($ligne[3]==$num) { $montant = $ligne[4]; echo "le montant de votre compte est de $montant"; else echo "vous n'étes pas autorisé à utiliser ce numéro"; else echo "le code n'existe pas";?> 5. Le transfert d'argent par SMS Pour transferer de l'argent par SMS l'utilisateur doit taper le mot clé suivi de son code secret, l'identifiant du destinataire et enfin le montant à transferer. Dans ce cas alors on ajoute dans le fichier kannel.conf group = sms service keyword = transferer post url = "http://localhost/sva/transfert.php2?text=%r&num=%p" Le %r représente le texte qui se trouve dans le corps du SMS reçu sans le mot clé %p représente le numéro de téléphone de l'émetteur du SMS et puis on crée le fichier transfert2.php <? php $text=$_get['text']; $tab=explode(" ",$text); $code=$tab[0]; $num=$_get['num']; $id_code_dest=$tab[1]; $montant=$tab[2]; @mysql_connect('localhost','root','passer') or die("echec de connexion"); @mysql_select_db('lirt') or die("echec de sélection de la base."); $requete = "select * from banq where code='$code'"; $result = mysql_query($requete); $ligne = mysql_fetch_row($result); Jean François Diokel DIOKH 21
$numm = mysql_num_rows($result); $requetedest = "select * from banq where id_code='$id_code_dest'"; $resultdest = mysql_query($requetedest); $lignedest = mysql_fetch_row($resultdest); $nummdest = mysql_num_rows($resultdest); // teste de l'existance du code if($numm!=0){ // teste de l'autorisation du num de l'utilisateur à consulter ce compte if($ligne[3]==$num){ // teste de l'existance du code du destinataire de la somme if($nummdest!=0){ // teste de l'existance du montant a transférer dans le compte if($ligne[4]>$montant){ $update = "update banq set montant=($ligne[4] $montant) where code=$code"; $up = mysql_query($update); $updatedest = "update banq set montant=($lignedest[4]+$montant) where id_code=$id_code_dest"; $updest = mysql_query($updatedest); echo "le transfert de $montant franc vers le compte de $lignedest[1] est bien effectuer"; else echo "Vous n'avez pas assez d'argent pour effectuer le transfer"; else echo "l'identifiant du destinateur n'existe pas"; else echo "vous n'étes pas autorisé à utiliser ce numéro"; else echo "le code n'existe pas";?> Jean François Diokel DIOKH 22
6. Le WEB to SMS Le Web to SMS consiste à envoyer un SMS via un formulaire sur un page web Pour cela on va créer 2 fichier: index.html prendre les données c'est à dire le texte à envoyer et le numéro du destinataire et l'envoyer au fichier send.php qui quant à lui va le traiter en utilisant kannel le fichier index.html <HTML> <HEAD> <TITLE>web sms.</title> </HEAD> <BODY> <TABLE WIDTH="505" HEIGHT="21" align="middle"> <FORM name="envoisms" action="send.php" method="get"> <TR> <TD><FONT size="+1"> A : </FONT></TD> <TD><input type="text" name="tel" size="20"></td> </TR> <TR height="10"> </TR> <TR height="10"> </TR> <TR> <TD><font size="+1"> Message : </font></td> <TD><textarea type="textarea" name="text" cols="30" rows="3"></textarea></td> </TR> <TR height="10"> </TR> <TR><DIV align="center"> <TD colspan="2" align="center"> <input type="submit" name="valider" value="send"> <input type="reset" name="annuler" value="reset"> </TD> </DIV> </TR> </FORM> </TABLE> </BODY> </HTML> Jean François Diokel DIOKH 23
le fichier send.php <? php $tel=$_get['tel']; $text=$_get['text']; $url="http://localhost:13013/cgi bin/sendsms? username=tester&password=foobar&from=jean&to=$tel&text=$text"; @file($url); echo "Message envoyé au $tel";?> CONCLUSION Les services à valeur ajoutée connaissent actuellement un succès étonnant avec l'envoie de SMS surtaxés et les nombreux serveurs vocal interactifs Nous savons maintenant qu avec les outils Open Source kannel, Asterisk, etc., la mise en place de ces services est facile à mettre en œuvre. Ce module nous a permis de mettre en pratique nos connaissances en informatique et en télécommunications. On c'est aussi aperçu que les SVA n'ont pas de limites. Jean François Diokel DIOKH 24