
Partager:
Jẹ́káyinOlúwa is a software craftsman and product manager passionate about technology and its impact on people. He works on product management, backend development, DevOps, technical writing, and community strategy. He enjoys dealing in the intersection of software, design, and human interaction. He likes reading and music.
Recevoir des accusés de réception de SMS sortants avec Python
Temps de lecture : 11 minutes
Vous avez déjà appris à envoyer un SMS avec Python. Vous avez également appris à recevoir des SMS dans des applications Python. Mais à moins d'avoir accès à l'appareil auquel vous l'avez envoyé, comment pouvez-vous être sûr que votre SMS est arrivé ?
Avec l'API Messages de Vonage, vous pouvez confirmer la livraison par le biais de webhooks et créer des reçus de livraison (également appelés DLR ou rapports de livraison). Dans ce tutoriel, vous apprendrez à mettre en place des tests de livraison de SMS en Python avec l'aide de l'API de Vonage.
Note: Il existe deux API pour les applications SMS dans Vonage. L'API SMS API peut être utilisée pour la messagerie SMS, tandis que l'API Messages API vous permet d'utiliser à la fois les SMS et les canaux non-SMS comme WhatsApp, Facebook Messenger, Viber et MMS. Ce tutoriel utilise l'API Messages.
Conditions préalables
Pour créer une application Python de confirmation de livraison par SMS, vous aurez d'abord besoin d'un Account API Vonage. Une fois votre compte Vonage configuré, vous devrez également installer les outils suivants :
Python sera utilisé comme cadre de travail pour votre application.
Flask sera utilisé pour écrire votre webhook pour les rapports de livraison de SMS.
L'interface CLI de Vonage CLI de Vonage vous permettra de configurer correctement votre Account Vonage. Il peut également être utilisé pour acheter un numéro virtuel.
Python
Obtenez la version de Python correspondant à votre système d'exploitation sur la page officielle de téléchargement de Python. page officielle de téléchargement de Python.
Avant d'installer Flaskcréez votre répertoire de projet et naviguez-y comme suit :
mkdir delivery_receipt
cd delivery_receipt Flacon
Installez Flask avec le gestionnaire de paquets pip gestionnaire de paquets. pip Flask est installé avec Python. Vous utiliserez ensuite Flask pour alimenter votre application. Utilisez la commande de terminal suivante pour installer Flask dans le dossier nouvellement créé.
pip install flask CLI Vonage
Installez l'interface de programmation de Vonage globalement dans votre terminal avec le gestionnaire de paquets npm le gestionnaire de paquets :
Instructions
Après avoir installé avec succès les paquets ci-dessus, vous pouvez commencer à construire votre application Python pour les tests de livraison de SMS.
Voici les étapes à suivre pour créer une application Python qui reçoit les rapports de livraison de SMS :
Créer un webhook pour les accusés de réception de SMS
Rendre l'URL du webhook accessible au public
Configurez votre Account Vonage pour les reçus de livraison
Envoyer un SMS pour tester les rapports de livraison en Python
1. Créer un Webhook pour les accusés de réception de SMS
La première étape pour recevoir des accusés de réception de SMS consiste à créer un webbook.
Lorsque vous envoyez des messages via votre (application Vonage) [https://developer.vonage.com/en/getting-started/concepts/glossary#vonage-application], le reçu de livraison est transmis à votre application Python si vous avez défini une URL webhook dans votre tableau de bord Vonage. Nous configurerons la partie Vonage plus tard, mais pour l'instant nous allons configurer notre application Flask pour qu'elle accepte cette requête POST.
Vous accepterez une POST dans votre gestionnaire de webhook pour recevoir les mises à jour de l'état des messages. Les demandes de webhook de l'API Messages sont des POST demandes. Vous créerez un point de terminaison Flask pour la demande.
Créez un fichier receipt.py dans votre projet Flask et ajoutez le code suivant :
#!/usr/bin/env python3
from flask import Flask, request, jsonify
from pprint import pprint
app = Flask(__name__)
@app.route("/webhooks/message-status", methods=['POST'])
def message_status():
if request.is_json:
data = request.get_json()
pprint(data)
else:
data = dict(request.form) or dict(request.args)
pprint(data)
return "200"
if __name__ == '__main__':
app.run(host="", port=3000)Dans le code ci-dessus, vous avez créé le point de terminaison webhook, /webhooks/message-statusqui accepte le code d'état des SMS via les webhooks.
Le point d'accès analyse également la demande entrante et utilise ensuite la fonction request.get_json() pour vérifier si la demande est au format JSON. Les demandes encodées en JSON ont leur valeur mimetype est fixé à application/json ou application/*+json.
Si la demande n'est pas au format JSON, alors request.form et request.args récupèrent les paires clé/valeur dans le corps de la demande ou la chaîne de requête de l'URL respectivement.
Le point d'accès analyse ensuite les données de la demande dans la variable data et les imprime sur le terminal à l'aide de la commande pprint. La dernière commande lance le serveur de l'application sur le port 3000.
2. Rendre l'URL du Webhook accessible au public
Vous allez maintenant créer une URL accessible au public à laquelle les API de Vonage peuvent envoyer les demandes de webhook. De cette façon, l'API Vonage peut accéder au webhook que vous avez créé pour les accusés de réception.
ngrok est un moteur léger et rapide qui imite un serveur web. Par conséquent, vous n'aurez pas à faire les réglages DNS, les configurations SSL, et d'autres choses dont vous auriez besoin dans un scénario de production réel. ngrok est un outil utile pour des tests rapides dans un environnement de développement. Vous pouvez consulter ce tutoriel pour obtenir plus d'informations sur l'utilisation de ngrok.
Tout d'abord, installez ngrok depuis le officiel.
Ensuite, lancez ngrok dans votre terminal :
Vous obtiendrez une URL publique similaire à la suivante :
Vous pouvez envoyer des requêtes web à l'URL qui a été générée pour vous. ngrok générée pour vous. Elle est servie sur le port 3000 de votre machine locale.
Notez les points suivants :
L'URL change chaque fois que vous redémarrez le
ngrokserveur si vous êtes sur le plan gratuit.Une session de serveur ngrok dure 1 heure dans le plan gratuit, après quoi vous pouvez relancer le serveur et vous obtenez une nouvelle URL publique.
Vous devez ajouter votre point de terminaison à l'URL ngrok nouvellement générée pour former l'URL de votre webhook comme suit :
https://f9db-102-89-43-137.eu.ngrok.io/webhooks/message-status
L'URL ci-dessus est l'URL complète de votre webhook.
3. Configurer votre Account Vonage pour les reçus de livraison
Maintenant que votre webhook de réception de livraison est prêt, vous allez terminer la configuration dans votre Account Vonage.
Visitez les paramètres sur votre tableau de bord et allez dans les Paramètres SMS pour sélectionner Messages API. Vous pouvez conserver les autres paramètres par défaut, tels que la version de Messages API, à l'adresse suivante 1.0.
Ensuite, allez dans le menu Applications pour créer une application Vonage. Cliquez sur l'icône + Créer une application pour créer une application. Ensuite, entrez le nom que vous souhaitez dans le champ Nom dans le champ Nom.
Dans la section Capacités, sélectionnez Messages et entrez l'URL de votre webhook URL d'état. Vous devrez saisir votre URL pour l'URL d'entrée et l'URL d'état. Vous pouvez consulter notre Comment recevoir des SMS en Python pour savoir comment configurer l URL entrante entrante pour accepter les SMS entrants.
Votre tableau de bord devrait ressembler à ceci avec vos URLs ngrok :
ngrok-webhooks-configured-for-messages-api.png
Cliquez sur Générer une nouvelle application pour terminer le processus de création. Vous accéderez alors automatiquement à la page de la demande.
Sur la page d'application, vous pouvez ensuite lier votre numéro ou acheter un numéro virtuel si vous utilisez un compte Vonage payant.
4. Envoyer un SMS pour tester les rapports de livraison en Python
À ce stade, votre serveur ngrok devrait fonctionner sur le port 3000Assurez-vous que vous avez également configuré votre application avec un numéro virtuel dans votre compte Vonage.
Maintenant, vous pouvez démarrer l'application Flask dans une autre fenêtre de terminal pour que la fenêtre de terminal précédente continue de fonctionner avec ngrok.
Utilisez la commande suivante pour lancer l'application dans le port spécifié 3000. ngrok récupère l'application dans le port et la diffuse sur internet via son URL publique.
Pour tester notre code, nous devons envoyer un SMS depuis notre numéro Vonage via l'API Messages.
Tout d'abord, nous allons créer un nouveau fichier dans notre projet appelé send-sms.sh
Dans ce fichier, nous ajouterons le code suivant :
curl -X POST https://api.nexmo.com/v1/messages \
-H 'Authorization: Bearer '$JWT\
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d $'{
"message_type": "text",
"text": "Vonage Delivery Receipt Testing",
"to": "'$TO_NUMBER'",
"from": "'$FROM_NUMBER'",
"channel": "sms"
}'Remplacez $TO_NUMBER par votre numéro personnel, $FROM_NUMBER par votre numéro virtuel Vonage et $JWT par un JWT que vous créez pour l'application. Vous pouvez utiliser notre outil de génération de JWT en ligne.
Veillez à ajouter le code de votre pays à
YOUR_PERSONAL_NUMBERtel que 23400000001
Ouvrez ensuite un nouvel onglet dans votre terminal et exécutez :
bash send-sms.shVous devriez obtenir une réponse avec l'identifiant du message, comme ceci :
{"message_uuid":"6cdbd8ed-7217-4bbf-ba3f-da9cdcaeaf2b"}Ensuite, si vous regardez dans votre onglet ngrok, vous verrez une requête POST réussie, comme ceci :
POST /webhooks/message-status 200 OKEt enfin, vous verrez dans l'onglet de votre application, vous devriez voir l'état du récépissé de livraison dans le terminal comme ci-dessous :
{'channel': 'sms',
'destination': {'network_code': '42507'},
'from': '972523083911',
'message_uuid': '30af1182-e2c9-4986-bf60-0129a14bbc79',
'sms': {'count_total': '1'},
'status': 'submitted',
'timestamp': '2023-06-19T10:23:16Z',
'to': '972532208911',
'usage': {'currency': 'EUR', 'price': '0.093'}}Remarquez que l'état est submitted. Dans quelques secondes, vous devriez obtenir une deuxième réponse qui ressemble à ceci :
{'channel': 'sms',
'destination': {'network_code': '42507'},
'from': '972523083911',
'message_uuid': '30af1182-e2c9-4986-bf60-0129a14bbc79',
'status': 'delivered',
'timestamp': '2023-06-19T10:23:23Z',
'to': '972532208911'} Conclusion
Lorsque vous travaillez avec des messages SMS, les accusés de réception peuvent être critiques - en particulier lorsque vous construisez des applications à grande échelle. En créant une application Python pour les accusés de réception, vous saurez que la livraison échoue et vous pourrez prendre des mesures correctives
Cet article montre comment obtenir les accusés de réception des SMS envoyés via l'API Messages de Vonage. Vous avez appris à construire une application basée sur Python pour gérer les rapports de livraison de SMS, et vous avez appris à tester cette application avec ngrok. Maintenant, vous pouvez inclure la fonctionnalité des accusés de réception dans toutes les applications Python que vous créez.
Pour en savoir plus
Vous pouvez consulter certaines de nos ressources pour en savoir plus sur l'API Messages :
Avez-vous apprécié ce tutoriel ? Vous êtes resté bloqué ? Contactez-nous sur Twitter ou sur le Communauté Vonage Slack. Nous sommes impatients de voir ce que vous construisez !
Partager:
Jẹ́káyinOlúwa is a software craftsman and product manager passionate about technology and its impact on people. He works on product management, backend development, DevOps, technical writing, and community strategy. He enjoys dealing in the intersection of software, design, and human interaction. He likes reading and music.