Вы находитесь на странице: 1из 24

RapportSVA

L.I.R.T/ESP2008

RAPPORTSVA

Par:JeanFranoisDiokelDIOKH Professeur:M.OUYA

JeanFranoisDiokelDIOKH

RapportSVA

L.I.R.T/ESP2008

SOMMAIRE
INTRODUCTION PREREQUIS I. LeServeurVocalInteractif 1.PrsentationdeAsterisk 2.Installation 3.Crationdescomptespourlesutilisateurs 4.Lesfichierssons 5.Lerpertoire/var/spool/asterisk/outgoing/ 6.Laconsultationdecompte 7.Letransfertd'agent 8.Laprisederendezvous II.SVAPARSMS 1.LerseauGSMGPRS 2.LeSMS 3.Kannel 4.LaconsultationdecompteparSMS 5.Letransfertd'argentparSMS 6.LeWEBtoSMS CONCLUSION

JeanFranoisDiokelDIOKH

RapportSVA

L.I.R.T/ESP2008

INTRODUCTION
Unservice valeurajouteestuneapplication,cumulantdesnotionsdeTlcommunications et dinformatiques,dontl'usagefaitl'objetd'unetarification.Ilprsentedoncuncaractrepurement commercial.Danscemodulenousavionsmettreenoeuvredeservicetelslesjeux,leebanking dont la consultation de son compte et le transfre de crdit par SMS et par un serveur vocal interactif,leWebtoSMSetleprisederendezvousavecdeslogicielslibre. Danscecadrenousallonsdansunpremiertempsparlerdelamiseenoeuvredecesservicesavec AsteriskpourlavoixpuissurKannelpourleSMS.

PRREQUIS
_MYSQL MySQLestunebasededonnesimplmentantlelangagederequteSQLun langagerelationneltrsconnu.AvecMySQLvouspouvezcrerplusieursbasesdedonnessurun serveur.Unebaseestcomposedetablescontenantdesenregistrements.Donconautiliserce serveurpourlabasededonnes. Oncreunebasededonnescontenantleschampsprenom,nom,codesecretdel'utilisateur(code), lenumrodetlphone(num)lemontantdesoncompte(montant). Cettebasededonneestsupposetrecelledelabanque.Etnousallonstravaillerdanslecasd'une seulebanque.

JeanFranoisDiokelDIOKH

RapportSVA

L.I.R.T/ESP2008

_PHP PHPestunlangagedescriptsOpenSource,spcialementconupourledveloppement d'applicationsWeb.IlpeuttreintgrfacilementauHTML.LegrandavantagedePHPestqu'ilest extrmementsimple,maisoffredesfonctionnalitsavancesnotammentencequiconcerneles entressorties,maisaussiunegrandefacilitdanslamanipulationdesfichiers.Ilpermetdetraiter desdonnesreues.Ily'aaussileAGIpourleserveurasterisk.Dufaitdesasimplicit,connaissant sapuissanceetlematrisantleplus,nousl'avonsutiliserpourlaralisationdesservices.

I.LeServeurVocalInteractif(SVI)
LeSVI(serveurvocalinteractif)consistemettreunmettreenplaceunserveurasterisksurune machineavecdesapplicationsdveloppesenphp,telsquelaconsultationdecompted'un utilisateurd'unebanqueetaussilagestiondutransfertd'argent,quivontfairelesrequtesdansla basededonnesmysql. Surcettepartiallonsfaireunebrveprsentationdeasterisk,puisl'installationetlaconfigurationet aprslamiseenplacedesapplicationspourlaconsultationdecompte,letransfertd'argentetla prisederendezvous.

