Developpez.com - DI/DSI Solutions d'entreprise

Le Club des Développeurs et IT Pro

Apprendre à envoyer des SMS avec l'API SMS d'Orange :

Exemple de code NodeJs

Le 2016-10-11 22:47:26, par Francis Walter, Expert éminent sénior
Bonjour,

Je vous présente un article sur l'envoie de SMS avec l'API SMS de Orange.

Envoyé par Introduction
L’API SMS d’Orange disponible dans certains pays en zone d’Afrique et Moyen-Orient permet l'envoi et la réception de SMS vers les mobiles du monde entier, quel que soit l'opérateur. Il vous permet de toucher plus rapidement votre cible comparé à l’email.
L’API peut être utile pour envoyer un accusé de réception d’une livraison, diffuser des informations à une liste de clients, souhaiter la bonne année à une liste de numéros, créer un groupe de discussion par SMS, organiser un sondage.
Cet article vous expliquera en quelques étapes comment faire votre premier appel à l'API SMS en Node*js qui va récupérer le résultat de la requête au format JSON (JavaScript Object Notation) pour l’afficher dans votre application.

Retrouvez les autres cours et tutoriels pour apprendre à programmer avec les APIs d'Orange
Retrouvez tous les meilleurs cours et tutoriels Solution d'entreprise.
  Discussion forum
