Orange SMS
Orange - SMS API (Afrique)
Envoie un SMS via l'API Orange en encodant l'adresse expéditeur dans le chemin.
Authentification
- Même jeton OAuth que les autres APIs Orange :
POST https://api.orange.com/oauth/v3/tokenavecAuthorization: Basic <base64(client_id:client_secret)>. - Appels :
Authorization: Bearer <access_token>.
Endpoints
POST https://api.orange.com/smsmessaging/v1/outbound/{senderAddress}/requestssenderAddressest encodé dans le chemin :tel%3A%2B2210000pourtel:+2210000.- Corps :
outboundSMSMessageRequest: { address, senderAddress, outboundSMSTextMessage: { message } }. - Réponse
201avec la ressource créée.
Erreurs
401jeton expiré.403plus de crédit SMS dans le bundle.400adresse mal formée.
Webhooks
- Accusés de réception : abonnement séparé, livrés sur l'URL déclarée.
Idempotence et limites
- Le bundle SMS est décompté à chaque envoi : dédupliquer avant l'appel.
Pièges courants
Ce que les LLMs inventent le plus souvent pour Orange SMS.
addressetsenderAddresssont au formattel:+221..., pas un numéro nu.- Le
senderAddressdu chemin doit être encodé en URL. - Pas de champ
tonitext: la structure est imbriquée.
Exemple minimal
1export async function sendOrangeSms(token: string, to: string, message: string) {2 const sender = "tel:+" + process.env.ORANGE_SMS_SENDER;3 const url = "https://api.orange.com/smsmessaging/v1/outbound/" + encodeURIComponent(sender) + "/requests";4 const res = await fetch(url, {5 method: "POST",6 headers: { Authorization: "Bearer " + token, "Content-Type": "application/json" },7 body: JSON.stringify({8 outboundSMSMessageRequest: { address: "tel:" + to, senderAddress: sender, outboundSMSTextMessage: { message } },9 }),10 });11 if (res.status !== 201) throw new Error("Orange SMS " + res.status);12}Variables d'environnement
ORANGE_CLIENT_IDORANGE_CLIENT_SECRETORANGE_SMS_SENDER