IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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.

idea 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 + "&amp;to=" + phoneNumber + "&amp;content="
				+ textMessage;

    // Send GET request
    URL client = new URL(url);
    URLConnection conn = client.openConnection();
    InputStream responseBody = conn.getInputStream();

	// Convert in XML document
	Document response = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(responseBody);
	responseBody.close();
	// Xpath expression to get the status
	XPath xPath = XPathFactory.newInstance().newXPath();
	String status = xPath.evaluate("/response/status/status_msg", response);
	// display status
	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)
        {
            // Init parameters
            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
                + "&amp;from=38100&amp;to=" + phoneNumber + "&amp;content=" + textContent;
            
            // Send GET request
            WebClient client = new WebClient();
            string result = client.DownloadString(url);
            Console.WriteLine("Result : " + result);

            // Parse the returned XML
            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;"&amp;to=" &amp; stNum &amp; "&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.

idea Pour en savoir plus sur les shortcodes, vous pouvez consulter les articles suivants :
http://blog.api.orange.com/2010/05/les-shortcodes-sms-kezako.html et http://blog.api.orange.com/2010/05/le-ba-ba-du-sms.html.
Sur le site Orange Api, allez dans l'interface d'administration et choisissez :

  • 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).

Interface d'administration des API

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';

// save parameters from the receiveSMS method
$mobile_number = $_GET['from'];
$sms_content= $_GET['content'];

// remove the keyword from the text message
$sms_content = substr(strstr($sms_content,' '),1);

// is a new poll or answer
if (strlen($sms_content) > LIMIT_NEW_POLL_ANSWER) {
	// new poll
	// store the content of the current poll
	$fid = fopen('./data/poll_results.txt','w');
	fwrite($fid,'a=1 b=2 c=3 d=4 e=5\n'); // init the poll results
	fclose($fid);
	$fid = fopen('./data/poll_question.txt','w');
  fwrite($fid,$sms_content); // write the poll question
  fclose($fid);
	// forward the poll to diffusion list
	$text_message = urlencode("Poll from $mobile_number $sms_content");
	foreach ($diffusion_poll_list as $phone_number) {
		// send sms
		$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 {
	// answer to poll
	$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);
  // the first letter after the keyword is considered as the answer
  $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'); // read the entire question
  ?>
  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.

idea 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).

idea 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.

warning 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 :
  1. Réception d'un 1er SMS d'invitation et réponse au 20345 avec le mot clé "oui" => autorisation du mobile pour ce service
  2. 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

Pour demander une autorisation de localisation, il suffit de taper l'URL suivante, en mettant à jour la valeur des paramètres id et number :

http://location.beta.orange-api.net/location/createAuthorization.xml?id=[clé d'identification]&number=[numéro de téléphone à localiser]


VII-A-2. Localiser le mobile

Pour localiser un mobile, et seulement une fois que le propriétaire a donné son autorisation, il suffit de taper l'URL suivante, en mettant à jour en mettant à jour la valeur des paramètres id et number :

http://location.beta.orange-api.net/location/getLocation.xml?id=[clé d'identification]&number=[numéro de téléphone à localiser]


VII-B. Exemple de code PHP

Code en PHP
<?php
// clé d'identification
$access_key = "a1234b56789";

// adresse de l'API location > getLocation
$adresse = "http://location.beta.orange-api.net/location/getLocation.xml";

// adresse de l'API location > getAuthorization
$adresse_authorize = "http://location.beta.orange-api.net/location/createAuthorization.xml";

// numéro de mobile à localiser (au format international)
$number = "33612345678";

// exécution de la requête > création de l'appel
$response = file_get_contents(
             $adresse . "?id=" . $access_key . "&amp;number=" . $number;

// récupération de la réponse de l'API
$xml=simplexml_load_string($response);
if ($xml->status->status_code = 450)
{
  // exécution de la requête > création de l'appel
  $response = file_get_contents(
               $adresse_authorize . "?id=" . $access_key . "&amp;number=" . $number;

  // récupération de la réponse de l'API
  $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);
}
?>
 

Valid XHTML 1.0 TransitionalValid CSS!

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.