Un programme de parrainage est un système qui récompense les clients ou les partenaires de l'entreprise en offrant des incitations ou des bonus pour l'apport de nouveaux participants.
D'un point de vue technique, un programme de parrainage comprend plusieurs composants clés :
- Un lien d'invitation — un identifiant unique qui permet aux utilisateurs ou clients d'inviter d'autres personnes à participer au programme. Le parrain peut partager ce lien via différents canaux (par exemple, cet article couvrira la génération de liens via un bot WhatsApp, mais les liens du programme de parrainage peuvent être partagés via n'importe quel messager de votre choix).
- Une base de données des participants, mise en œuvre via l'intégration de MaviBot et des fonctionnalités de Google Sheets, où les informations sur les utilisateurs invités et les parrains sont enregistrées.
- Un système de suivi des parrainages qui surveille les actions liées à l'apport de nouveaux participants via les liens de parrainage. Le système stocke les données sur tous les parrainages, vous permettant de vérifier si un parrainage donné existe déjà dans le système en tant qu'utilisateur précédemment invité.
Nous vous recommandons vivement de consulter les sections « Bases de la création de bots sur Mavibot.ai » lien et « Google Sheets » lien avant de créer le flux de votre chatbot.
Système de parrainage dans WhatsApp
La fonctionnalité du bot en cours de création comprendra des blocs composés des éléments suivants :
- génération d'un lien de parrainage (affilié) ; lien
- vérification si le nouvel utilisateur est déjà dans la base de données ; lien
- notification à l'utilisateur parrain concernant un nouveau filleul ; lien
- enregistrement des utilisateurs dans la base de données ; lien
- demande de la liste des filleuls. lien
Génération du lien de parrainage
Créons un bloc avec un lien intégré que le bot enverra à l'utilisateur sur la commande « lien ». Pour ce faire, créez un nouveau bloc dans le flux en utilisant l'une des deux méthodes suivantes :
- Double-cliquez sur une zone vide du canevas du constructeur :

- En utilisant le bouton « Enregistrer » en bas de l'écran et en sélectionnant le type de bloc :

Ensuite, dans la condition du bloc, saisissez le mot « Lien » et définissez le type de correspondance sur « Ignorer les fautes de frappe et les inexactitudes » (cela est utile en cas de fautes de frappe de l'utilisateur ou d'autres erreurs de message) :

Pour identifier qui a parrainé l'utilisateur, le bot crée un lien en utilisant le modèle suivant : https://wa.me/(votre numéro de téléphone lié au bot)text=Vous%20avez%20%C3%A9t%C3%A9%20recommand%C3%A9%20par%20#{phone}%20😌Bonjour

Examinons de plus près le lien modèle : https://wa.me/(votre numéro de téléphone lié au bot)?text=Vous%20avez%20%C3%A9t%C3%A9%20recommand%C3%A9%20par%20#{phone}%20😌Bonjour, où :
- Remplacez les parenthèses « (votre numéro de téléphone lié au bot) » par le numéro de téléphone correspondant ;
- #{phone} est automatiquement remplacé par le numéro de téléphone de l'utilisateur qui a demandé son lien partenaire.
Nous envoyons le lien généré non pas comme texte de bloc, mais comme pièce jointe — un lien cliquable avec une notification (voir Fig. 2 et Fig. 3) :
- choisissez d'insérer une pièce jointe
- sélectionnez le type — Lien, et collez-le dans le champ « URL de la pièce jointe » :

Dans ce cas, le lien apparaîtra visuellement raccourci :

Testons la fonctionnalité du lien en utilisant la fonctionnalité « Tester le bot ».

Voici le résultat : le lien dirige l'utilisateur vers le chat du messager approprié avec votre numéro de téléphone :

Ainsi, vous avez généré avec succès un lien d'invitation que les utilisateurs potentiels peuvent utiliser pour accéder au chatbot. De plus, en cliquant sur ce lien, l'utilisateur est redirigé vers la fenêtre de chat avec un message pré-rempli. (Voir Fig. 6)

Vérification de l'utilisateur
Utilisation de fonctions et d'expressions régulières dans un bloc
La commande de vérification et d'entrée dans la base de données ne fonctionnera que si le bot trouve un numéro de téléphone dans le message de l'utilisateur. Par conséquent, il est nécessaire de diviser la phrase reçue en parties.
Pour cela, la fonction splitter() est utilisée.
Fonction Splitter()
splitter(str, s, n) - divise une chaîne en parties. La fonction retourne un tableau d'éléments.
Paramètres :
! str ****- la chaîne d'origine
! s ****- le délimiteur de chaîne
n - le nombre maximum d'éléments
Exemple
Fonction de division de chaîne :

Ensuite, le bot doit vérifier si la séquence de chiffres dans la chaîne est effectivement un numéro de téléphone. Pour ce faire, nous utilisons les expressions régulières suivantes :
- Numéro de téléphone général :
^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$ -
Changer le numéro russe ! Numéro de téléphone russe uniquement :
^((\+7|7|8)+([0-9]){10})$

Pour plus d'informations sur le travail avec les expressions régulières, veuillez vous référer à l'article intitulé « Expressions régulières ». lien
Après que le bot a vérifié que la séquence de chiffres est effectivement un numéro de téléphone, enregistrez-le à partir du message en tant que variable (par exemple, #{reff}).
Vérification du numéro de téléphone de l'utilisateur en tant que filleul dans la base de données
Il est maintenant nécessaire de vérifier si le numéro de téléphone de l'utilisateur qui a suivi le lien est déjà un filleul (précédemment invité par quelqu'un et enregistré dans notre base de données). Pour ce faire, créez un bloc dans le flux avec une fonction de recherche par colonne.
Utilisez la fonction de recherche par colonne en cliquant sur « Requête API » dans le bloc, où vous devez définir les valeurs de paramètres suivantes :

