Developpez.com - DI/DSI Solutions d'entreprise

Le Club des Développeurs et IT Pro

Découvrez les nouvelles API d'Orange : identité, cloud, IoT, proximité, etc.

Pour le développement de services innovants

Le 2010-07-06 20:31:59, par Bovino, Rédacteur


L'équipe de développement des API Orange vient de mettre à la disposition des lecteurs de developpez.com un tutoriel présentant l'utilisation de leurs API :
Présentation des API d'Orange : Services mobiles et services vocaux pour le web

Merci à eux et en particulier à climagne pour le travail accompli et l'enthousiasme qu'elle a mis à mettre cet article à notre disposition.

Bien entendu, n'hésitez pas à poster à la suite vos remarques, interrogations, commentaires mais aussi encouragements.

  Discussion forum
22 commentaires
  • Francis Walter
    Expert éminent sénior
  • Harbor66
    Membre du Club
    Bonjour,

    Peu de réponse sur ce sujet !!

    Alors comme mon soucis est résolu avec le concours compétent du Support Esendex, je viens poster le code sur ce forum au cas où.....

    Code VBA :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub BtnSend_Click() 
    'reference Microsoft Forms 2.0 Object Library doit être ajoutée 
      
        Dim mainURL As String 
        Dim finalURL As String 
        Dim objXML As Object 
        Dim strResponse As String 
      
        Dim Username As String, Password As String, Account As String, Recipient As String, Body As String 
      
      
        'fill your data HERE 
        'Username = "UsernameEssendex" 
        Username = Form_F_SMS.Username.Value 
        'Password = "Password Esendex" 
        Password = Form_F_SMS.Password.Value 
        'Account = "AccountEsendex" 
        Account = Form_F_SMS.Account.Value 
        'Recipient = "N° Tel" 
        Recipient = Form_F_SMS.Recipient.Value 
        'Body = "Message" 
        Body = Form_F_SMS.Body.Value 
      
      
        'mainURL 
        mainURL = "https://www.esendex.com/secure/messenger/formpost/SendSMS.aspx?" 
      
        'build URL - ne pas modifier 
        finalURL = mainURL & "username=" & Username & "&password=" & Password & "&account=" & Account & "&recipient=" & Recipient & "&body=" & Body & " &plaintext=1" 
      
        'set Post Url Object 
        Set objXML = CreateObject("MSXML2.XMLHTTP") 
      
        'open post url process 
        objXML.Open "POST", finalURL, False 
      
        'send message request 
        objXML.send 
      
        'retrieve response 
        strResponse = objXML.responseText 
      
        'display response (messageID) 
        MsgBox strResponse 
        'Ferme le Formulaire SMS 
        DoCmd.Close acForm, "F_SMS" 
      
    End Sub

    Cordialement

    Roland
  • Harbor66
    Membre du Club
    Bonjour,

    Intéressant soit mais je n'ai rien vu sur l'envoi de SMS ??
  • EsCrOw
    Membre régulier
    Comment est facturée l'envoie de SMS ?
    1envoie de SMS = 1 crédit ?
    1 crédit = combien d'euro ?

    Ceci dit, cette API me parait bien intéréssant.
  • climagne
    Membre habitué
    Envoyé par EsCrOw
    Comment est facturée l'envoie de SMS ?
    1envoie de SMS = 1 crédit ?
    1 crédit = combien d'euro ?
    Avec le même compte Orange API, vous pouvez utiliser toutes les API disponibles.
    Le nombre de crédits débités dépend de l'API utilisée.

    Chaque crédit vaut 0.01 € TTC.
    Un SMS vers la France coûte 10 crédits, un SMS vers l'international coûte 15 crédits.
    => Donc un SMS vers la France coûte 0.10 €

    Pour plus d'information, vous pouvez aller voir ce lien :
    http://api.orange.com/fr/api/sms-api/tarifs,1

    Envoyé par EsCrOw

    Ceci dit, cette API me parait bien intéréssant.
  • momjunior
    Membre actif
    Bonjour
    J'aimerais juste vous rappeler que vous avez oublié (ou fait exprès) de mentionner le code en JAVA qui permet de recevoir les sms.
    Très bon tuto en passant,ça m'aide énormément .
    Encore merci
  • climagne
    Membre habitué
    Bonjour,

    Je peux vous fournir un exemple très simple de code JAVA pour recevoir les SMS.
    Mais je mettrai bientôt à disposition un lien pour récupérer des SDK en JAVA / .Net (C#) / PHP qui utilisent les API et qui fournissent des exemples de code plus complets dans ces 3 langages.

    Pour recevoir un sms, il faut créer une servlet :
    Code JAVA :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
      
    package com.orange.api.sms.sample; 
      
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
      
    import com.orange.api.sms.business.data.ReceiveSms; 
      
    public class ReceiveSmsServlet extends HttpServlet { 
      
        private static final long serialVersionUID = 1L; 
      
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
      
            String content = request.getParameter("content"); 
            String from = request.getParameter("from"); 
            String api = request.getParameter("api");	 
      
            if (content != null && !content.equals("")) { 
      
                String response = "Received sms from " + from + ", api was : " + api + ", and content was : " +  content; 
      
                String header="<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \n"; 
                System.out.println(header + response); 
                response.getOutputStream().print(header + response); 
      
                response.setCharacterEncoding("UTF-8"); 
                response.setContentType("text/xml"); 
            } 
        } 
    }

    Bonne continuation avec les API.
  • momjunior
    Membre actif
    Merci beaucoup,je vais l'exploiter,et j'attends avec impatience votre lien concernant les SDK.
    Mais pour l'instant j'ai un problème concernant l'envoi de sms.J'ai pu avoir une clé d'accès avec un compte crédité de 200.
    J'ai créé une page jsp qui récupère un numéro de téléphone et le message à envoyer sur le mobile.
    Ensuite j'ai créé une servlet tout en essayant votre code d'envoi de sms.Çà nous donne ceci:

    Code JAVA :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    import java.util.logging.Level; 
    import java.util.logging.Logger; 
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
    import java.io.*; 
    import java.net.*; 
      
    import javax.xml.parsers.DocumentBuilderFactory; 
    import javax.xml.parsers.ParserConfigurationException; 
    import javax.xml.xpath.XPath; 
    import javax.xml.xpath.XPathExpressionException; 
    import javax.xml.xpath.XPathFactory; 
      
    import org.w3c.dom.Document; 
    import org.xml.sax.SAXException; 
      
    /** 
     * 
     * @author Mo 
     */ 
    public class EnvoiMessage extends HttpServlet { 
      
      
      
      
      
        @Override 
        protected void doGet(HttpServletRequest requete, HttpServletResponse reponse) 
        throws ServletException, IOException { 
            doPost(requete , reponse); 
        }  
      
      
        @Override 
        protected void doPost(HttpServletRequest requete, HttpServletResponse reponse) 
        throws ServletException, IOException { 
          reponse.setContentType("text/html"); 
      
      
            String phoneNumber = requete.getParameter("telephone"); 
            String message = requete.getParameter("message"); 
      
            System.out.println(phoneNumber); 
            System.out.println(message); 
      
    		String textMessage = URLEncoder.encode(message, "UTF-8"); 
    		String apiAccessKey = "a1234b56789"; 
    		String url = "http://sms.alpha.orange-api.net/sms/sendSMS.xml?id=" 
    				+ apiAccessKey + "&to=" + phoneNumber + "&content=" 
    				+ textMessage; 
      
        // Send GET request 
        URL client = new URL(url); 
        URLConnection conn = client.openConnection(); 
        InputStream responseBody = conn.getInputStream(); 
      
    	// Convert in XML document 
    	Document response = null; 
            try 
            { 
                response = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(responseBody); 
            }  
            catch (ParserConfigurationException ex) 
            { 
            } 
            catch (SAXException ex) 
            { 
      
            } 
    	responseBody.close(); 
    	// Xpath expression to get the status 
    	XPath xPath = XPathFactory.newInstance().newXPath(); 
    	String status; 
      
            try { 
                status = xPath.evaluate("/response/status/status_msg", response); 
                System.out.println("Status: " + status); 
      
            } 
            catch (XPathExpressionException ex) 
            { 
            } 
    	// display status 
      
      
      
            } 
        }

    Bien entendu j'ai masqué ma clé

    Donc quand je clique sur le bouton "Envoyer" de ma page web,la servlet est invoquée,mais j'ai le message suivant :
    Status: Unauthorized destination

    Je ne reçois aucun message(j'essaie d'envoyer le sms sur mon de téléphone), et mon crédit est intact.

    Merci beaucoup
  • climagne
    Membre habitué
    Bonjour,

    Votre code java est correct car vous arrivez à atteindre l'API qui vous renvoie un de ses messages :
    Code :
    1
    2
    Code : 441
    Message : unauthorised destination (destination non autorisée)
    Cela vient donc du numéro de téléphone que vous avez utilisé.
    Est-ce qu'il est bien au format international ?
    Exemple pour la France : 336xxxxxxxx.

    Est-ce que vous êtes bien dans la zone de couverture pour l'envoi de SMS ?
  • momjunior
    Membre actif
    Bonjour
    Je suis bien dans la zone de couverture,l'opérateur est Orange Sénégal (je suis à Dakar).
    J'ai essayé 2 formats de numéro,avec l'indicatif (+22177xxxxxxx),et sans l'indicatif (77xxxxxxx).
    Mais toujours rien.
    Au fait pour pouvoir envoyer ou recevoir des sms,dois-je héberger mon site?
    Merci