Présentation
On utilise les web services proposés par SFR API pour envoyer, recevoir et géolocaliser des lignes SFR.
la plateforme geoname permet via la methode "findNearbyWikipedia" de trouver l'article wikipedia le plus proche des coordonnées géographique fourni par la plateforme SFR.
Le script doit être régulièrement appelé via un CRON pour surveiller l'arrivé éventuel de SMS.
ce code peut être largement amélioré. il est volontairement réduit au minimum à titre d'illustration des web services SFR.
la plateforme geoname permet via la methode "findNearbyWikipedia" de trouver l'article wikipedia le plus proche des coordonnées géographique fourni par la plateforme SFR.
Le script doit être régulièrement appelé via un CRON pour surveiller l'arrivé éventuel de SMS.
ce code peut être largement amélioré. il est volontairement réduit au minimum à titre d'illustration des web services SFR.
Compatibilité :
<?php //TOKEN g?n?r? ? titre de demonstration par SFR //le nombre de SMS disponibles sur ce compte peut ?tre ?puis? //il est conseiller de vous inscrire sur api.sfr.fr pour obtenir votre propre token // RestRequest est une fonction g?n?rique pour ex?cuter des requ?tes REST en PHP // cette fonction utilise fopen. Elle est compatible avec l'h?bergement gratuit chez Free. function RestRequest ($url, $method='GET', $data=null, $optional_headers = null) { 'content'=>$data, 'timeout'=>20 )); if ($optional_headers !== null) {$params['http']['header'] = $optional_headers;} if (!$fp) { throw new Exception("Problem with $url, $php_errormsg"); return(null); } if ($response === false) {throw new Exception("Problem reading data from $url, $php_errormsg");} return $response; } //Le code principale est appell? r?guli?rement via un cron //Sur cronjobonline il est possible de mettre en place //gratuitement un appel r?gulier pour une page php. //Via la m?thode Consume on interroge la file des SMS entrants //cette m?thode ? ?t? construite via l'API Test Tool d'SFR API : api.sfr.fr/apitesttool $event=simplexml_load_string(RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/event/consume?responseType=xml&token=".DEVTOKEN)); if($event->redEvent->eventCode==11) { //On r?cup?re le num?ro de l'exp?diteur $exp=$event->redEvent->eventSource; //on attribu un num?ro court ? l'exp?diteur afin de simplifier les ?changes SMS //entre le mobile et l'applications (sinon l'exp?diteur doit continuer a commencer //ses SMS par #wikiloc#, grace ? un num?ro court il n'a plus besoin du # $xml=simplexml_load_string(RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/shortcode/generateSmsShortcode?responseType=json&token=".DEVTOKEN."&msisdn=".$exp)); //... On g?olocalise la ligne ?metrice //la premi?re fois il faut qu'elle confirme qu'elle accepte d'?tre g?olocalis?e par WikiLoc //si elle confirme la localization peut ?tre r?alis?e $url="http://ws.red.sfr.fr/red-ws/red-b2c/resources/loc/localize?responseType=xml&token=".DEVTOKEN."&userIdentifier=".$exp."&type=PhoneNumber"; //Si la localisation a pu ?tre r?alis?e errorcode=0 ... if(($rc)&&($rc->errorCode==0)){ //On recupere la position de l'expediteur (la precision varie suivant la densite d'antennes) $lng=$rc->location->longitude; $lat=$rc->location->latitude; //Si le message est "wiki", on recherche l'article wikipedia //On interroge le service geoname pour r?cup?r? les articles wikipedia les plus proches //Le service est interog? avec le username "sfrapi", il est conseiller de vous inscrire //afin d'utiliser votre propre compte $xml=simplexml_load_string(RestRequest("http://api.geonames.org/findNearbyWikipedia?lat=".$lat."&lng=".$lng."&username=sfrapi&style=full")); if($xml) //puis on recherche l'article le plus pertinent dans la liste des articles //retourn?s par geoname for($i=0;$i<count($xml->entry);$i++){ $article=$xml->entry[$i]; if($article->rank>$max){$max=$article->rank;$best=$article;} } //Enfin le lien vers l'article le plus pertinent est renvoy? via SMS au demandeur. RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/sms/send?responseType=xml&token=".DEVTOKEN."&to=".$exp."&type=PhoneNumber&msg=".$best->wikipediaUrl); } $xml=simplexml_load_string(RestRequest("http://api.geonames.org/findNearbyPostalCodes?lat=".$lat."&lng=".$lng."&username=sfrapi")); $xml=simplexml_load_string(RestRequest("http://api.meteorologic.net/forecarss?p=".$xml->code->name)); RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/sms/send?responseType=xml&token=".DEVTOKEN."&to=".$exp."&type=PhoneNumber&msg=".$xml->item->link); } } } ?>
Poster une réponse
Retrouver la discussion sur le forum
Modérateur
le 18/10/2011
pourquoi t’utilises pas simplexml_load_file ?
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.




La discussion sur le forum