Le développement d'applications implique souvent l'envoi de SMS aux utilisateurs, par exemple pour les codes de vérification lors de l'inscription, les notifications de mise à jour des commandes ou les messages promotionnels. Cette rubrique explique comment automatiser l'envoi de SMS de manière rapide, sécurisée et fiable en intégrant un SDK et en appelant l'API Short Message Service d'Alibaba Cloud.
Architecture
Le flux de bout en bout de l'appel à l'API SMS implique votre application, le SDK Alibaba Cloud, Resource Access Management (RAM) et le service SMS.
Le processus est le suivant : vous intégrez le SDK Alibaba Cloud dans votre application et utilisez RAM pour attribuer des identifiants disposant des autorisations SMS à votre application. Votre application utilise ces identifiants pour appeler l'API SMS. Après qu'Alibaba Cloud a authentifié la requête et vérifié sa conformité, il transmet le message à la passerelle SMS d'Alibaba Cloud, qui livre ensuite le SMS au téléphone mobile de l'utilisateur via le réseau de l'opérateur.
Ce guide vous montre comment appeler l'API SMS, en prenant l'opération SendMessageToGlobe comme exemple. Vous apprendrez à :
Si vous maîtrisez les appels d'API, vous pouvez consulter directement la référence de l'API et appeler l'opération dont vous avez besoin.
Nous vous recommandons d'utiliser le SDK pour appeler l'API. Si vous préférez créer vos propres requêtes, consultez la section Corps de la requête V3 et signature.
Avant de commencer
Élément | Description | Références |
Autorisations utilisateur | Dans la console RAM, cliquez sur le nom d'un utilisateur RAM pour afficher ses autorisations. Assurez-vous que l'utilisateur RAM qui appelle l'API dispose de l'autorisation liée au SMS requise :
| Étape 1 : Créer un utilisateur RAM et accorder des autorisations |
| Dans la console RAM, cliquez sur le nom d'un utilisateur RAM. Sur la page des détails de l'utilisateur, cliquez sur l'onglet Signature pour afficher l'Template Code. | Étape 1 : Créer un utilisateur RAM et accorder des autorisations |
| Le secret de clé d'accès n'est affiché qu'à la création. En cas de perte, créez une nouvelle paire de clés d'accès. | |
Solde du compte ou quota de forfait | Assurez-vous de disposer d'un solde de compte ou d'un quota de forfait suffisant. Vous pouvez consulter votre quota de forfait sur la page Statistiques du package de ressources ou vérifier le solde de votre compte dans la console Dépenses et coûts. |
Configurer les identifiants
Étape 1 : Créer un utilisateur RAM et accorder des autorisations
Votre compte racine dispose d'autorisations complètes. Utilisez un utilisateur RAM pour les appels d'API et les opérations et maintenance quotidiennes. Pour plus d'informations, consultez la section Présentation.
Créez un utilisateur RAM : accédez à la page Créer un utilisateur. Spécifiez les informations requises, sélectionnez Permanent AccessKey pour Access Configuration, puis cliquez sur OK. Enregistrez votre clé d'accès pour une utilisation ultérieure.
Accordez des autorisations à l'utilisateur RAM : accédez à la page Utilisateurs. Trouvez l'utilisateur RAM que vous avez créé et cliquez sur Attach Policy dans la colonne OK. Dans la zone de recherche Attach Policy, saisissez AliyunDysmsFullAccess, sélectionnez la politique, puis cliquez sur Actions.
AliyunDysmsFullAccess: Accorde des autorisations complètes pour gérer le service SMS.
AliyunDysmsReadOnlyAccess : accorde des autorisations en lecture seule pour accéder au service SMS.
Pour créer une politique personnalisée, consultez la section Autorisation RAM.
Étape 2 : Configurez les identifiants d'accès
Stockez votre paire AccessKey dans des variables d'environnement. Configurez les variables d'environnement sous Linux, macOS et Windows.
N'insérez pas votre paire AccessKey en dur dans le code. Récupérez-la à partir des variables d'environnement.
L'exemple de code utilise les variables d'environnement
ALIBABA_CLOUD_ACCESS_KEY_IDetALIBABA_CLOUD_ACCESS_KEY_SECRET.
Étape 3 : Configurez les variables d'environnement
Windows
Sous Windows, vous pouvez configurer les variables d'environnement via les propriétés système, l'invite de commandes (CMD) ou PowerShell.
System properties
Cette méthode définit des variables d'environnement permanentes.
Des privilèges d'administrateur sont requis pour modifier les variables système.
Les modifications apportées aux variables d'environnement n'affectent pas les applications en cours d'exécution. Vous devez redémarrer toutes les interfaces en ligne de commande, les IDE ou autres applications ouvertes pour appliquer les nouveaux paramètres.
Sur le bureau Windows, appuyez sur
Win+Q. Dans la zone de recherche, saisissez Edit the system environment variables et sélectionnez cette option pour ouvrir la fenêtre System Properties.Dans la fenêtre System Properties, cliquez sur Environment Variables. Dans la section System variables, cliquez sur New. Définissez Variable name sur
ALIBABA_CLOUD_ACCESS_KEY_IDet Variable value sur votre AccessKey ID. Répétez cette étape pourALIBABA_CLOUD_ACCESS_KEY_SECRET.Cliquez sur OK dans les trois fenêtres pour enregistrer les paramètres et les fermer.
-
Ouvrez une fenêtre CMD ou Windows PowerShell et exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.
-
Commande CMD :
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%Microsoft Windows [Version 10.0.22621.3593] (c) Microsoft Corporation. All rights reserved. C:\Windows\System32>echo %ALIBABA_CLOUD_ACCESS_KEY_ID% LTAI C:\Windows\System32> -
Commande Windows PowerShell :
echo $env:ALIBABA_CLOUD_ACCESS_KEY_ID echo $env:ALIBABA_CLOUD_ACCESS_KEY_SECRETWindows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows PS C:\Windows\system32> echo $env:ALIBABA_CLOUD_ACCESS_KEY_ID LTAIxxx PS C:\Windows\system32>
-
CMD
Permanent
Pour définir une variable d'environnement persistante pour toutes les nouvelles sessions de l'utilisateur actuel, suivez ces étapes.
-
Exécutez les commandes suivantes dans CMD.
# Replace YOUR_ACCESS_KEY_ID with your AccessKey ID. setx ALIBABA_CLOUD_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" # Replace YOUR_ACCESS_KEY_SECRET with your AccessKey secret. setx ALIBABA_CLOUD_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET" Ouvrez une nouvelle fenêtre CMD.
-
Dans la nouvelle fenêtre CMD, exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
Temporary
Pour définir une variable d'environnement uniquement pour la session actuelle, exécutez les commandes suivantes dans CMD.
# Replace YOUR_ACCESS_KEY_ID with your AccessKey ID.
set ALIBABA_CLOUD_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
# Replace YOUR_ACCESS_KEY_SECRET with your AccessKey secret.
set ALIBABA_CLOUD_ACCESS_KEY_SECRET=YOUR_ACCESS_KEY_SECRET
Vous pouvez exécuter les commandes suivantes dans la session actuelle pour vérifier que les variables d'environnement sont définies.
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
PowerShell
Permanent
Pour définir une variable d'environnement persistante pour toutes les nouvelles sessions de l'utilisateur actuel, suivez ces étapes.
-
Exécutez les commandes suivantes dans PowerShell.
# Replace YOUR_ACCESS_KEY_ID with your AccessKey ID. [Environment]::SetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) # Replace YOUR_ACCESS_KEY_SECRET with your AccessKey secret. [Environment]::SetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) Ouvrez une nouvelle fenêtre PowerShell.
-
Dans la nouvelle fenêtre PowerShell, exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.
echo $env:ALIBABA_CLOUD_ACCESS_KEY_ID echo $env:ALIBABA_CLOUD_ACCESS_KEY_SECRET
Temporary
Pour définir une variable d'environnement uniquement pour la session actuelle, exécutez les commandes suivantes dans PowerShell.
# Replace YOUR_ACCESS_KEY_ID with your AccessKey ID.
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "YOUR_ACCESS_KEY_ID"
# Replace YOUR_ACCESS_KEY_SECRET with your AccessKey secret.
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "YOUR_ACCESS_KEY_SECRET"
Vous pouvez exécuter les commandes suivantes dans la session actuelle pour vérifier que les variables d'environnement sont définies.
echo $env:ALIBABA_CLOUD_ACCESS_KEY_ID
echo $env:ALIBABA_CLOUD_ACCESS_KEY_SECRET
Linux
Permanent
Pour définir une variable d'environnement persistante pour toutes les nouvelles sessions de l'utilisateur actuel, ajoutez la variable au fichier de démarrage de votre shell.
-
Exécutez la commande suivante pour ajouter les paramètres de variable d'environnement au fichier
~/.bashrc.# Replace YOUR_ACCESS_KEY_ID with your AccessKey ID. echo "export ALIBABA_CLOUD_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc # Replace YOUR_ACCESS_KEY_SECRET with your AccessKey secret. echo "export ALIBABA_CLOUD_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrcVous pouvez également modifier manuellement le fichier
~/.bashrc. -
Exécutez la commande suivante pour appliquer les modifications.
source ~/.bashrc -
Rouvrez une fenêtre de terminal et exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies. Redémarrez votre IDE avant d'utiliser le SDK.
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
Temporary
Pour définir une variable d'environnement uniquement pour la session actuelle, suivez ces étapes.
-
Exécutez les commandes suivantes.
# Replace YOUR_ACCESS_KEY_ID with your AccessKey ID. export ALIBABA_CLOUD_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID" # Replace YOUR_ACCESS_KEY_SECRET with your AccessKey secret. export ALIBABA_CLOUD_ACCESS_KEY_SECRET="YOUR_ACCESS_KEY_SECRET" -
Exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
macOS
Permanent
Pour définir une variable d'environnement persistante pour toutes les nouvelles sessions de l'utilisateur actuel, ajoutez la variable au fichier de démarrage de votre shell.
-
Exécutez la commande suivante dans un terminal pour vérifier le type de shell par défaut.
echo $SHELL -
Suivez les étapes en fonction de votre type de shell par défaut.
Zsh
-
Exécutez la commande suivante pour ajouter les paramètres de variable d'environnement au fichier
~/.zshrc.# Replace YOUR_ACCESS_KEY_ID with your AccessKey ID. echo "export ALIBABA_CLOUD_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc # Replace YOUR_ACCESS_KEY_SECRET with your AccessKey secret. echo "export ALIBABA_CLOUD_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrcVous pouvez également modifier manuellement le fichier
~/.zshrc. -
Exécutez la commande suivante pour appliquer les modifications.
source ~/.zshrc -
Rouvrez une fenêtre de terminal et exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
Bash
-
Exécutez la commande suivante pour ajouter les paramètres de variable d'environnement au fichier
~/.bash_profile.# Replace YOUR_ACCESS_KEY_ID with your AccessKey ID. echo "export ALIBABA_CLOUD_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile # Replace YOUR_ACCESS_KEY_SECRET with your AccessKey secret. echo "export ALIBABA_CLOUD_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profileVous pouvez également modifier manuellement le fichier
~/.bash_profile. -
Exécutez la commande suivante pour appliquer les modifications.
source ~/.bash_profile -
Rouvrez une fenêtre de terminal et exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
-
Temporary
Pour définir une variable d'environnement uniquement pour la session actuelle, suivez ces étapes.
Les commandes suivantes fonctionnent à la fois pour Zsh et Bash.
-
Exécutez les commandes suivantes.
# Replace YOUR_ACCESS_KEY_ID with your AccessKey ID. export ALIBABA_CLOUD_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID" # Replace YOUR_ACCESS_KEY_SECRET with your AccessKey secret. export ALIBABA_CLOUD_ACCESS_KEY_SECRET="YOUR_ACCESS_KEY_SECRET" -
Exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
Après avoir modifié les variables d'environnement, redémarrez ou actualisez votre environnement de build et d'exécution. Cela garantit que les applications telles que les IDE, les interfaces en ligne de commande et les services en arrière-plan chargent les nouvelles variables.
Installer le SDK
Ce guide fournit des exemples pour Java. Pour les autres langages, consultez la référence du SDK.
-
Assurez-vous que Java 8 ou une version ultérieure est installé.
Environnement Java
-
Installez le SDK en ajoutant la dépendance Maven suivante. Remplacez
the-latest-versionpar le .<dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20180501</artifactId> <!-- Replace 'the-latest-version' with the latest version number: https://mvnrepository.com/artifact/com.aliyun/dysmsapi20180501 --> <version>the-latest-version</version> </dependency>
Utiliser le SDK
1. Initialiser le client
Le SDK Alibaba Cloud prend en charge l'initialisation du client avec divers identifiants, tels qu'un AccessKey ou un jeton STS. Pour plus d'informations, consultez Gérer les identifiants. Cette rubrique utilise un AccessKey à titre d'exemple.
package com.aliyun.sample;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.dysmsapi20180501.Client;
public class Sample {
public static Client createClient() throws Exception {
Config config = new Config()
// Configure the AccessKey ID. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Configure the AccessKey secret. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// The System.getenv() method retrieves a system environment variable. Do not hard-code your AccessKey credentials in the code.
// Configure the endpoint.
config.endpoint = "dysmsapi.ap-southeast-1.aliyuncs.com";
return new Client(config);
}
}
2. Construire l'objet de requête
Créez la requête API et définissez les paramètres selon vos besoins.
Convention de nommage des objets de requête : {APIName}Request, par exemple, l'objet de requête pour l'API SendMessageToGlobe est SendMessageToGlobeRequest.
SendMessageToGlobeRequest sendSmsRequest = new SendMessageToGlobeRequest()
.setTo("<YOUR_VALUE>")
.setMessage("<YOUR_VALUE>");
3. Initiez la requête
Utilisez l'API SendMessageToGlobe pour lancer une requête API.
Convention de nommage des objets de réponse : {nom de l'API}Response. Par exemple, l'objet de réponse pour l'API SendMessageToGlobe est SendMessageToGlobeResponse.
SendMessageToGlobeResponse sendSmsResponse = client.sendMessageToGlobe(sendSmsRequest);
Vous pouvez également configurer d'autres paramètres de requête. Pour plus d'informations, consultez la rubrique Initier une requête API.
Pour en savoir plus sur les paramètres de délai d'expiration et de nouvelle tentative, consultez les rubriques Configurer un délai d'expiration et Configurer un mécanisme de nouvelle tentative.
Pour obtenir des informations sur les types d'exceptions du SDK et leur gestion, consultez la rubrique Gestion des exceptions.
Exemple de code
Le résultat ressemble à ce qui suit :
{
"headers": {
"date": "Tue, 24 Oct 2023 07:47:17 GMT",
"content-type": "application/json;charset=utf-8",
"content-length": "263",
"connection": "keep-alive",
"keep-alive": "timeout=25",
"access-control-allow-origin": "*",
"access-control-expose-headers": "*",
"x-acs-request-id": "97B1D7B6-F2F6-3A50-97BC-A90B43EC962F",
"x-acs-trace-id": "29c11fe4c778b74774d5f5602f0e7975",
"etag": "2a+mcDRTDkXqx9VF7b6U57Q3"
},
"statusCode": 200,
"body": {
"ResponseCode": "OK",
"NumberDetail": {
"Region": "Taiwan",
"Country": "Taiwan, Province of China",
"Carrier": "FarEasTone"
},
"RequestId": "97B1D7B6-F2F6-3A50-97BC-A90B43EC962F",
"Segments": "1",
"ResponseDescription": "OK",
"To": "88691567****",
"MessageId": "191921698133637273"
}
}
Codes d'erreur de l'API
Pour plus d'informations, consultez la rubrique Codes d'erreur pour les messages internationaux.
Coûts et risques
Répartition des coûts : les SMS sont facturés par message et le prix varie selon le pays ou la région. Pour connaître les tarifs détaillés, consultez la page de facturation.
-
Principaux risques :
Fuite d'identifiants : une fuite d'AccessKey peut compromettre toutes les ressources de votre compte, entraînant des frais imprévus ou du chantage. Dans les cas graves, son utilisation abusive peut également nuire à Alibaba Cloud ou à d'autres utilisateurs. Pour plus de détails, consultez la rubrique Gérer les fuites d'AccessKey.
Conformité du contenu : vous devez vous assurer que le contenu envoyé respecte les lois et réglementations du pays ou de la région de destination. Le non-respect de ces règles peut entraîner le blocage des messages ou la suspension du compte.
Contenu connexe
Déboguez les appels d'API dans OpenAPI Explorer.
Utilisez l'opération BatchSendMessageToGlobe pour envoyer des SMS par lots.
Découvrez d'autres cas d'utilisation du service Short Message Service dans les exemples de SDK.
Consultez les statistiques des messages sur le tableau de bord.