Construire des bots AI WhatsApp avec Pure Python
Ce guide vous guidera à travers le processus de création d'un bot WhatsApp en utilisant l'API Cloud Meta (anciennement Facebook) avec Pure Python et Flask en particulier. Nous intégrerons également les événements WebHook pour recevoir des messages en temps réel et utiliserons OpenAI pour générer des réponses en IA. Pour plus d'informations sur la structure de l'application Flask, vous pouvez vous référer à cette documentation.
Condition préalable
- Un compte de développeur Meta - si vous n'en avez pas, vous pouvez créer un compte de développeur Meta ici.
- Une application commerciale - si vous n'en avez pas, vous pouvez apprendre à créer une application commerciale ici. Si vous ne voyez pas d'option pour créer une application commerciale, sélectionnez autre > Suivant > Business .
- Familiarité avec Python pour suivre le tutoriel.
Table des matières
- Construire des bots AI WhatsApp avec Pure Python
- Condition préalable
- Table des matières
- Commencer
- Étape 1: Sélectionnez les numéros de téléphone
- Étape 2: Envoyez des messages avec l'API
- Étape 3: Configurer les webhooks pour recevoir des messages
- Démarrez votre application
- Lancez ngrok
- Intégrer WhatsApp
- Tester l'intégration
- Étape 4: Comprendre la sécurité Webhook
- Demandes de vérification
- Valider les demandes de vérification
- Valider les charges utiles
- Étape 5: Renseignez-vous sur l'API et créez votre application
- Étape 6: Intégrez l'IA dans l'application
- Étape 7: Ajouter un numéro de téléphone
- Datalumina
- Tutoriels
Commencer
- Aperçu et configuration : commencez votre voyage ici.
- Localisez vos robots : vos robots peuvent être trouvés ici.
- Documentation de l'API WhatsApp : Familiarisez-vous avec la documentation officielle.
- Guide utile : voici un guide basé sur Python pour l'envoi de messages.
- API Docs pour envoyer des messages : consultez cette documentation.
Étape 1: Sélectionnez les numéros de téléphone
- Assurez-vous que WhatsApp est ajouté à votre application.
- Vous commencez par un numéro de test que vous pouvez utiliser pour envoyer des messages à jusqu'à 5 numéros.
- Accédez à la configuration de l'API et localisez le numéro de test à partir duquel vous enverrez des messages.
- Ici, vous pouvez également ajouter des nombres pour envoyer des messages. Entrez votre propre numéro WhatsApp .
- Vous recevrez un code sur votre téléphone via WhatsApp pour vérifier votre numéro.
Étape 2: Envoyez des messages avec l'API
- Obtenez un jeton d'accès 24h / 24 dans la section API Access.
- Il affichera un exemple de la façon d'envoyer des messages à l'aide d'une commande
curl qui peut être envoyé à partir du terminal ou avec un outil comme Postman. - Converonnons cela en une fonction Python avec la bibliothèque de requêtes.
- Créez un fichier
.env basé sur example.env et mettez à jour les variables requises. Exemple vidéo ici. - Vous recevrez un message "Hello World" (attendez-vous à un délai de 60-120 secondes pour le message).
Créer un accès qui fonctionne plus longtemps que 24 heures
- Créez un utilisateur système au niveau du compte Meta Business.
- Sur la page des utilisateurs du système, configurez les actifs de votre utilisateur système, en attribuant votre application WhatsApp avec un contrôle complet. N'oubliez pas de cliquer sur le bouton Enregistrer les modifications.
- Voir l'étape 1 ici
- Voir l'étape 2 ici
- Maintenant, cliquez sur
Generate new token et sélectionnez l'application, puis choisissez la durée du jeton d'accès valide. Vous pouvez choisir 60 jours ou ne jamais expirer. - Sélectionnez toutes les autorisations, car je rencontrais des erreurs lorsque je n'ai sélectionné les WhatsApp que.
- Confirmer et copier le jeton d'accès.
Nous devons maintenant trouver les informations suivantes sur le tableau de bord de l'application :
- App_id : "<your-whatsapp-business-app_id>" (trouvé sur l'application de tableau de bord)
- App_secret : "<your-whatsapp-business -pp_secret>" (trouvé sur l'application de tableau de bord)
- Destinataire_waid : "" (Il s'agit de votre numéro de téléphone ID WhatsApp. Assurez-vous qu'il est ajouté au compte comme indiqué dans l'exemple de message de test.)
- Version : "V18.0" (la dernière version de l'API Meta Graph)
- Access_token : "" (créé à l'étape précédente)
Vous ne pouvez envoyer un message de type de modèle que comme premier message à un utilisateur. C'est pourquoi vous devez d'abord envoyer une réponse avant de continuer. M'a pris 2 heures pour comprendre cela.
Étape 3: Configurer les webhooks pour recevoir des messages
Veuillez noter que c'est la partie la plus difficile de ce tutoriel.
Démarrez votre application
- Faites-vous une installation ou un environnement Python et installer les exigences:
pip install -r requirements.txt - Exécutez votre application Flask localement en exécutant Run.py
Lancez ngrok
Les étapes ci-dessous sont tirées de la documentation NGROK.
Vous avez besoin d'un domaine Ngrok statique car Meta valide votre domaine et certificat Ngrok!
Une fois que votre application fonctionne avec succès sur LocalHost, obtenons-le sur Internet en toute sécurité à l'aide de Ngrok!
- Si vous n'êtes pas encore un utilisateur NGROK, inscrivez-vous gratuitement à Ngrok.
- Téléchargez l'agent Ngrok.
- Accédez au tableau de bord NGROK, cliquez sur votre authtoken et copiez votre authtoken.
- Suivez les instructions pour authentifier votre agent Ngrok. Il vous suffit de le faire une seule fois.
- Dans le menu de gauche, développez Cloud Edge, puis cliquez sur les domaines.
- Sur la page des domaines, cliquez sur + Créer un domaine ou + nouveau domaine. (Ici, tout le monde peut commencer par un domaine libre)
- Démarrez Ngrok en exécutant la commande suivante dans un terminal sur votre bureau local:
ngrok http 8000 --domain your-domain.ngrok-free.app
- Ngrok affichera une URL où votre application locale est exposée à Internet (copiez cette URL pour une utilisation avec Meta).
Intégrer WhatsApp
Dans le tableau de bord Meta App, accédez à WhatsApp> Configuration, puis cliquez sur le bouton Modifier.
- Dans la fenêtre URL de rappel de l'édition WebHook, entrez l'URL fournie par l'agent NGROK pour exposer votre application à Internet dans le champ URL de rappel, avec / webhook à la fin (c'est-à-dire https://myexample.ngrok-free.app/webhook ).
- Entrez un jeton de vérification. Cette chaîne est configurée par vous lorsque vous créez votre point de terminaison WebHook. Vous pouvez choisir n'importe quelle chaîne que vous aimez. Assurez-vous de mettre à jour cela dans votre variable d'environnement
VERIFY_TOKEN . - Après avoir ajouté un webhook à WhatsApp, WhatsApp soumettra une demande de poste de validation à votre demande via NGROK. Confirmez que votre application LocalHost reçoit la demande de validation et les journaux
WEBHOOK_VERIFIED dans le terminal. - Retour à la page de configuration, cliquez sur Gérer.
- Sur la popup des champs WebHook, cliquez sur Abonnez-vous au champ Messages . Astuce: vous pouvez vous abonner à plusieurs champs.
- Si votre application FLASK et NGROK sont en cours d'exécution, vous pouvez cliquer sur "Tester" à côté des messages pour tester l'abonnement. Vous recevez un message de test en majuscules. Si tel est le cas, votre webhook est correctement configuré.
Tester l'intégration
Utilisez le numéro de téléphone associé à votre produit WhatsApp ou utilisez le numéro de test que vous avez copié auparavant.
- Ajoutez ce numéro à vos contacts d'application WhatsApp, puis envoyez un message à ce numéro.
- Confirmez que votre application localhost reçoit un message et enregistre les en-têtes et le corps dans le terminal.
- Testez si le bot vous répond en majuscule.
- Vous avez maintenant intégré le bot avec succès! ?
- Maintenant, il est temps de construire en un temps cool avec ça.
Étape 4: Comprendre la sécurité Webhook
Vous trouverez ci-dessous quelques informations des documents API Meta Webhooks sur la vérification et la sécurité. Il est déjà implémenté dans le code, mais vous pouvez le référencer pour mieux comprendre ce qui se passe dans Security.py
Demandes de vérification
Source
Chaque fois que vous configurez le produit WebHooks dans le tableau de bord de votre application, nous enverrons une demande GET à votre URL de point de terminaison. Les demandes de vérification incluent les paramètres de chaîne de requête suivants, annexés à la fin de votre URL de point de terminaison. Ils ressembleront à ceci:
GET https://www.your-clever-domain-name.com/webhook?
hub.mode=subscribe&
hub.challenge=1158201444&
hub.verify_token=meatyhamhock
Le Verify_token, meatyhamhock dans le cas de cet exemple, est une chaîne que vous pouvez choisir. Peu importe ce qu'il est tant que vous stockez dans la variable d'environnement VERIFY_TOKEN .
Valider les demandes de vérification
Source
Chaque fois que votre point de terminaison reçoit une demande de vérification, elle doit:
- Vérifiez que la valeur hub.verify_token correspond à la chaîne que vous définissez dans le champ de jeton Vérifier lorsque vous configurez le produit WebHooks dans votre tableau de bord de votre application (vous n'avez pas encore configuré cette chaîne de jeton).
- Répondez avec le hub.
Valider les charges utiles
Source
WhatsApp signe toutes les charges utiles de notification de l'événement avec une signature SHA256 et incluez la signature de l'en-tête X-Hub-Signature-256 de la demande, précédée de Sha256 =. Vous n'avez pas à valider la charge utile, mais vous devriez.
Pour valider la charge utile:
- Générez une signature SHA256 en utilisant la charge utile et le secret de l'application de votre application.
- Comparez votre signature à la signature dans l'en-tête X-Hub-Signature-256 (tout après Sha256 =). Si les signatures correspondent, la charge utile est authentique.
Étape 5: Renseignez-vous sur l'API et créez votre application
Passez en revue la documentation du développeur pour savoir comment créer votre application et commencer à envoyer des messages. Voir la documentation.
Étape 6: Intégrez l'IA dans l'application
Maintenant que nous avons une connexion de bout en bout, nous pouvons rendre le bot un peu plus intelligent que nous crier dessus dans le haut de cas. Tout ce que vous avez à faire est de trouver votre fonction generate_response() dans whatsapp_utils.py.
Si vous voulez qu'un exemple de coupe-cookie intégrez l'API OpenAI Assistans avec un outil de récupération, suivez ces étapes.
- Regardez cette vidéo: Openai Assistants Tutorial
- Créez votre propre assistant avec OpenAI et mettez à jour votre
OPENAI_API_KEY et OPENAI_ASSISTANT_ID dans les variables d'environnement. - Fournir à votre assistant des données et des instructions
- Mettez à jour OpenAI_SERVICE.PY vers votre cas d'utilisation.
- Import
generate_reponse dans whatsapp_utils.py - Mettre à jour
process_whatsapp_message() avec la nouvelle fonction generate_reponse() .
Étape 7: Ajouter un numéro de téléphone
Lorsque vous êtes prêt à utiliser votre application pour un cas d'utilisation de production, vous devez utiliser votre propre numéro de téléphone pour envoyer des messages à vos utilisateurs.
Pour commencer à envoyer des messages à n'importe quel numéro WhatsApp, ajoutez un numéro de téléphone. Pour gérer les informations de votre compte et le numéro de téléphone, consultez la page d'aperçu. et les documents WhatsApp.
Si vous souhaitez utiliser un numéro déjà utilisé dans le client WhatsApp ou l'application commerciale, vous devrez migrer pleinement ce numéro vers la plate-forme commerciale. Une fois le numéro migré, vous perdrez l'accès au client ou à l'application commerciale WhatsApp. Voir Migrer le numéro WhatsApp existant vers un compte commercial pour des informations.
Une fois que vous avez choisi votre numéro de téléphone, vous devez l'ajouter à votre compte commercial WhatsApp. Voir Ajouter un numéro de téléphone.
Lorsque vous traitez avec API Business WhatsApp et que vous souhaitez expérimenter sans affecter votre numéro personnel, vous avez quelques options:
- Achetez une nouvelle carte SIM
- Numéros de téléphone virtuels
- Téléphones à double carte
- Utilisez un autre appareil
- Services de numéros temporaires
- Appareils dédiés au développement
Recommandation : S'il s'agit d'un usage plus prolongé ou professionnel, l'utilisation d'un service de numéro de téléphone virtuel ou l'achat d'une nouvelle carte SIM pour un appareil dédié est conseillé. Pour les tests rapides, un nombre temporaire pourrait suffire, mais toujours prudent quant à la sécurité et à la confidentialité. N'oubliez pas qu'une fois qu'un nombre est associé à l'API d'entreprise WhatsApp, il ne peut pas être utilisé avec WhatsApp ordinaire sur un appareil, sauf si vous le désactivez à partir de l'API d'entreprise et le vénérifiez sur l'appareil.
Datalumina
Ce document vous est fourni par Datalumina. Nous aidons les analystes de données, les ingénieurs et les scientifiques à lancer et à mettre à l'échelle une entreprise indépendante réussie - 100 000 $ + / an, projets amusants, clients satisfaits. Si vous voulez en savoir plus sur ce que nous faisons, vous pouvez visiter notre site Web et vous abonner à notre newsletter. N'hésitez pas à partager ce document avec vos amis et collègues de données.
Tutoriels
Pour les tutoriels vidéo, visitez la chaîne YouTube: youtube.com/@daveebbelaar.