Rapport SVA L.I.R.T/ESP 2008 RAPPORT SVA. Par: Jean François Diokel DIOKH. Professeur: M. OUYA. Jean François Diokel DIOKH 1



Documents pareils
Mise en place d un système de Téléphonie sur IP basé sur le logiciel Asterisk

Le support de la vidéo par Asterisk

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Sécurité Informatique. Description. Prérequis. Un petit test avant de commencer s embourber

Les protocoles de VoIP tels H323 ou SIP encouragent l'emploi de noms d'extensions alphanumériques ou adresses de messagerie.

Déployez votre IPBX aussi facilement que votre PABX

TP JAVASCRIPT OMI4 TP5 SRC

JESSY ZANGANI Stage Mairie De La Seyne Jessyzangani.wordpress.com

Stéphanie Lacerte. Document technique. Connextek. 31 mai Cloudtel

Séance d ED n 5 : HTML et JavaScript

LA VOIX SUR GPRS. 1. Introduction. P. de Frino (1), S. Robert (2), G. Cecchin (3) Résumé

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Architecture de la plateforme SBC

PHP 4 PARTIE : BASE DE DONNEES

Pratique et administration des systèmes

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Module BD et sites WEB

SERVEUR DE MESSAGERIE

Guide de configuration de la Voix sur IP

Gestionnaire de connexions Guide de l utilisateur

Votre appareil est configuré en usine pour permettre d'envoyer immédiatement des SMS.

Le service FTP. M.BOUABID, Page 1 sur 5

QTEK 9100 QTEK S200 HP 6915

Stockage du fichier dans une table mysql:

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

[Serveur de déploiement FOG]

Manuel d intégration API FTP SMS ALLMYSMS.COM

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

PHP et les Bases de données - Généralités

TP Voix sur IP SIP et Asterisk

Organisation du module

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Mise en place d un serveur Proxy sous Ubuntu / Debian

Mysql. Les requêtes préparées Prepared statements

OPTIONS INTEGREES. des s des fax via internet (par ) des messages vocaux des messages SMS des T-mails ( s en synthèse vocale)

CODAGE DES SMS. 2 Commandes «AT» 25 3 Matériels utilisés 55 4 Interfacer un téléphone GSM 73 5 Réalisations électroniques 101

Asterisk QuickRecord. ANTOINE MANSUY IUT DE COLMAR

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

SOLUTION D ENVOI DE SMS POUR PROFESSIONNELS

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

PFE Télécommunications. Pré-rapport à l'issue des 6 premières semaines de stage. Page 1 sur 5 1 %

Programmation Web. Madalina Croitoru IUT Montpellier

Mise en place d un service de voix sur IP

Nicolas Christophe Sahut - LinuxDays.ch - 8 au 12 mai Genève 1

Documentation pour l envoi de SMS

EGGACOM. Manuel d'utilisation (version beta) Nano et Master VoIP 1.0

Formulaire pour envoyer un mail

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Guide de référence rapide sur la messagerie vocale d'avaya Distributed Office

Concept Compumatica Secure Mobile

Connexion sur REDLION G-308 avec le modem GSM GDW-11 pour envoi de SMS

Maarch V1.4

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

SERVEUR DE MESSAGERIE

Note : Ce tutoriel a été réalisé sur GNU/Linux (Ubuntu) avec un serveur LAMP installé en local.

Bon ben voilà c est fait!

par Tarik Fdil

CASE-LINUX MAIL - ROUNDCUBE

TP N 1 : Installer un serveur trixbox.

Attaques applicatives

Téléphoner depuis le PC Vue d'ensemble

1. La plate-forme LAMP

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. - media-2001.communication &.

Accès à un coupleur/contrôleur Ethernet via une liaison téléphonique

Programmation Web. Introduction

TAGREROUT Seyf Allah TMRIM

Création de formulaires interactifs

Guide de l'utilisateur

Assistance à distance sous Windows

GUIDE D UTILISATION DES SERVICES PACKAGES

Business Talk IP Centrex. guide. web utilisateur. pour. les services standards

VoIP Sniffing IHSEN BEN SALAH (GL 3) MAHMOUD MAHDI (GL 3) MARIEM JBELI (RT 2) SAFA GALLAH (RT 3) SALAH KHEMIRI (RT 3) YOUSSEF BEN DHIAF (GL 3)

OpenOffice Base Gestionnaire de Base de Données

Démonstration de la mise en cache via HTML 5 sur iphone

Module http MMS AllMySMS.com Manuel d intégration

BULK SMS Envoi en masse d un message texte moyennant un téléphone mobile (GSM)

Guide Utilisateur. Les communications unifiées au service de la performance opérationnelle. sfrbusinessteam.fr. Faire équipe avec vous

56K Performance Pro Modem

Conseils importants. Recommandations concernant le N91 et le N91 8 Go. Nokia PC Suite (en particulier Nokia Audio Manager) Gestion de fichiers

CL8400. Téléphone GSM Amplifié. Français

Manuel d'utilisation du navigateur WAP Palm

Belgacom Forum TM 3000 Manuel d utilisation

GSM/GPRS/GPS Traceur Véhicule G-1000 PRO Manuel D utilisation

API HTTP DOCUMENTATION TECHNIQUE PLATEFORME SAAS D'ENVOI DE SMS. Version Mise à jour : 3 juillet 2015

Activité : TP Durée : 6H00. Un PC d assemblage de marque NEC Un casque avec micro Une clé USB. Un CD de Windows XP professionnel

SMS+ PRÉSENTATION. Ensemble, protégeons l'environnement. N'imprimez ce document qu'en cas de nécessité.

MANUEL. de l application «CdC Online» pour Windows. Table des matières

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

CONCEPT de MICRO-DOMOTIQUE. Système STANTOR-DOMODULOR

Manuel Utilisateur Téléphone IP Thomson ST 2030

Assistance à distance. Guide d utilisation

MO-Call pour les Ordinateurs. Guide de l utilisateur

Installation locale de JOOMLA SEPIA

Asterisk Use cases. Interconnexion avec un central propriétaire Multi-site. Linuxdays Genève, 24 mars

Gestion de stock pour un magasin

Activités HTML. Code: act-html

Transcription:

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