Télécharger ang L'article wikipedia le plus proche de vous

Éditeur : hervé Hoareau   +
Mise à jour le : 18/10/2011  ·   Licence : Creative Commons  ·   Téléchargé 2 fois   ·   Date de sortie : 08/11/2011
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.
Téléchargement :
Compatibilité :
Windows Linux Mac Symbian iPhone  






		
  1. <?php
  2.  
  3. //TOKEN g?n?r? ? titre de demonstration par SFR
  4. //le nombre de SMS disponibles sur ce compte peut ?tre ?puis?
  5. //il est conseiller de vous inscrire sur api.sfr.fr pour obtenir votre propre token
  6. define("DEVTOKEN","<mettre votre token ici>");
  7.  
  8. // RestRequest est une fonction g?n?rique pour ex?cuter des requ?tes REST en PHP
  9. // cette fonction utilise fopen. Elle est compatible avec l'h?bergement gratuit chez Free.
  10. function RestRequest ($url, $method='GET', $data=null, $optional_headers = null) {
  11. $params = array('http' =>
  12. array('method'=>$method,
  13. 'content'=>$data,
  14. 'timeout'=>20
  15. ));
  16.  
  17. if ($optional_headers !== null) {$params['http']['header'] = $optional_headers;}
  18.  
  19. $ctx = stream_context_create($params);
  20. $fp = @fopen($url, 'rb', false, $ctx);
  21.  
  22. if (!$fp) {
  23. throw new Exception("Problem with $url, $php_errormsg");
  24. @fclose($fp);
  25. return(null);
  26. }
  27.  
  28. $response = @stream_get_contents($fp);
  29. if ($response === false) {throw new Exception("Problem reading data from $url, $php_errormsg");}
  30.  
  31. @fclose($fp);
  32.  
  33. return $response;
  34. }
  35.  
  36.  
  37. //Le code principale est appell? r?guli?rement via un cron
  38. //Sur cronjobonline il est possible de mettre en place
  39. //gratuitement un appel r?gulier pour une page php.
  40.  
  41. //Via la m?thode Consume on interroge la file des SMS entrants
  42. //cette m?thode ? ?t? construite via l'API Test Tool d'SFR API : api.sfr.fr/apitesttool
  43. $event=simplexml_load_string(RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/event/consume?responseType=xml&token=".DEVTOKEN));
  44. if($event->redEvent->eventCode==11)
  45. {
  46. //On r?cup?re le num?ro de l'exp?diteur
  47. $exp=$event->redEvent->eventSource;
  48.  
  49. //on attribu un num?ro court ? l'exp?diteur afin de simplifier les ?changes SMS
  50. //entre le mobile et l'applications (sinon l'exp?diteur doit continuer a commencer
  51. //ses SMS par #wikiloc#, grace ? un num?ro court il n'a plus besoin du #
  52. $xml=simplexml_load_string(RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/shortcode/generateSmsShortcode?responseType=json&token=".DEVTOKEN."&msisdn=".$exp));
  53.  
  54. //... On g?olocalise la ligne ?metrice
  55. //la premi?re fois il faut qu'elle confirme qu'elle accepte d'?tre g?olocalis?e par WikiLoc
  56. //si elle confirme la localization peut ?tre r?alis?e
  57. $url="http://ws.red.sfr.fr/red-ws/red-b2c/resources/loc/localize?responseType=xml&token=".DEVTOKEN."&userIdentifier=".$exp."&type=PhoneNumber";
  58. $rc=simplexml_load_string(RestRequest($url));
  59.  
  60. //Si la localisation a pu ?tre r?alis?e errorcode=0 ...
  61. if(($rc)&&($rc->errorCode==0)){
  62. //On recupere la position de l'expediteur (la precision varie suivant la densite d'antennes)
  63. $lng=$rc->location->longitude;
  64. $lat=$rc->location->latitude;
  65.  
  66. //Si le message est "wiki", on recherche l'article wikipedia
  67. if(strtolower($event->redEvent->eventMessage)=="wiki"){
  68. //On interroge le service geoname pour r?cup?r? les articles wikipedia les plus proches
  69. //Le service est interog? avec le username "sfrapi", il est conseiller de vous inscrire
  70. //afin d'utiliser votre propre compte
  71. $xml=simplexml_load_string(RestRequest("http://api.geonames.org/findNearbyWikipedia?lat=".$lat."&lng=".$lng."&username=sfrapi&style=full"));
  72. if($xml)
  73. //puis on recherche l'article le plus pertinent dans la liste des articles
  74. //retourn?s par geoname
  75. for($i=0;$i<count($xml->entry);$i++){
  76. $article=$xml->entry[$i];
  77. if($article->rank>$max){$max=$article->rank;$best=$article;}
  78. }
  79.  
  80. //Enfin le lien vers l'article le plus pertinent est renvoy? via SMS au demandeur.
  81. RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/sms/send?responseType=xml&token=".DEVTOKEN."&to=".$exp."&type=PhoneNumber&msg=".$best->wikipediaUrl);
  82. }
  83.  
  84. if(strtolower($event->redEvent->eventMessage)=="meteo"){
  85. $xml=simplexml_load_string(RestRequest("http://api.geonames.org/findNearbyPostalCodes?lat=".$lat."&lng=".$lng."&username=sfrapi"));
  86. $xml=simplexml_load_string(RestRequest("http://api.meteorologic.net/forecarss?p=".$xml->code->name));
  87. 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);
  88. }
  89.  
  90. }
  91. }
  92. ?>
  93.  


Poster une réponse Retrouver la discussion sur le forum

Avatar de stealth35 stealth35
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.

Connexion

Identifiant
Mot de passe
S'inscrireMot de passe oublié ?
 
 
 
 
Partenaires

Hébergement Web