Le développement d'applications implique souvent l'envoi de SMS aux utilisateurs, par exemple pour les codes de vérification d'inscription, les notifications de mise à jour de commande 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 met en jeu 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. Une fois la requête authentifiée et la conformité vérifiée par Alibaba Cloud, le message est transmis à 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 déjà les appels d'API, consultez directement la référence de l'API et appelez l'opération dont vous avez besoin.
Nous vous recommandons d'utiliser le SDK pour appeler l'API. Si vous préférez construire 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 appelant l'API dispose de l'autorisation liée aux 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 AccessKey n'est affiché qu'à la création. En cas de perte, créez une nouvelle paire AccessKey. | |
Solde du compte ou quota de forfait | Assurez-vous de disposer d'un solde de compte suffisant ou d'un quota de forfait. Vous pouvez afficher votre quota de forfait sur la page Statistiques des forfaits 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 de toutes les autorisations. Utilisez un utilisateur RAM pour les appels d'API et les opérations et maintenance courantes. 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 AccessKey pour une utilisation ultérieure.
Accordez des autorisations à l'utilisateur RAM : accédez à la page Utilisateurs. Recherchez 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 stratégie, 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 stratégie personnalisée, consultez la section Autorisation RAM.
Étape 2 : Configurer les identifiants d'accès
Stockez votre paire AccessKey dans des variables d'environnement. Configurer les variables d'environnement sous Linux, macOS et Windows.
Ne codez pas en dur votre paire AccessKey. 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 : Configurer les variables d'environnement
Windows
Sous Windows, vous pouvez configurer les variables d'environnement à l'aide des Propriétés système, de CMD ou de PowerShell.
Propriétés système
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 de ligne de commande ouvertes, les IDE ou autres applications pour appliquer les nouveaux paramètres de variable.
Sur le bureau Windows, appuyez sur
Win+Q. Dans la zone de recherche, saisissez Modifier les variables d'environnement système et sélectionnez cette option pour ouvrir la fenêtre Propriétés système.Dans la fenêtre Propriétés système, cliquez sur Variables d'environnement. Dans la section Variables système, cliquez sur Nouveau. Définissez Nom de la variable sur
ALIBABA_CLOUD_ACCESS_KEY_IDet Valeur de la variable sur votre ID AccessKey. 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 dans toutes les nouvelles sessions pour 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%
Temporaire
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
Exécutez 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 dans toutes les nouvelles sessions pour 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
Temporaire
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"
Exécutez 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 dans toutes les nouvelles sessions pour 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
Temporaire
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 dans toutes les nouvelles sessions pour 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 votre 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
-
Temporaire
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 de ligne de commande et les services en arrière-plan chargent les nouvelles variables.
Installer le SDK
Ce guide fournit des exemples pour Java et Python. Pour les autres langages, consultez la Référence du SDK. Pour obtenir des instructions d'utilisation complètes en Python, consultez la section SDK Python.
-
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 numéro de la dernière version.<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>
Si vous utilisez Python, installez le SDK à l'aide de pip. Assurez-vous que Python 3.7 ou une version ultérieure est installé.
pip install alibabacloud_dysmsapi20180501
Utiliser le SDK
1. Initialiser le client
Le SDK Alibaba Cloud prend en charge l'initialisation du client avec divers identifiants, tels qu'une AccessKey ou un jeton STS. Pour plus d'informations, consultez la section Gérer les identifiants. Cette rubrique utilise une AccessKey comme 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 en fonction de vos besoins.
Convention de dénomination 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. Envoyer la requête
Utilisez l'API SendMessageToGlobe pour envoyer une requête API.
Convention de dénomination des objets de réponse : {API name}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 section Envoyer une requête API.
Pour obtenir des informations sur les paramètres de délai d'attente et de nouvelle tentative, consultez les sections Configurer un délai d'attente et Configurer un mécanisme de nouvelle tentative.
Pour obtenir des informations sur les types d'exceptions du SDK et leur gestion, consultez la section Gestion des exceptions.
Exemple de code
Exemple de code Python
La sortie est similaire à 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 API
Pour plus d'informations, consultez la section Codes d'erreur pour les messages internationaux.
Coûts et risques
Détail des coûts : les SMS sont facturés par message et le prix varie selon le pays ou la région. Pour obtenir des informations détaillées sur les tarifs, consultez la section facturation.
-
Risques principaux :
Fuite d'identifiants : une AccessKey divulguée 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 section Gérer les fuites d'AccessKey.
Conformité du contenu : vous devez vous assurer que le contenu envoyé est conforme aux lois et réglementations du pays ou de la région de destination. Le non-respect de cette obligation peut entraîner le blocage des messages ou la suspension du compte.
Contenu connexe
Déboguer les appels d'API dans OpenAPI Explorer.
Utilisez l'opération BatchSendMessageToGlobe pour envoyer des SMS par lots.
Trouvez davantage de cas d'utilisation de Short Message Service dans les exemples de SDK.
Consultez le SDK Python.
Affichez les statistiques des messages sur le tableau de bord.