1. Prsentationdeasterisk
Asteriskestunlogiciellibrequiimplmenteuncentraltlphonique.Lelogiciel permetuncertainnombredetlphonesconnectsd'changerdes appels,etdelesrelieraurseautlphoniquemondial.Lecodefut originellementcritparMarcSpencer(Digium). PourexcuterAsterisk,unordinateurpersonnel(PC)suffit,maisdumatriel supplmentaireserancessairesivoussouhaitezyconnecterdestlphones ordinaires,oulerelieraurseautlphonique. Pourlamiseenplaceduserveurvocalinteractifonaurautiliserdanslesfichiersdeasterisk seulementlefichier/etc/asterisk/extensions.confpourl'attributiondesnumrosd'appelavecl'usage defonctionsetd'applicationspourlamiseenuvredenosSVA. Onauraprincipalementcertainesfonctionsetapplicationsdanscefichier: _lesfonctions .CUT:Permetdecouperunevariable .CURL:RetrievesthecontentsofaURL _lesapplications .Answer:Rpondreunappel .Read:Litunevariable .Set:Dfinieunevariableoulavaleurd'unefonction .Playback:Lireunfichierson .Background:Lireunfichiersonentchedefonddansl'attentedelasaisied'unetouche JeanFranoisDiokelDIOKH 4

RapportSVA

L.I.R.T/ESP2008

.GotoIf:Serendreuneprioritdextensionprciseduncontextesuivantlaconditionpose .Record:Permetd'enregistrerunsonenformatwavougsm .System:Pourexcuterunecommandesystme

2.Installation
Listedespaquetsncessairespourlamiseenfonctionduserveur: asterisk:Paquetprincipal; espeak:Pourlasynthsevocale; sox:Utilitairedditionetdeconversionaudio(wav,gsm,mp3,...). Ontapelacommandeaptgetinstallasteriskespeaksox

3.Crationdescomptespourlesutilisateurs
Lacrationdecomptessefaitdanslefichier/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

JeanFranoisDiokelDIOKH

RapportSVA

L.I.R.T/ESP2008

Onenregistrelessonsquivontguiderl'utilisateurlorsd'unerequteavecl'applicationRecordde asteriskdanslefichierextensions.conf ;sondebienvenu exten=>100,1,Answer() exten=>100,2,Record(bienvenu:gsm) exten=>100,3,Hangup() ;sonpourentrerlecodesecret exten=>101,1,Answer() exten=>101,2,Record(entrer_code:gsm) exten=>101,3,Hangup() Suivantlemmeprincipeonvaenregistrerlesfichiersonsqu'onaurautiliserpourguiderles utilisateurs.Aprsoncopietouscesfichiersdanslerpertoire/son/qu'onacrepourcontenir l'ensembledessons. 5. Lerepertoire/var/spool/asterisk/outgoing/ C'estunrpertoireduserveurasteriskquidoitcontenirdesfichierd'extensions.calldontleserveur vaexcuterautomatiquementlesparamtresquis'ytrouvent. Nousl'avonsutiliserpourlaprisederendezvouspourqueleserveurpuisseinitierunappelentre2 comptes. Lesparamtresdufichier.call Channel:SIP/jean:Lecanalquiinitiel'appel MaxRetries:2:lenombredefoispourressayerl'appel RetryTime:60:Letempsattendrepourressayerl'appel WaitTime:30 :Letempsd'attentepourquel'appeldcroche Context:thies:Lecontexteolenumroestspcifi Extension:666:Lenumrodel'utilisateurappeler Priority:1 :Lapriorit

4. Lesfichierssons

6. Laconsultationdecompte
Pourlaconsultationdumontantdelasommedesonl'utilisateurdevrataperlenumro1000puis suivralesconsignes.Aprslasaisidesoncodesecretleserveurluidiralemontantqu'iladansson compte.Cecigraceaufichierphpmontant2.phpquivaprendrelecodesecretsaisidepuisasterisket letraiter. Pourdesmesuresdescuritl'utilisateurnepourraconsultersoncomptequ'avecsoncodesecretet lenumrodetlphonequiatenregistrdanslabasededonnes.

JeanFranoisDiokelDIOKH

RapportSVA Onajoutealorsdanslefichier/etc/asterisk.extensions.conf

L.I.R.T/ESP2008

