Présentation des Orange API :
Services mobiles et services vocaux pour le web
Date de publication : 07 juin 2010 , Date de mise à jour : 10 juin 2010
III. Envoyer un SMS
III-A. Description
III-B. Exemples de code
IV. Recevoir un SMS
IV-A. Description
IV-B. Exemple d'utilisation : Mini-sondage
IV-C. Exemple d'utilisation : la M-Shoutbox
V. Envoyer un MMS
V-A. Description
V-B. Exemple de code
VI. Recevoir un MMS
VII. Localiser un mobile
VII-A. Description
VII-A-1. Demander une autorisation
VII-A-2. Localiser le mobile
VII-B. Exemple de code PHP
III. Envoyer un SMS
III-A. Description
L'API SMS
permet l'envoi de SMS depuis vos applications,
vers des mobiles de
tous opérateurs dans le monde.
 |
L'API peut être utile pour prévenir d'une livraison, rappeler un rendez-vous, diffuser des informations à une liste de clients, souhaiter un évènement à un groupe d'amis, créer un groupe de discussion par SMS, organiser un sondage lors de séminaires, ou alerter efficacement depuis vos scripts de supervision...
|
Si vous avez besoin de vous assurer de la bonne remise du SMS sur le terminal, il est aussi possible de récupérer l'historique de cet appel avec un statut mis à jour.
Pour cela, utilisez l'
API getHistory
en passant le paramètre
callid qui aura été retourné lors de l'envoi du SMS.
III-B. Exemples de code
Nous avons déjà vu
l'URL d'envoi de SMS, utilisée depuis un navigateur.
Voici quelques exemples, toujours très simples, dans des applications en PHP, Java, Python, VBScript
Code en PHP |
<?php
$ phone_number = ' 33612345678 ' ;
$ text_message = urlencode(" Hello world , sent with Orange API in PHP ! " );
$ api_access_key = ' a1234b56789 ' ;
$ url = " http : / / sms . beta . orange - api . net / sms / sendSMS . xml ? id = $ api_access_key & amp ; to = $ phone_number & amp ; content = $ text_message " ;
$ response = file_get_contents($ url );
$ xml = simplexml_load_string($ response );
echo " Status : " , $xml ->status ->status_msg ;
?>
|
Code en Java |
import java.io.*;
import java.net.*;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
public class SendSMS {
public static void main (String[] args) throws Exception {
String phoneNumber = " 33612345678 " ;
String textMessage = URLEncoder.encode (
" Hello world, sent with Orange API in Java " , " UTF-8 " );
String apiAccessKey = " a1234b56789 " ;
String url = " http://sms.alpha.orange-api.net/sms/sendSMS.xml?id= "
+ apiAccessKey + " &to= " + phoneNumber + " &content= "
+ textMessage;
URL client = new URL (url);
URLConnection conn = client.openConnection ();
InputStream responseBody = conn.getInputStream ();
Document response = DocumentBuilderFactory.newInstance ().newDocumentBuilder ().parse (responseBody);
responseBody.close ();
XPath xPath = XPathFactory.newInstance ().newXPath ();
String status = xPath.evaluate (" /response/status/status_msg " , response);
System.out.println (" Status: " + status);
}
}
|
Code en C# |
using System;
using System. Net;
using System. Xml;
namespace TestSendSMS
{
class TestSendSMS
{
static void Main (string [ ] args)
{
String phoneNumber = " 33612345678 " ;
String textContent = " Hello world, sent with Orange API in C# " ;
String apiAccessKey = " a1234b56789 " ;
String url = " http://sms.alpha.orange-api.net/sms/sendSMS.xml?id= " + apiAccessKey
+ " &from=38100&to= " + phoneNumber + " &content= " + textContent;
WebClient client = new WebClient ();
string result = client. DownloadString (url);
Console. WriteLine (" Result : " + result);
XmlDocument document = new XmlDocument ();
document. LoadXml (result);
Console. WriteLine (" Status code : " + document. GetElementsByTagName (" status_code " )[ 0 ] . InnerText);
Console. WriteLine (" Status message : " + document. GetElementsByTagName (" status_msg " )[ 0 ] . InnerText);
}
}
}
|
Code en Python |
import urllib
import xml.etree.ElementTree as ET
phone_number = ' 33612345678 '
text_message = ' Hello world , sent with Orange API in Python '
urlbase = ' http : / / sms . alpha . orange - api . net / sms / sendSMS . xml ? '
urlparam = urllib.urlencode ([(' id ' ,' 466b6e288fc ' ),(' to ' ,phone_number),(' content ' ,text_message)])
response = ET.parse (urllib.urlopen (urlbase+ urlparam)).getroot ()
print response.findtext (' status / status_code ' )
|
Code en VbScript, courtoisie de Bbil |
Option explicit
Const ACCESS_KEY = " a1234b56789 "
Dim stNumDest,stMessage
stNumDest = " 33612345678 "
stMessage = " Hello world, sent with Orange API in VBScript "
EnvoiSms stNumDest,ACCESS_KEY,stMessage
Sub EnvoiSms (stNum, stACCESS_KEY, stMessage)
Dim xmlDoc,stUrl
stUrl = " http://sms.alpha.orange-api.net/sms/sendSMS.xml?id= " & amp; _
stACCESS_KEY & amp;" &to= " & amp; stNum & amp; " &content= " & amp; Escape (stMessage)
Set xmlDoc= CreateObject (" Microsoft.XMLDOM " )
xmlDoc. Async = " false "
if xmlDoc. Load (stUrl) and not xmldOC. selectSingleNode (" /response/status/status_code " ) is Nothing Then
Msgbox " Status_code = " & amp; xmldOC. selectSingleNode (" /response/status/status_code " ). text
else
MsgBox " Erreur envoi " , vbCritical
End if
End sub
|
IV. Recevoir un SMS
IV-A. Description
La réception de SMS est une fonctionnalité intéressante des Orange API
car elle vous permet de disposer de votre propre shortcode associé à un mot-clé qui vous est réservé.
Vos utilisateurs pourront envoyer des SMS précédés de votre mot-clé, à votre shortcode,
qui seront ensuite transmis à votre application.
- votre mot-clé associé au shortcode,
- votre méthode de réception : une adresse mail et/ou une URL.
La plate-forme Orange API fait alors une requête GET sur votre URL avec le contenu du message en paramètre.
Les shortcodes disponibles en France sont soit non-surtaxés
(facturé comme un SMS classique à vos utilisateurs),
soit surtaxés (une surtaxe est appliquée par l'opérateur à vos utilisateurs,
et vous gagnez des crédits de revenue-share).
IV-B. Exemple d'utilisation : Mini-sondage
Pour illustrer l'intérêt de la notification de réception d'un SMS,
voici l'exemple d'un outil de sondage instantané par SMS.
Le fonctionnement est le suivant :
- L'utilisateur envoie un SMS au numéro court 20345 avec le préfixe configuré par le développeur du mini sondage (imaginons que vous ayez configuré POLL comme préfixe s'il est encore disponible). Le SMS contient donc le mot POLL, une question et les réponses possibles commençant par A) ou B) ou C) ...
- Le script PHP (qui s'exécute sur votre serveur ou chez votre hébergeur) est notifié par le serveur d'Orange (HTTP GET avec en paramètre le contenu du SMS) d'un nouveau SMS et il renvoie aux participants du sondage la question et les réponses (une extension serait de pouvoir configurer la liste de diffusion)
- Les utilisateurs répondent avec la lettre correspondant à la réponse (SMS commençant par POLL suivi de la lettre A ou B ou ...)
- On peut voir en temps réel les résultats du sondage sur un site WEB (fichier html)
Dans un souci de simplicité, la liste de diffusion est configurée en dur dans le code, il n'y a pas de contrôle qu'un utilisateur ne vote pas deux fois et un seul sondage peut être organisé simultanément.
Mise en pratique :
Il faut tout d'abord configurer l'url de votre script
dans l'interface Web de configuration des API orange et configurer un préfixe SMS (ou mot de code).
Le code est découpé en 2 scripts PHP, le premier
(dont l'URL doit être configurée dans l'interface d'administration) reçoit les SMS,
stocke dans un fichier les réponses et diffuse le sondage à la liste de diffusion.
Le second fichier mixte HTML et PHP pour afficher les résultats du sondage.
Code en PHP |
<?php
define(' LIMIT_NEW_POLL_ANSWER ' , 20 );
$ diffusion_poll_list = array (' nicolas ' = > ' 33612345678 ' , ' martin ' = > ' 33687654321 ' );
$ api_access_key = ' a1234b56789 ' ;
$ mobile_number = $ _GET [ ' from ' ] ;
$ sms_content = $ _GET [ ' content ' ] ;
$ sms_content = substr(strstr($ sms_content , ' ' ), 1 );
if (strlen($ sms_content ) > LIMIT_NEW_POLL_ANSWER) {
$ fid = fopen(' ./data/poll_results.txt ' , ' w ' );
fwrite($ fid , ' a=1 b=2 c=3 d=4 e=5\n ' );
fclose($ fid );
$ fid = fopen(' ./data/poll_question.txt ' , ' w ' );
fwrite($ fid , $ sms_content );
fclose($ fid );
$ text_message = urlencode(" Poll from $ mobile_number $ sms_content " );
foreach ($ diffusion_poll_list as $ phone_number ) {
$ url = " http : / / sms . alpha . orange - api . net / sms / sendSMS . xml ? id = $ api_access_key & amp ; to = $ phone_number & amp ; content = $ text_message " ;
file_get_contents($ url );
}
}
else {
$ fid = fopen(' ./data/poll_results.txt ' , ' r ' );
list ($ a , $ b , $ c , $ d , $ e ) = fscanf($ fid , ' a=%d b=%d c=%d d=%d e=%d ' );
fclose($ fid );
$ answer = strtolower($ sms_content { 0 } );
if (strpos(" abcde " , $ answer ) ! = FALSE ) {
$ { $ answer } + + ;
$ fid = fopen(' ./data/poll_results.txt ' , ' w ' );
fprintf($ fid , ' a=%d b=%d c=%d d=%d e=%d\n ' , $ a , $ b , $ c , $ d , $ e );
fclose($ fid );
}
}
?>
|
Code en PHP/HTML |
< html >
< title > Sondage< / title >
Sondage< br >
<?php
$ fid = fopen(' ./data/poll_results.txt ' , ' r ' );
list ($ a , $ b , $ c , $ d , $ e ) = fscanf($ fid , ' a=%d b=%d c=%d d=%d e=%d ' );
fclose($ fid );
$ question = file_get_contents(' ./data/poll_question.txt ' );
?>
Question:< br >
<?php echo $ question ?>
< br >
Résultats:
< ul >
< li > Réponse A: <?php echo $ a ?> votes< / li >
< li > Réponse B: <?php echo $ b ?> votes< / li >
< li > Réponse C: <?php echo $ c ?> votes< / li >
< li > Réponse D: <?php echo $ d ?> votes< / li >
< li > Réponse E: <?php echo $ e ?> votes< / li >
< / ul >
< / html >
|
IV-C. Exemple d'utilisation : la M-Shoutbox
Un autre exemple d'utilisation est
la
M-Shoutbox :
un système de messagerie instantanée permettant de contacter par SMS un ensemble de personnes
ou de créer une boîte de discussion par SMS.
V. Envoyer un MMS
V-A. Description
L'API MMS
permet l'envoi et la réception de textes, images, photos ou vidéo avec les mobiles, depuis une application. Aujourd'hui, l'API fonctionne uniquement avec les mobiles Orange France.
 |
L'API peut être utile pour partager des photos, faire du micro-blogging photo ou vidéo ...
|
V-B. Exemple de code
En raison des fichiers à transmettre, les requêtes utilisent uniquement les méthodes POST de REST. Voici un exemple d'envoi de MMS via un formulaire HTML.
Formulaire HTML |
<! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01//EN " " http://www.w3.org/TR/html4/strict.dtd " >
< html >
< head >
< / head >
< body id = " body " >
< h2 > MMS API form< / h2 >
< form action = " http://mms.alpha.orange-api.net/mms/sendMMS.xml "
target = " _SELF " enctype = " multipart/form-data " method = " POST " >
< input type = " hidden " name = " id " value = " a1234b56789 " >
< input type = " hidden " name = " from " value = " 20345 " >
< br / >
< table border = " 0 " >
< tr > < td colspan = " 2 " > Mandatory information :< / td > < / tr >
< tr > < td > < b > To :< / b > < / td >
< td > < input size = " 30 " id = " to " name = " to " type = " text " > < / td > < / tr >
< tr > < td > < b > Content :< / b > < / td >
< td > < textarea id = " content " name = " content " > < / textarea > < / td > < / tr >
< tr > < td colspan = " 2 " > < br / > Optional information : < / td > < / tr >
< tr > < td > < b > Subject :< / b > < / td >
< td > < input size = " 30 " id = " subject " name = " subject " type = " text " > < / td > < / tr >
< tr > < td colspan = " 2 " > < br / > The files size should not exceed 100ko< / td > < / tr >
< tr > < td > < b > Image :< / b > < / td >
< td > < input type = " file " id = " image " name = " image " size = " 30px " / > < / td > < / tr >
< tr > < td > < b > Sound :< / b > < / td >
< td > < input type = " file " id = " sound " name = " sound " size = " 30px " / > < / td > < / tr >
< tr > < td > < b > Video :< / b > < / td >
< td > < input type = " file " id = " video " name = " video " size = " 30px " / > < / td > < / tr >
< tr > < td > < / td > < td > < input type = " submit " value = " Send MMS " > < / td > < / tr >
< / table >
< / form >
< / body >
< / html >
|
VI. Recevoir un MMS
De la même manière que pour la
réception de SMS,
les API d'Orange permettent de recevoir des MMS sur un serveur web.
Pour cela, vous devrez configurer au préalable votre URL de réception des MMS
dans
l'interface d'administration
et utilise les
mêmes préfixes que pour la réception de SMS.
VII. Localiser un mobile
VII-A. Description
L'API Location
permet de localiser l'emplacement géographique d'un utilisateur mobile depuis une application.
Actuellement, le service est disponible pour les mobiles du réseau Orange France (opérateurs partenaires MVNO inclus).
 |
L'API peut être utile pour suivre une flotte de véhicules, organiser des évènements en temps réel, ou localiser les restaurants les plus proches de plusieurs personnes.
|
L'API retourne la position et la taille de la cellule du réseau mobile,
au format GPS (longitude / latitude) directement exploitable dans d'autres API de cartographie par exemple.
La taille de la cellule peut varier de 300 m (zone urbaine) à 30 km (zone rurale),
selon son emplacement.
Un avantage important de cette API est qu'elle permet la localisation de tout type de mobile,
du plus moderne au plus ancien, et ne requiert aucune installation préalable de logiciel sur le terminal
pour fonctionner.
 |
Une autorisation préalable du propriétaire du mobile est bien entendue nécessaire avant de pouvoir obtenir les données de localisation.
|
Le processus d'autorisation se fait en 2 étapes :
- Réception d'un 1er SMS d'invitation et réponse au 20345 avec le mot clé "oui" => autorisation du mobile pour ce service
- Réception d'un 2nd SMS d'invitation et réponse au 20633 avec le mot clé "location" => autorisation du mobile à la plateforme Orange
A tout moment, si l'utilisateur souhaite retirer son autorisation, il lui suffit d'envoyer le mot clé " non " au 20345.
VII-A-1. Demander une autorisation
VII-A-2. Localiser le mobile
VII-B. Exemple de code PHP
Code en PHP |
<?php
$ access_key = " a1234b56789 " ;
$ adresse = " http : / / location . beta . orange - api . net / location / getLocation . xml " ;
$ adresse_authorize = " http : / / location . beta . orange - api . net / location / createAuthorization . xml " ;
$ number = " 33612345678 " ;
$ response = file_get_contents(
$ adresse . " ? id = " . $ access_key . " & amp ; number = " . $ number ;
$ xml = simplexml_load_string($ response );
if ($xml ->status ->status_code = 450 )
{
$ response = file_get_contents(
$ adresse_authorize . " ? id = " . $ access_key . " & amp ; number = " . $ number ;
$ xml = simplexml_load_string($ response );
echo($xml ->status ->status_code . " - " . $xml ->status ->status_msg );
echo " Suivez les instructions reçues par SMS et relancez le script " ;
} else {
echo($xml ->status ->status_code . " - " . $xml ->status ->status_msg );
echo($ " Coordonnées . " $xml ->location -> X- " . $xml ->location ->Y ) ;
}
? >
|


Les sources présentées sur cette page sont libres de droits
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une œuvre intellectuelle protégée par les droits d'auteur.
Copyright © 2010 developpez Developpez LLC.
Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne
peut être faite de ce site ni de l'ensemble de son contenu : textes, documents
et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez
selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.