begin process at 2012 05 27 20:56:41
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > WIKILOC : L'ARTICLE WIKIPEDIA SUR VOTRE MOBILE SFR LE PLUS PROCHE DE L'ENDROIT OU VOUS ÊTES PAR UN SIMPLE SMS VIA SFR API

WIKILOC : L'ARTICLE WIKIPEDIA SUR VOTRE MOBILE SFR LE PLUS PROCHE DE L'ENDROIT OU VOUS ÊTES PAR UN SIMPLE SMS VIA SFR API


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :SMS, Wikipedia, Geoloc, SFR, API Niveau :Initié Date de création :21/02/2011 Date de mise à jour :22/02/2011 22:40:35 Vu :2 627

Auteur : hhoareau

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

WikiLoc permet de recevoir l'article Wikipedia le plus pertinent proche de l'endroit ou vous vous situez. Il suffit d'envoyer depuis une ligne SFR, le SMS : "#wikiloc# wiki" au 6010 (numéro gratuit). Vous recevez dans les 5 minutes, la réponse par SMS sous forme d'un lien cliquable. Ce service ne fonctionne qu'avec des lignes SFR.
il est également possible d'obtenir un numéro court gratuit pour ne plus avoir besoin du #wikiloc# en envoyant "#wikiloc# short" au 6010 (en général le numéro proposé sera le 1812).

Les requêtes ont été construites via l'API Test Tool de SFR API. Il est conseiller de s'inscrire pour utiliser votre propre identifiant plutôt que l'identifiant de l'exemple dont le compteur de crédits peut être épuisé.

Le code PHP, doit être appelé automatiquement a fréquence régulière via un cron afin d'analyser la file des SMS entrants. Dans notre exemple, ce code est hébergé chez free et régulièrement appelé par cronjobonline.

Source

  • <?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
  • define("DEVTOKEN","81e3d203dd52a852fa986624c718929c");
  • // 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) {
  • $params = array('http' =>
  • array('method'=>$method,
  • 'content'=>$data,
  • 'timeout'=>20
  • ));
  • if ($optional_headers !== null) {$params['http']['header'] = $optional_headers;}
  • $ctx = stream_context_create($params);
  • $fp = @fopen($url, 'rb', false, $ctx);
  • if (!$fp) {
  • //throw new Exception("Problem with $url, $php_errormsg");
  • echo("Requete en echec\n");
  • return(null);
  • }
  • $response = @stream_get_contents($fp);
  • 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;
  • //Si le message est "wiki"...
  • if(strtolower($event->redEvent->eventMessage)=="wiki"){
  • //... 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";
  • $rc=simplexml_load_string(RestRequest($url));
  • //Si la localisation a pu être réalisée errorcode=0 ...
  • if(($rc)&&($rc->errorCode==0)){
  • $lng=$rc->location->longitude;
  • $lat=$rc->location->latitude;
  • //... 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);
  • }
  • }
  • //Si le message est "short" on affecte un numéro court à l'expéditeur qui
  • //pourra être utilisé pour éviter l'usage du 6010 avec l'alias #wikiloc#
  • if(strtolower($event->redEvent->eventMessage)=="short"){
  • $xml=simplexml_load_string(RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/shortcode/generateSmsShortcode?responseType=json&token=".DEVTOKEN."&msisdn=".$exp));
  • if($xml->errorCode==0)
  • RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/sms/send?responseType=xml&token=".DEVTOKEN."&to=".$exp."&type=PhoneNumber&msg=utilisez%20ce%20numero%20pour%20interroger%20wikiloc%20en%repondant%20wiki");
  • }
  • }
  • ?>
<?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
define("DEVTOKEN","81e3d203dd52a852fa986624c718929c");