! URL de la fonction : https://store.salebot.pro/function/findcell lien
! Paramètres de la requête JSON :
{ "id": "votre_id_de_tableau", "find": "texte_à_rechercher", "col": numéro_de_colonne_où_rechercher, "return": numéro_de_colonne_à_retourner, "creds_path": "chemin_vers_votre_fichier_d_authentification" }
Paramètres de réponse :
"status": "1" — valeur trouvée
"status": "0" — valeur non trouvée
"data" — la valeur trouvée
"cell_number" — l'emplacement de la cellule trouvée
Recherche par colonne et affichage du texte de toute la ligne
Le paramètre return doit être défini sur 0.
&#xNAN;{ "id": "votre_id_de_tableau", "find": "texte_à_rechercher", "col": 2, "return": 0 }
Réponse : {"status":"1","data":{"0":"\u0441\u043e\u043b\u043d\u0446\u0435","1":"\u0440\u0430\u0441\u0441\u0432\u0435\u0442","2":"\u043a\u0440\u044b\u0448\u0430","3":"","4":"\u043d\u0435\u0431\u043e"},"cell_number":{"row":4,"col":1, "col_letter":"A"}}
Analyse de la réponse :
data — réponse
data|0 — Cellule 1
data|1 — Cellule 2
data|2 — Cellule 3
data|3 — Cellule 4
cell_number|row — ligne
cell_number|col — colonne
Pour en savoir plus sur les fonctions disponibles pour travailler avec les tableaux, référez-vous à l'article intitulé « Google Sheets ». lien
Bloc de notification
Pour notifier l'utilisateur qui a partagé le lien de parrainage qu'un nouveau client l'a suivi avec succès, nous allons créer un bloc dédié. Pour l'envoi d'une notification concernant la création d'un nouveau filleul, utilisez les paramètres de requête suivants (type : POST - JSON) :

Les requêtes sont effectuées en utilisant la méthode POST vers l'URL : https://chatter.salebot.pro/api/{api_key}/{action} Où :
-
api_keyest la clé d'accès API de votre projet, qui peut être obtenue dans les paramètres du projet (voir Fig. 11).

Vous pouvez récupérer la clé d'accès en utilisant la variable #{api_key}, qui stocke le jeton d'accès actuellement généré. N'oubliez pas de générer le jeton avant de l'utiliser.
! URL de la requête : https://chatter.salebot.pro/api/#{api_key}/whatsapp_message lien

Vous pouvez trouver plus de détails sur les fonctions de requête API ici. lien
Ajout des utilisateurs invités et parrains à la base de données
Pour ce faire, nous utiliserons une entrée ligne par ligne dans des colonnes spécifiques, ce qui est réalisé à l'aide de la fonction mapping.
Le tableau doit avoir un en-tête rempli (au moins une cellule dans la première ligne).
! URL de la fonction https://store.salebot.pro/function/gsheets lien
! Paramètres de la requête JSON :
{ "id": "votre_id_de_tableau", "mapping": { "a": "#{variable}", "b": "#{autre_variable}", "d": "texte brut" } }
Si vous souhaitez écrire des lignes sur une feuille autre que la première, ajoutez le paramètre list_name à la requête :
{ "id": "votre_id_de_tableau", "mapping": { "a": "texte brut", "b": "#{variable}" }, "list_name": "NomDeLaFeuille" }
Paramètres :
- id — identifiant du tableau*
- a, b, c, d — noms des colonnes
- list_name — le nom de votre feuille (par exemple, « Feuille2 »)
*Assurez-vous de le remplacer par l'ID réel de votre tableau.
Exemple de réponse : {"number_row":8}
Si la requête s'exécute avec succès, la réponse inclura le numéro de ligne, que vous pouvez enregistrer et utiliser pour d'autres opérations.
Affichage de la liste des filleuls
Ajoutons une commande supplémentaire au bot qui permet aux utilisateurs de voir leur liste de filleuls.
Pour trouver toutes les valeurs spécifiées dans une colonne, utilisez la fonction findcell avec le paramètre "find_all". Cela localisera toutes les occurrences de la valeur "find_all" dans la colonne "col" spécifiée et retournera une liste de valeurs uniques de la colonne "return" sous forme de chaîne.
! URL de la fonction : https://store.salebot.pro/function/findcell lien
! Paramètres de la requête JSON :
{ "id": "table_id", "find_all": "valeur_de_recherche", "list_name": "nom_de_la_feuille", "col": "numéro_de_colonne_où_rechercher", "return": "numéro_de_colonne_dont_retourner_les_valeurs", "find": "!" }

Dans les valeurs enregistrées, spécifiez :
list → Liste
quantity → Quantité
Pour l'utilisateur, affichez le message :
"Vous avez parrainé #{spisok}, votre total de filleuls : #{quantity}"
Dans d'autres messageries, la mise en œuvre d'un tel système de parrainage est encore plus simple car les données du parrain sont transmises comme paramètre caché lors du passage du lien, donc le nouvel utilisateur n'a pas besoin d'envoyer un message comme « J'ai été invité par ce numéro. »


