Diffuser des messages texte à partir d'applications Web Django en Python 3
Temps de lecture: 4 minutes
Les messages texte (Short Message Service, SMS ou service de messages courts) sont utilisés partout pour faciliter les communications urgentes. Il est également facile d'en envoyer à grande échelle en combinant une application Web Django avec une interface de programmation d'application (API).
Dans ce tutoriel, nous allons créer un projet Django simple, dans lequel nous allons mettre en place une fonctionnalité SMS permettant de transmettre des messages à plusieurs destinataires.
Si vous souhaitez aller plus loin dans l'apprentissage de Python ou de l'API Twilio SMS, découvrez l'incroyable jeu TwilioQuest pour vous entraîner.
Dépendances de projet requises
Nous utiliserons Python 3 dans le cadre de ce tutoriel, car Python 2 n'est plus pris en charge depuis le 31 décembre 2019. Plus précisément, nous allons ici utiliser Python 3.8.
Nous aurons également besoin des dépendances d'application suivantes dans notre appli :
- Framework Web Django, version 2.2.x ;
- pip et virtualenv ;
- La librairie de Twilio pour Python, version 6.32.0 ou ultérieure ;
- Un compte Twilio gratuit. Inscrivez-vous pour obtenir un compte et utiliser les API de Twilio.
Si vous avez besoin d'aide pour configurer votre environnement de développement avant d'exécuter ce code, consultez ce guide de configuration pour Python 3 et Django sur Ubuntu 16.04 LTS.
Le code utilisé dans ce post est également disponible sur GitHub dans le répertoire django/djsms du répertoire Git python-twilio-example-apps.
Installation des dépendances de projet Python
Notre code utilise la librairie de Twilio pour faciliter l'envoi de messages texte avec Python. Nous allons installer la librairie depuis PyPI dans un environnement virtuel.
Mais tout d'abord, nous devons créer l'environnement virtuel. Dans votre terminal, saisissez la commande suivante pour créer un nouvel environnement virtuel et l'activer :
Installez Django et la librairie de Twilio :
Une fois la commande terminée, un résultat ressemblant aux lignes suivantes devrait s'afficher :
À ce stade, nous avons installé les dépendances nécessaires et pouvons désormais les utiliser pour créer notre projet.
Création du projet Django
Nous allons commencer notre projet en utilisant l'outil django-admin
de Django pour créer une structure de code standard.
Accédez au répertoire dans lequel vous développez vos applications. En ce qui me concerne, j'utilise généralement le répertoire /Users/matt/devel/py/
sur mon Mac ou /home/matt/devel/py
sur Linux.
Exécutez la commande suivante pour démarrer un projet Django nommé djsms
et accéder au répertoire que vous venez de créer :
Créez une nouvelle application Django nommée broadcast
dans le projet djsms
:
Django génère un nouveau dossier nommé broadcast
une fois la commande exécutée, Nous devons mettre à jour les fichiers de paramètres et d'URL du projet. Assurez-vous donc que l'application broadcast
est disponible.
Ouvrez djsms/settings.py
:
Assurez-vous de modifier les valeurs par défaut DEBUG
et SECRET_KEY
dans settings.py
avant d'archiver vos fichiers dans Git ou de déployer du code en production. Sécurisez votre application correctement à l'aide des informations de la checklist du déploiement de production de Django afin de ne pas ajouter votre projet à la liste des applications piratées sur le Web.
Enregistrez et fermez settings.py
. Ouvrez le fichier djsms/urls.py
et ajoutez les URL de l'application broadcast
à la liste des URL de votre projet principal :
Les deux nouvelles lignes de code ci-dessus relient le fichier urls.py
principal au fichier broadcast/urls.py
, que nous allons ensuite compléter.
Coder l'application de diffusion
Accédez ensuite au répertoire broadcast
. Créez un nouveau fichier nommé urls.py
dont on se servira pour indiquer un chemin URL dédié à l'envoi des SMS :
Ouvrez le fichier urls.py
vide et ajoutez les lignes de code suivantes :
Dans le code ci-dessus, il y a une route URL unique correspondant à `broadcast`,qui joue le rôle de chemin d'accès à la fonction d'affichage `broadcast_sms` qu'il nous reste à coder
Nous devons écrire cette fonction dans `broadcast/views.py` pour gérer l'envoi des messages. Enregistrez le fichier `urls.py` et ouvrez `views.py`, puis mettez-le à jour à l'aide des lignes suivantes :
Dans le code ci-dessus, nous importons le fichier settings
de Django afin de pouvoir accéder aux paramètres de notre projet ainsi qu'à la classe HttpResponse
pour renvoyer un simple code de statut HTTP 200
avec une réponse texte. Nous importons également la librairie de Twilio pour Python.
La fonction broadcast_sms
gère la majeure partie du travail. Elle spécifie un message à envoyer, instancie le client librairie et lit en boucle chaque numéro de téléphone répertorié dans la variable SMS_BROADCAST_TO_NUMBERS
. Si un numéro de téléphone est indiqué (non vide), la fonction appelle l'API de Twilio pour envoyer le SMS au numéro de téléphone du destinataire. Une fois la boucle terminée, la fonction retourne une réponse HTTP 200
avec le texte « messages sent ! » (messages envoyés).
Avant de tester notre application, nous devons obtenir un numéro de téléphone auprès de Twilio ainsi que des informations d'identification pour nous authentifier auprès de l'API.
Accès à l'API Twilio SMS
Connectez-vous à votre compte Twilio ou créez un compte Twilio gratuit.
Une fois le processus d'inscription (ou de connexion) terminé, vous êtes dirigé vers la console Twilio, où vous pourrez accéder à votre Account SID (SID de compte) et Auth Token (token d'authentification), comme indiqué ci-dessous :
Définissez l'Account SID et Auth Token comme variables d'environnement pour que votre application Django puisse les lire et les utiliser. Créez un nouveau fichier nommé .env
et collez le contenu suivant dans ce fichier.
(Vous pouvez également copier le fichier template.env
du répertoire Git sous le répertoire django/djsms/
et le renommer en .env
.)
Remplacez les variables TWILIO_ACCOUNT_SID
et TWILIO_AUTH_TOKEN
avec vos informations d'identification obtenues à partir de la console. Vous devez avoir reçu un numéro de téléphone Twilio lors de votre inscription. Vous pouvez également acheter un nouveau numéro de téléphone pour ce tutoriel.
Appelez le fichier .env
pour définir les variables suivantes :
Notez que si vous utilisez Windows, la définition des variables d'environnement est légèrement différente. Consultez ce tutoriel pour obtenir des instructions détaillées.
Maintenant que le code et les informations d'identification sont prêts, essayons de faire fonctionner notre projet.
Test d'une diffusion de SMS
Lancez le serveur de développement Django :
Rendez-vous à l'adresse https://localhost:8000/broadcast dans votre navigateur Web pour démarrer l'envoi des messages. Votre navigateur devrait afficher ceci :
Après un moment, tous les numéros de téléphone répertoriés dans SMS_BROADCAST_TO_NUMBERS
recevront un SMS :
Parfait, le projet a fonctionné ! Découvrez maintenant ce que TwilioQuest vous réserve pour en savoir plus sur les possibilités de Python et Programmable SMS.
Projet Django de diffusion de SMS : conclusion
Nous venons de créer une application pour envoyer des SMS à plusieurs destinataires à l'aide de Python 3.8 et du framework Web Django.
Vous pouvez maintenant vous baser sur mon code pour développer votre application et stocker des numéros de téléphone dans une base de données avec l'ORM de Django, ou créer une interface utilisateur pour faciliter la personnalisation de vos messages.
Voici quelques autres tutoriels Python intéressants :
- Les mystères du temple pythonique dans TwilioQuest ;
- Créer son propre bot d'entraînement personnel avec Python, Zappa, AWS et Twilio SMS ;
- Comment envoyer des e-mails en Python avec SendGrid.
J'ai hâte de voir ce que vous allez construire !
Articles associés
Ressources connexes
Twilio Docs
Des API aux SDK en passant par les exemples d'applications
Documentation de référence sur l'API, SDK, bibliothèques d'assistance, démarrages rapides et didacticiels pour votre langage et votre plateforme.
Centre de ressources
Les derniers ebooks, rapports de l'industrie et webinaires
Apprenez des experts en engagement client pour améliorer votre propre communication.
Ahoy
Le hub de la communauté des développeurs de Twilio
Meilleures pratiques, exemples de code et inspiration pour créer des expériences de communication et d'engagement numérique.