// 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) {
  $params = array('http' => 
  				array('method'=>$method, 
  					  'content'=>$data,
  						'timeout'=>20
  				));
  			 				
  if ($optional_headers !== null) {$params['http']['header'] = $optional_headers;}
 
  $ctx = stream_context_create($params);
  $fp = @fopen($url, 'rb', false, $ctx);
 
  if (!$fp) {
  	//throw new Exception("Problem with $url, $php_errormsg");
  	echo("Requete en echec\n");
  	return(null);
  }
  $response = @stream_get_contents($fp);
 
  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;

		//Si le message est "wiki"...	
		if(strtolower($event->redEvent->eventMessage)=="wiki"){

			//... 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";
			$rc=simplexml_load_string(RestRequest($url));
			
			//Si la localisation a pu être réalisée errorcode=0 ... 
			if(($rc)&&($rc->errorCode==0)){
				$lng=$rc->location->longitude;
				$lat=$rc->location->latitude;
				
				//... 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);
			}		
		}

		//Si le message est "short" on affecte un numéro court à l'expéditeur qui
		//pourra être utilisé pour éviter l'usage du 6010 avec l'alias #wikiloc#
		if(strtolower($event->redEvent->eventMessage)=="short"){
			$xml=simplexml_load_string(RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/shortcode/generateSmsShortcode?responseType=json&token=".DEVTOKEN."&msisdn=".$exp));
			if($xml->errorCode==0)
				RestRequest("http://ws.red.sfr.fr/red-ws/red-b2c/resources/sms/send?responseType=xml&token=".DEVTOKEN."&to=".$exp."&type=PhoneNumber&msg=utilisez%20ce%20numero%20pour%20interroger%20wikiloc%20en%repondant%20wiki");		
		}	
	}	
?>

 Conclusion

Cet exemple utilise les API de géolocalisation, d'envoi et de réception des SMS. D'autres API sont disponibles sur SFR API : envoyer des photos, vidéo, son via MMS, gérer le carnet de contacts, identifier les modèles de mobile, ...

Hervé Hoareau
Responsable SFR API


 Historique

22 février 2011 00:00:15 :
ajout de la nécessité d'être client SFR
22 février 2011 10:50:29 :
compléments divers et signature
22 février 2011 22:40:43 :
Rappel de la gratuité du 6010

 Sources de la même categorie