;consultationdecompte exten=>1000,1,Playback(/son/bienvenu) exten=>1000,2,Background(/son/entrer_code) exten=>1000,3,Read(code,,3,,,10) ;l'utilisateurdoittaper3touchesavantles10secondes 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() Etpuisoncrelefichiermontant2.php <?php $code=$_POST['code']; $num=$_POST['num']; $numm=1; @mysql_connect('localhost','root','passer')ordie("Echecdeconnexion"); @mysql_select_db('lirt')ordie("Echecdeslectiondelabase."); $requete="select*frombanqwherecode='$code'"; $result=mysql_query($requete); $ligne=mysql_fetch_row($result); $numm=mysql_num_rows($result); //testedel'existanceducode if($numm!=0) { //renvoidumontantSIleCODEexisteETleNUMdel'appelantestAUTORISautilisercenum pourconsultersoncompte if($ligne[3]==$num){ $montant=$ligne[4]; $test="espeakvfr+f2s135\"lemontantdevotrecompteestde$montant\"w /son/son$num.wav"; } //LeNumrotantdiffrantdunumroassociacecodedanslabasededonne else $test="espeakvfr+f2s135\"vousn'tespasautorisutilisercenumro\"w /son/son$num.wav"; } //lecoden'existantpasdanslabasededonne else{ $test="espeakvfr+f5s135\"lecoden'existepas\"w/son/son$num.wav"; $montant=0; }

JeanFranoisDiokelDIOKH

RapportSVA //crationdufichierson exec($test); $son="sox/son/son$num.wavr8000c1g/son/son$num.gsm"; exec($son); $rm="rm/son/son$num.wav"; exec($rm); echo$montant; ?>

L.I.R.T/ESP2008

Onvoitsurl'interfacedeasteriskl'utilisateurjeandontlenumroestle666quiconsulteson compte

JeanFranoisDiokelDIOKH

RapportSVA

L.I.R.T/ESP2008

1. Letransfertd'agent
Pourletransfertdecrditl'utilisateurdevrataperlenumro1001puisselaisserguiderparle serveur.C'estdireildevraentrersoncodesecret,lenumrod'identificationdudestinatairede l'argentetenfinlasommetransfrer.Demmepourdesmesuresdescuritl'utilisateurnepourra fairedetransfertd'argentqu'avecsoncodesecretetlenumrodetlphonequiatenregistrdans labasededonnes.Onvrifieraaussisil'iddudestinataireexisteetlapersonnequifaitla transactionassezd'argenteffectuersarequte. Onajoutealorsdanslefichier/etc/asterisk.extensions.conf ;transfertd'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) ;Ondiral'utilisateurdetaper#pourterminer 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() etpuisoncrelefichiertransfert2.php <?php $code=$_POST['code']; $num=$_POST['num']; $id_code_dest=$_POST['id_code_dest']; $montant=$_POST['montant']; @mysql_connect('localhost','root','passer')ordie("Echecdeconnexion"); @mysql_select_db('lirt')ordie("Echecdeslectiondelabase"); $requete="select*frombanqwherecode='$code'"; $result=mysql_query($requete); $ligne=mysql_fetch_row($result); $numm=mysql_num_rows($result); $requetedest="select*frombanqwhereid_code='$id_code_dest'"; $resultdest=mysql_query($requetedest); $lignedest=mysql_fetch_row($resultdest); $nummdest=mysql_num_rows($resultdest); //testedel'existanceducode if($numm!=0){ JeanFranoisDiokelDIOKH 9

RapportSVA if($ligne[3]==$num){ if($nummdest!=0){ if($ligne[4]>$montant){

L.I.R.T/ESP2008

$update="updatebanqsetmontant=($ligne[4]$montant)where code=$code"; $up=mysql_query($update); $updatedest="updatebanqsetmontant=($lignedest[4]+$montant)where id_code=$id_code_dest"; $updest=mysql_query($updatedest); //$test="touch/son/son.php"; $test="espeakvfr+f2s135\"letransfertde$montantfrancverslecompte de$lignedest[1]estbieneffectuer\"w/son/son$num.wav"; $trans=4; } else{ $test="espeakvfr+f2s135\"Vousn'avezpasassezd'argentpoureffectuer letransfer\"w/son/son$num.wav"; $trans=2; } } else{ $test="espeakvfr+f2s135\"l'identifiantdudestinateurn'existepas\"w /son/son$num.wav"; $trans=1; } } else { $test="espeakvfr+f2s135\"vousn'tespasautorisutilisercenumro\"w /son/son$num.wav"; $trans=5; } } else{ $test="espeakvfr+f5s135\"lecoden'existepas\"w/son/son$num.wav"; $trans=0; } exec($test); $son="sox/son/son$num.wavr8000c1g/son/son$num.gsm"; exec($son); $rm="rm/son/son$num.wav"; exec($rm); echo$trans; ?>

JeanFranoisDiokelDIOKH

10

RapportSVA

L.I.R.T/ESP2008

etmaintenantenfaisantuntestavecl'utilisateurjeanaveclenumro666quiveutdonnerun montantde1000l'utilisateurdontl'id_codeest3,onasurl'interfacedeasterisk:

8.Laprisederendezvous
Elleconsisteprogrammerunappell'aideduserveurvocalinteractif. Onajoutedanslefichierextensions.confleslignesquivontsuivrepourquel'utilisateurpuissetaper ladateetl'heuredurendezvous,lenumrodelapersonnequ'ilvoudrajoindreetqueleserveur envoiecesinformationsaufichierphppourlestraiter. Aprstraitement,quantlaprisederendezvousestbienfaitesleserveurvadiffrleprocessusdela commandequipermettred'envoyerlefichierd'extensions.calldanslerpertoire/var/spool/asterisk/ outgoing/. Ladonneenvoyerparlefichierphppouvanttredutype"at$heur:$min$mois/$jr/$annee< /son/at$num"ou34quisontdiffrents,onutiliselafonctionCUTpourprendrequeles2 premirelettreouchiffre.

JeanFranoisDiokelDIOKH

11

RapportSVA Onajoutedanslefichierextensions.conf

L.I.R.T/ESP2008

;prisederendezvous exten=>1011,1,Playback(bienvenu) exten=>1011,2,Background(entrer_date) ;;ladateseraduformatJJ/MM/AA,donc6chiffres exten=>1011,3,Read(date,,8,,15) exten=>1011,4,Background(entrer_heure) ;l'heureseraduformatHH/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() Lefichierrv.php L'objectifdecefichierestdevoirsil'heuredurendezvouschoisiestdisponible.Sic'estlecasilva crerunfichierd'extensions.calletunfichierquelacommandeatvaprendreenparamtre. NB:L'utilisateurdoitlorsdelaprisederendezvoustenircompted'uneintervallede20minutes entre2appelspourluipermettredebientraitersesappels.Donclesminutesserontparpasde20. <?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')ordie("Echecdeconnexion"); @mysql_select_db('lirt')ordie("Echecdeslectiondelabase."); $requete="select*fromrvwheretime='$date$heure'"; $result=mysql_query($requete); $numm=mysql_num_rows($result); //testedelavaliditedesdonnesreu if($jr<=31&&$mois<=12&&$heur<=24&&$min<=60){ //testedurespectdel'intervalledetempssuggre JeanFranoisDiokelDIOKH 12

RapportSVA

L.I.R.T/ESP2008

if($min%20==0){ //testepourvoirsil'heure(heureetdate)n'apastchoisi if($numm==0){ $update="insertintorvvalues('$date$heure')"; $up=mysql_query($update); //crationdufichiertestsuividunum.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); //crationdufichierquivarecevoirlacommandeaexecuterparat $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="espeakvfr+f2s135\"Rvbienpris\"w/son/son_rv$num.wav"; } else{ $son="espeakvfr+f2s135\"l'heureatchoisi\"w/son/son_rv$num.wav"; $rv=32; } } else{ $son="espeakvfr+f2s135\"veuillezrespecterl'intervalledetemps\"w /son/son_rv$num.wav"; $rv=33; } } else{ $son="espeakvfr+f2s135\"veuilleztaperunebonnedate\"w/son/son_rv$num.wav"; $rv=34; } exec($son); $son1="sox/son/son_rv$num.wavr8000c1g/son/son_rv$num.gsm"; exec($son1); $rm="rm/son/son_rv$num.wav"; exec($rm); echo$rv; ?>

JeanFranoisDiokelDIOKH

13

RapportSVA Onvoitalorssurl'interfacedeasterisk

L.I.R.T/ESP2008

II. SVAPARSMS
Pourlamiseenplacedecesservicesonabranchnotretlphoneportablelamachineviale cbleparleportUSBpourjouerlerledemodem.DanscetteonautilislelogiciellibreKannel dontonvafairesaprsentation,l'installationetlaconfiguration.ParlerduSMSdanslerseauGSM etendernierlieudesservicesmiseenoeuvretelsquelaconsultationdecomptebanquaire,transfert d'argentetWebtoSMS

JeanFranoisDiokelDIOKH

14

RapportSVA

L.I.R.T/ESP2008

1. LerseauGSMGPRS
L'achitecture

lesCannauxLogiques

JeanFranoisDiokelDIOKH

15

RapportSVA

L.I.R.T/ESP2008

2. LeSMS
UndesservicesoffertparleGSMestlagestiondesminimessagesouSMS(ShortMessage Service).Ilnes'agitplusdelatransmissiondesonsmaisd'untextelimitthoriquement160 caractres.ChaquemessageenvoytransiteverslecentredemessageriebaptisSMSC(Short MessageServiceCenter)oilesttemporairementstock.Dsqueledestinataireestdisponible, c'estdirelorsquelemobileestsoustensionetprsentdanslazonedecouverturedurseauGSM, lemessageesttransmis.LemessagepeutexceptionnellementrestersurleSMSCdurantplusieurs jours.Ensituationnormaleonpeutconsidrerquel'envoied'unSMSestinstantanconditionque lemobilededestinationsoitoprationnel. Selonledegrdeperfectionnementdumobileutilis,unaccusderceptionpeutcependant safficherlorsqueleSMSaeffectivementatteintsadestination.Etpourpeuquelabonnmobile bnficieduneoptionMonde(souventgratuite),sesSMSlatteindrontenprincipemme ltranger. LenvoidunSMSnencessitepasungranddploiementcotoprateurcarletraficSMS nempruntepaslesmmescanauxquelescommunicationsvocales(iltransitepardescanauxde signalisationbeaucoupmoinssollicits). UnSMSreusurlemobileesttraitdemanirediffrentsuivantsaclasse.Laclasseestdfinie dansleSMSDataCodingScheme(DCSVoirnorme3GPP23.038): classe0:lemessageestdirectementaffichl'utilisateursurl'crandumobilela rception.Unrapportestenvoyensuiteaucentredeservice.Lemessagen'estenregistrni danslammoiredutlphonenidanslacarteSIM.Ilesteffacdsquel'utilisateuravalid lavisualisation. classe1:lemessageestenregistrdanslammoiredutlphoneetsicettemmoireest pleine,danslacarteSIMpardfaut. Note:unmessagereudetypeWAPPushpourconfigurerunmobileparexempleestdeclasse1.

classe2:lemessageestenregistrsurlacarteUSIM.Unaccusderceptionestenvoyau centredeserviceunefoisquelemessageabienttransfrsurl'USIM. classe3:lemessageesttransfrsurunquipementexterneconnectaumobile(PDA,PC portable..).

DansnotrecasonvoitquelesSMSserontdeclasse3pourqueKannelpuisselestraiter.

JeanFranoisDiokelDIOKH

16

RapportSVA

L.I.R.T/ESP2008

3.Kannel
a.Prsentation KannelestunepasserelleSMSetWAPopensourceetgratuit.Kannelestactuellementdisponible pourlessystmesLinux(RedhatetDebian).Lanc enmars1999,leprojetest linitiativedela compagnieFinlandaiseWAPIT.Kannelatreconnueenmars1011lorsquilatcertifiparWap ForumentantquepremirepasserelleWAP1.1danslemonde. C'estunoutiltrsintressantpourdvelopperdesapplicationsencollaborationavecleserveur Apache b.AchitechturedeKannel La passerelle possde trois interfaces chacune ne pouvant communiquer quavec un type dquipementspcifique:

LescentresSMS(SMSC),utilisantdiversprotocoles. LesserveursHTTP,pourlescontenusWAPetSMS. LesterminauxWAP,implmentantlapiledeprotocoleWAP.

ExternalinterfacesofKannel IlestnotqueKannelutiliselescommandesATpourcommuniqueravecletlphone. AT+CPIN AT+CNMI AT+CMGL AT+CMGR AT+CMGS AT+CMSS AT+CMGW EntrerlecodePIN IndicationconcernantunnouveauSMS ListelesSMSstocksenmmoire Lectured'unSMS Envoied'unSMS Envoied'unSMSstocksenmmoire critured'unSMS

JeanFranoisDiokelDIOKH

17

RapportSVA c.Installation Ontapelacommandeaptgetinstallkannel d.Configuration Lefichierdeconfiguration/etc/kannel.confpeuttredivisen2parties: laconfigurationdubearerbox, laconfigurationdusmsbox,

L.I.R.T/ESP2008

LapartieBearerboxaungroupecoreettouslesgroupesdeCentresSMS,alorsquelapartie wapboxaseulementungroupewapbox.Danslapartiesmsboxilyaungroupesmsboxetunbon nombredegroupessmsserviceetsendsmsuser. Ontlchargelefichiergateway1.4.1.tar.gz,etledsarchivedans/usr/local/ Copierlesfichierskannel.confetmodems.confquisontdans/usr/local/gateway1.4.1/doc/examples/ vers/etc/

Configurationdubearerbox LeGroupeCore:

LeGroupeSMSC:

JeanFranoisDiokelDIOKH

18

RapportSVA

L.I.R.T/ESP2008

Configurationdusmsbox LeGroupesmsbox

ildfinitlaconfigurationdekannelquigrel'envoieetlarceptiondeSMS

Legroupesendsmsuser

Cegroupepermetdedfinirlesutilisateurspouvantutiliserl'envoiedeSMSvialeWeb.

LeGroupesmsservice

IlpermetdedfinirlesservicesSMS utiliser.Chaqueserviceestidentifi parunmotcl et l'applicationquisechargeradetraiterlesrequtes.

JeanFranoisDiokelDIOKH

19

RapportSVA

L.I.R.T/ESP2008

Danslaconfigurationdekannel,nousavonsincluslefichier/etc/modems.conf quicontientdes informationssupplmentairesurletypedemodemutiliser. Include="/etc/modems.conf" PourdmarrerKannelilfautagircommesuit: Dmarrerd'abordlebearerbox: bearebox/etc/kannel.conf Dmarrerensuitelesmsbox smsbox/etc/kannel.conf Pourarrterletout,appuyersurCtrl+csurlafentredubearberbox.

4.LaconsultationdecompteparSMS
Laconsultationdecompteconsisteamettrecrerunfichierphpquivarecueillirlesdonnesenvoy del'utilisateurc'estdiresoncodesecretpuislestraiteretluirenvoyerlemontantdecomptepar sms L'utilisateurdevradonccrire:consultercodesecret Doncdanslefichierkannel.confonajouteleslignessuivantespourindiquerlemotcletlefichier php group=smsservice keyword=consulter posturl="http://localhost/sva/montant.php2?text=%r&num=%p"

etpuisoncrelefichiermontant2.php <?php $code=$_GET['text']; $num=$_GET['num']; @mysql_connect('localhost','root','passer')ordie("Echecdeconnexion"); @mysql_select_db('lirt')ordie("Echecdeslectiondelabase."); $requete="select*frombanqwherecode='$code'"; $result=mysql_query($requete); $ligne=mysql_fetch_row($result); $numm=mysql_num_rows($result);

JeanFranoisDiokelDIOKH

20

RapportSVA //testedel'existanceducode if($numm!=0){ //testedel'autorisationdunumdel'utilisateurconsultercecompte if($ligne[3]==$num){ $montant=$ligne[4]; echo"lemontantdevotrecompteestde$montant"; } elseecho"vousn'tespasautorisutilisercenumro"; } elseecho"lecoden'existepas"; ?>

L.I.R.T/ESP2008

5.Letransfertd'argentparSMS
Pourtransfererdel'argentparSMSl'utilisateurdoittaperlemotclsuividesoncodesecret, l'identifiantdudestinataireetenfinlemontanttransferer. Danscecasalorsonajoutedanslefichierkannel.conf group=smsservice keyword=transferer posturl="http://localhost/sva/transfert.php2?text=%r&num=%p" Le%rreprsenteletextequisetrouvedanslecorpsduSMSreusanslemotcl %preprsentelenumrodetlphonedel'metteurduSMS

etpuisoncrelefichiertransfert2.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')ordie("Echecdeconnexion"); @mysql_select_db('lirt')ordie("Echecdeslectiondelabase."); $requete="select*frombanqwherecode='$code'"; $result=mysql_query($requete); $ligne=mysql_fetch_row($result); JeanFranoisDiokelDIOKH 21

RapportSVA $numm=mysql_num_rows($result); $requetedest="select*frombanqwhereid_code='$id_code_dest'"; $resultdest=mysql_query($requetedest); $lignedest=mysql_fetch_row($resultdest); $nummdest=mysql_num_rows($resultdest);

L.I.R.T/ESP2008

//testedel'existanceducode if($numm!=0){ //testedel'autorisationdunumdel'utilisateurconsultercecompte if($ligne[3]==$num){ //testedel'existanceducodedudestinatairedelasomme if($nummdest!=0){ //testedel'existancedumontantatransfrerdanslecompte if($ligne[4]>$montant){ $update="updatebanqsetmontant=($ligne[4]$montant)where code=$code"; $up=mysql_query($update); $updatedest="updatebanqsetmontant=($lignedest[4]+$montant)where id_code=$id_code_dest"; $updest=mysql_query($updatedest); echo"letransfertde$montantfrancverslecomptede$lignedest[1]estbien effectuer"; } elseecho"Vousn'avezpasassezd'argentpoureffectuerletransfer"; } elseecho"l'identifiantdudestinateurn'existepas"; } elseecho"vousn'tespasautorisutilisercenumro"; } elseecho"lecoden'existepas"; ?>

JeanFranoisDiokelDIOKH

22

RapportSVA

L.I.R.T/ESP2008

6.LeWEBtoSMS
LeWebtoSMSconsisteenvoyerunSMSviaunformulairesurunpageweb Pourcelaonvacrer2fichier:index.htmlprendrelesdonnesc'estdireletexteenvoyeretle numrodudestinataireetl'envoyeraufichiersend.phpquiquantluivaletraiterenutilisantkannel

lefichierindex.html <HTML> <HEAD><TITLE>websms.</TITLE></HEAD> <BODY> <TABLEWIDTH="505"HEIGHT="21"align="middle"> <FORMname="envoisms"action="send.php"method="GET"> <TR> <TD><FONTsize="+1">A:</FONT></TD> <TD><inputtype="text"name="tel"size="20"></TD> </TR> <TRheight="10"></TR><TRheight="10"></TR> <TR> <TD><fontsize="+1">Message:</font></TD> <TD><textareatype="textarea"name="text"cols="30" rows="3"></textarea></TD> </TR> <TRheight="10"></TR> <TR><DIValign="center"> <TDcolspan="2"align="center"> <inputtype="submit"name="valider"value="Send"> <inputtype="reset"name="annuler"value="Reset"> </TD> </DIV> </TR> </FORM> </TABLE> </BODY> </HTML> JeanFranoisDiokelDIOKH 23

RapportSVA

L.I.R.T/ESP2008

lefichiersend.php <?php $tel=$_GET['tel']; $text=$_GET['text']; $url="http://localhost:13013/cgibin/sendsms? username=tester&password=foobar&from=jean&to=$tel&text=$text"; @file($url); echo"Messageenvoyau$tel"; ?>

CONCLUSION
Lesservicesvaleurajouteconnaissentactuellementunsuccstonnantavecl'envoiedeSMS surtaxsetlesnombreuxserveursvocalinteractifs NoussavonsmaintenantquaveclesoutilsOpenSourcekannel,Asterisk,etc.,lamiseenplacede cesservicesestfacilemettreenuvre. Cemodulenousapermisdemettreenpratiquenosconnaissanceseninformatiqueeten tlcommunications. Onc'estaussiaperuquelesSVAn'ontpasdelimites.

JeanFranoisDiokelDIOKH

24

Вам также может понравиться