19 commentaires
  • Community Management
    Community Manager
    Bonjour à tous,

    Un sondage pour partager votre retour d'expérience sur l'API SMS d'Orange

  • Pierre Louis Chevalier
    Expert éminent sénior
    Envoyé par fabi75
    Cela marche en France? je ne trouve pas l'API française sur le lien vers orange
    Non : L’API SMS d’Orange disponible dans certains pays en zone d’Afrique et Moyen-Orient
  • Népomucène
    Modérateur
    Cela fonctionne sur l'Europe ?
  • devalender
    Membre éprouvé
    Bonjour a tous

    S'il vous plait ne pourrait ton pas avoir de tuto aussi bien faite en php ?

    Merci à tous
  • Oscar.STEFANINI
    Membre régulier
    Du coup on peut envoyer des sms avec n'importe quel numéro de téléphone ?? vers n'importe lequel ?
  • steel-finger
    Membre confirmé
    Petit précision la fonction suivante : `new Buffer()` est déprécié il faut utilisé `Buffer.from()`
  • Orange_Partner
    Candidat au Club
    Envoyé par Oscar.STEFANINI
    Du coup on peut envoyer des sms avec n'importe quel numéro de téléphone ?? vers n'importe lequel ?
    @Oscar, il ne s'agit pas d'envoi de SMS à Partir d'un d'un téléphone. Nous parlons des SMS que vous pouvez envoyer à vos clients à partir de votre application.
    L'offre que nous vous proposons vois permets cependant d'envoyer des SMS à vos client quelque soit leur opérateur.
  • Orange_Partner
    Candidat au Club
    Envoyé par devalender
    Bonjour a tous

    S'il vous plait ne pourrait ton pas avoir de tuto aussi bien faite en php ?

    Merci à tous
    @Devalender, merci de regarder ce tuto mise en ligne par des Developer ivoiriens
  • Oscar.STEFANINI
    Membre régulier
    Envoyé par Orange_Partner
    @Oscar, il ne s'agit pas d'envoi de SMS à Partir d'un d'un téléphone. Nous parlons des SMS que vous pouvez envoyer à vos clients à partir de votre application.
    L'offre que nous vous proposons vois permets cependant d'envoyer des SMS à vos client quelque soit leur opérateur.
    Merci beaucoup de votre réponse. après relecture de mon message, je me rends compte à quel point j'avais lu la news de travers. Bien à vous et merci de nous faire disposer d'api et d'en parler sur developpez.com
  • PhilDeDakar
    Membre habitué
    Bonjour, pour exemple le code pour utiliser cette API Orange en WDlangage de Windev (testé en V20)

    Code Windev :
    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
    // API Orange : Récupération du nombre d'unité disponible  
    i,j est un entier 
    ExpirationTime est un entier sans signe 
    UrlToken, ClientID, ClientSecret, AuthorizationHeader, EntêteHTTPsupplémentaire, Body, ResEntêteApi, ResApi, Tag sont des chaînes 
    Token, UrlSendSMS est une chaîne 
      
    stResApiJson est une Structure 
    	country est une chaîne 
    	service est une chaîne 
    	contractId est une chaîne 
    	availableUnits est un entier 
    	expires est une chaîne 
    	scDescription est une chaîne 
    END 
      
    MyBuffer est un Buffer 
    MyResApiJson est une stResApiJson 
      
      
    //----- Demande un jeton 
    UrlToken = "https://api.orange.com/oauth/v2/token" 
      
    ClientID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
    ClientSecret = "xxxxxxxxxxxxxxxxx" 
    AuthorizationHeader = "Basic " + Crypte(ClientID + ":" + ClientSecret, "", crypteAucun, encodeBASE64) 
      
    EntêteHTTPsupplémentaire = "Authorization: " + AuthorizationHeader 
      
    Body = [ 
    	grant_type=client_credentials 
    ] 
    Token = "" 
      
    IF HTTPRequête(UrlToken, "", EntêteHTTPsupplémentaire, Body) THEN 
    	ResEntêteApi = HTTPDonneRésultat(httpEntête) 
    	IF ExtraitChaîne(ResEntêteApi,1,RC) = "HTTP/1.1 200 OK" THEN 
    		ResApi = HTTPDonneRésultat(httpRésultat) 
    		Token = ExtraitChaîne(ExtraitChaîne(ResApi, 4,Caract(10)), 4, Caract(34)) 
    		ExpirationTime = Val(ExtraitChaîne(Remplace(ExtraitChaîne(ResApi,5, Caract(0x0a)),TAB,""),4,Caract(34))) 
    	END 
    ELSE 
    	Info( ErreurInfo(errMessage)) 
    	STOP 
    END 
      
    //----- Envoie la demande 
      
    UrlSendSMS = "https://api.orange.com/sms/admin/v1/contracts" 
    EntêteHTTPsupplémentaire = "Authorization: Bearer " + Token 
      
    IF HTTPRequête(UrlSendSMS, "", EntêteHTTPsupplémentaire, "") THEN 
    	ResEntêteApi = HTTPDonneRésultat(httpEntête) 
    	ResApi = HTTPDonneRésultat(httpRésultat) 
    	IF ExtraitChaîne(ResEntêteApi, 1, RC) = "HTTP/1.1 200 OK" THEN 
    		Tag = [ 
    		"country":"SEN" 
    		] 
    		i = Position(ResApi, Tag) 
    		IF i > 0 THEN 
    			j = Position(ResApi, "}", i) 
    			IF j > 0 THEN 
    				MyBuffer = ResApi[[i-1 A j]] 
    				MyResApiJson:country = "" 
    				MyResApiJson:service = "" 
    				MyResApiJson:contractId = "" 
    				MyResApiJson:availableUnits = -1 
    				MyResApiJson:expires = "" 
    				MyResApiJson:scDescription = "" 
    				Désérialise(MyResApiJson, MyBuffer,psdJSON) 
    				Info(ChaîneConstruit("il reste %1 unité(s)",MyResApiJson:availableUnits)) 
    			ELSE 
    				Erreur("La structure de la réponse est incorrecte !") 
    			END 
    		ELSE 
    			Erreur(ChaîneConstruit("Tag : %1 not found !", Tag)) 
    		END 
    	ELSE 
    		Erreur(ResEntêteApi) 
    	END 
    ELSE  
    	Trace(ErreurInfo(errMessage)) 
    END


    Code Windev :
    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
    // API Orange : Envoyer un sms  
    ExpirationTime est un entier sans signe 
    UrlToken, ClientID, ClientSecret, AuthorizationHeader, EntêteHTTPsupplémentaire, Body, ResEntêteApi, ResApi sont des chaînes 
    Token, SenderAddress, SenderName, ReceiverAdress, UrlSendSMS, TypeDuMessage, MessageSMS est une chaîne 
      
    //----- Demande un jeton 
    UrlToken = "https://api.orange.com/oauth/v2/token" 
      
    ClientID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
    ClientSecret = "xxxxxxxxxxxxxxxxx" 
    AuthorizationHeader = "Basic " + Crypte(ClientID + ":" + ClientSecret, "", crypteAucun, encodeBASE64) 
      
    EntêteHTTPsupplémentaire = "Authorization: " + AuthorizationHeader 
      
    Body = [ 
    grant_type=client_credentials 
    ] 
    Token = "" 
      
    IF HTTPRequête(UrlToken, "", EntêteHTTPsupplémentaire, Body) THEN 
    	ResEntêteApi = HTTPDonneRésultat(httpEntête) 
    	IF ExtraitChaîne(ResEntêteApi,1,RC) = "HTTP/1.1 200 OK" THEN 
    		ResApi = HTTPDonneRésultat(httpRésultat) 
    		Token = ExtraitChaîne(ExtraitChaîne(ResApi, 4,Caract(10)), 4, Caract(34)) 
    		ExpirationTime = Val(ExtraitChaîne(Remplace(ExtraitChaîne(ResApi,5, Caract(0x0a)),TAB,""),4,Caract(34))) 
    	ELSE 
      
    	END 
    ELSE 
    	Info( ErreurInfo(errMessage)) 
    	STOP 
    END 
      
    //----- Envoie un sms 
    SenderAddress = "33123456789"									// sans le + mais avec l'indicatif 33=France 221=Sénégal 
    SenderName = "Philippe" 
    ReceiverAdress = "+221013456789" 
    MessageSMS = "Il est " + HeureVersChaîne(HeureSys(),"hh:mm:ss") 
      
    UrlSendSMS = "https://api.orange.com/smsmessaging/v1/outbound/tel%3A%2B" + SenderAddress + "/requests" 
    EntêteHTTPsupplémentaire = "Authorization: Bearer " + Token	// attention aux espaces 1 seul après ":" et après "Bearer" 
    Body = [ 
    { 
    	"outboundSMSMessageRequest":{ 
    		"address":"tel:%3", 
    		"outboundSMSTextMessage":{ 
    			"message":"%4" 
    		}, 
    		"senderAddress":"tel:+%1", 
    		"senderName":"%2" 
    	} 
    } 
    ] 
    Body = ChaîneConstruit(Body, SenderAddress, SenderName, ReceiverAdress, MessageSMS) 
      
    TypeDuMessage = "application/json" 
     IF HTTPRequête(UrlSendSMS, "", EntêteHTTPsupplémentaire, Body, TypeDuMessage) THEN 
     	ResEntêteApi = HTTPDonneRésultat(httpEntête) 
     	ResApi = HTTPDonneRésultat(httpRésultat) 
     	IF ExtraitChaîne(ResEntêteApi,1,RC) = "HTTP/1.1 201 Created" THEN 
     		Info("SMS envoyé.....") 
     	ELSE 
     		Erreur(ResEntêteApi) 
     	END 
     ELSE 
     	Trace(ErreurInfo(errMessage)) 
     END