INSPECTEUR DE PAGES (VÉRIFIEZ SI DES SITES AFFICHENT UN TEXT... par pablo836
Source avec Zip Source avec une capture GÉOLOCALISATION par pgl10
Source avec Zip TAPI : METTRE EN RELATION DEUX POSTES TELEPHONIQUES par ravery
Source avec Zip CLIENT / SERVEUR : LES SOCKETS par Morphinof
Source avec Zip VALIDATEUR_3WC par lezj

 Sources en rapport avec celle ci

Source avec Zip MY.DEVIANTART API par inwebo
Source avec Zip API LDAP POO PHP5 (ENCAPSULATION DE L'API LDAP DE PHP) par emericv
Source avec Zip API GOOGLE ANALYTICS SUR VOTRE SITE par SebaZen
CHERCHER UNE IMAGE SUR FLICKR par BlAcKbUrRy
GOOGLE SEARCH PARSER par caviar

Commentaires et avis

Commentaire de MagicGilles le 23/02/2011 03:34:51

Je ne sais pas si c'est un code "officiel" mais c'est assez moche et mal programmer.
La gestion des erreurs est plus que limite (un echo ça n'a rien d'une gestion d'erreurs, c'est pour le débuggage). Un fopen mais aucune fermeture... Aucune optimisation, rien, nada (faut penser au serveur même sur des mutualisés).
Ça aurait mérité un peu plus de travail et surtout quelques classes pour bien gérer l'API et les erreurs etc.
Il faut prendre le code comme un tuto sur l'API de sfr mais rien de plus.

Commentaire de hhoareau le 23/02/2011 11:55:49

le sujet est bien les API SFR et surtout pas le PHP (car je n'ai aucune leçon à donner dans ce domaine ;-) ).  

le principe est bien de proposer un code le plus court possible qui n'a rien d'officiel (même s'il est posté par le responsable du développement d'SFR API) et de finalisé.

Commentaire de MagicGilles le 23/02/2011 12:48:51

Si c'est dans un but didactique, il faut le mentionner car en l'état, ça doit fonctionner (j'ai pas encore testé, je dois l'avouer)... mais dans les cas un peu critiques, ça va poser des problèmes.
Il y a des gens qui copie/colle sans rien connaitre au code.
L'idée est louable, mais il faut juste s'en inspirer pour créer quelque chose de plus optimisé.

Commentaire de hhoareau le 23/02/2011 17:44:11

Ca devrait fonctionner (en tout cas pour moi cela fonctionne). Le SMS au 6010 est gratuit. La réponse met quelques minutes pour arriver mais elle arrive. La premiere fois il faut donner son consentement. Attention cela ne fonctionne que pour les lignes SFR.
Pour info la page est hébergée chez Free avec un cron executé depuis CronJobOnline.

Commentaire de aKheNathOn le 02/03/2011 12:05:51

Pas mal du tout, dommage que le code ne soit pas facilement modifiable et ré-utilisable, mais l'idée est tellement bien que j'en ait refait une version plus propre :
http://www.phpcs.com/codes/CLASSE-WIKILOC_52878.aspx

Etonnant ... SFR ne donne pas ses consommateurs d'api en PHP ?

Commentaire de hhoareau le 02/03/2011 14:30:58

aKheNathOn, pour SFR API nous éditons bien un SDK PHP (pour l'usage de nos APIs en SOAP y compris en mode https), mais nous nous orientons de plus en plus vers une exposiotion en REST pour être plus indépendant du langage.

voir http://api.sfr.fr/outils pour le SDK.

Commentaire de aKheNathOn le 02/03/2011 15:20:42 10/10

Oui, effectivement je viens de télécharger et voir le sdk red 1.1, ce qui est bien en SOAP c'est l'aspect orienté objet de ses wrappers, et une api REST devrait à mon sens également être orientée objet car sinon le code deviendra vite brouillon ...

Pour certaines api (du moins celle que j'ai testé) le json n'est pas implémenté (http://ws.red.sfr.fr/red-ws/red-b2c/resources/event/consume?ResponseType=json&token=81e3d203dd52a852fa986624c718929c) et pour de l'ajax/javascript c'est quand même plus sympa à parser (surtout que REST existe à mon sens prioritairement pour ce genre de language)

Sinon après un tour sur les différentes API, c'est franchement top, y'à moyen de se faire plaisir, parcontre ça reste un peu cher si ce n'est pas à but lucratif :)

ps : 10/10 pour les apis sfr :)), et pi j'aime bien l'idée de SFR de venir exposer ses travaux sur ce réseau opensource :)

Commentaire de hhoareau le 02/03/2011 23:58:00

c'est vrai que certaines méthodes sont un peu cher. On réfléchit à des moyens de faire baisser le prix comme par exemple proposer une méthode d'envoi de SMS sponsorisés à très bas coût.
En tout cas la méthode de réception des SMS est gratuite.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Des API SFR pour les développeurs [ par djimdba ] Hello les amis, Suite à une visite que j'ai faite sur le site de SFR dédié aux développeurs (ou je me suis inscrit d'ailleurs), j'ai trouvé des choses PHP et SMS [ par mahamourta ] Bonjour Je suis en train de concevoir une application web qui nécessite une partie SMS de sorte que l'administrateur puisse emmètre des messages su Google Maps API & PHP [ par begueradj ] Bonjour, Peut-on utiliser Google Maps plusieurs fois sur son site par une même clé ? demande d'aide sur la reception des sms à partir du modem gsm [ par carodong ] j'ai un problème. je travaille actuellement sur mon projet de fin d'étude et je developpe un site web sur le transfert de la monnaie avec l'envoi et l demande d'aide sur la reception des sms à partir du logiciel gammu sous windows [ par carodong ] je travaille actuellement sur un site web d'envoi et reception des sms en php. on m'a proposé pour la reception le logiciel gammu(pour windows)pour ré Envoie des sms de l'ordinateur vers un telephone mobile [ par vinceslas ] Bonjour, Depuis une semaine je cherche comment envoyé en utilisant un programme php des sms de l'ordinateur vers un téléphone mobile mais les résultat Envoi de SMS en masse [ par lilwill ] Bonjour à tous et merci d'avance pour votre aide. Voici mon problème: je suis en train de créer un site d'envoi de SMS. J'ai donc décidé d'ajouter un Api pour RueDuCommerce ? [ par Dacobah ] Bonjour, de la même manière qu'il existe une API pour Amazon, j'aimerais savoir où trouver celle de RueDuCommerce (ou ce qui y ressemble) pour commun API Vimeo - Empty reply from server [ par Blacknight91titi ] Bonjour, Le problème que je décris ci-dessous me semble assez délicat étant donné le peu d'informations que j'ai pour m'aiguiller. Travaillant avec Verificateur de liens megavideo [ par tib14 ] Bonjour, désolé de vous déranger, mais je cherche à obtenir un vérificateur de lien megavideo. J'ai cherché partout sur internet, mais je ne n'en ai p


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales