# Programme de parrainage

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 бонус pour l’arrivée de nouveaux participants.

D’un point de vue technique, un programme de parrainage comprend plusieurs composants clés :

1. Un **lien d’invitation**— un identifiant unique qui permet aux utilisateurs ou aux clients d’inviter d’autres personnes à participer au programme. L’invitant peut partager ce lien via différents canaux (par exemple, cet article expliquera comment générer des liens via un bot WhatsApp, mais les liens du programme de parrainage peuvent être partagés via n’importe quel messager de votre choix).
2. Un **base de données des participants**, mise en œuvre grâce à l’intégration de MaviBot et des fonctionnalités de Google Sheets, où sont enregistrées les informations sur l’utilisateur invité et sur l’utilisateur invitant.
3. Un **système de suivi des parrainages** qui surveille les actions liées à l’arrivée de nouveaux participants via des liens de parrainage. Le système stocke les données de tous les parrainages, ce qui vous permet de vérifier si un parrainage donné existe déjà dans le système en tant qu’utilisateur précédemment invité.

{% hint style="success" %}
Nous vous recommandons vivement de consulter les sections « Bases de la création de bots sur Mavibot.ai » <mark style="color:red;">**lien**</mark> et « Google Sheets » <mark style="color:red;">**lien**</mark> avant de créer le flux de votre chatbot.
{% endhint %}

## Système de parrainage dans WhatsApp

La fonctionnalité du bot créé comprendra des blocs composés des éléments suivants :

1. génération d’un lien de parrainage (affiliation) ; <mark style="color:red;">**lien**</mark>
2. vérification si le nouvel utilisateur est déjà dans la base de données ; <mark style="color:red;">**lien**</mark>
3. notification à l’utilisateur invitant qu’un nouveau parrainage a été effectué ; <mark style="color:red;">**lien**</mark>
4. enregistrement des utilisateurs dans la base de données ; <mark style="color:red;">**lien**</mark>
5. demande d’une liste de parrainages. <mark style="color:red;">**lien**</mark>

### Génération du lien de parrainage

Créons un bloc avec un lien intégré que le bot enverra à l’utilisateur via la commande « lien ». Pour ce faire, créez un nouveau bloc dans le flux à l’aide de l’une des deux méthodes suivantes :

1. Double-cliquez sur une zone vide dans le canevas du constructeur :

<figure><img src="/files/a2f7c67490bfbdabd704879d9b65a6cc1e4507ad" alt="" width="563"><figcaption><p>Comment créer un bloc par clic de souris</p></figcaption></figure>

2. En utilisant le **bouton « Enregistrer »** en bas de l’écran et en sélectionnant le type de bloc :

<figure><img src="/files/6a1c3bb71eca1f0b2f7e726c54efb9e4addab5a6" alt="" width="563"><figcaption><p>Comment créer un bloc avec un type sélectionné</p></figcaption></figure>

Après cela, dans la condition du bloc, saisissez le mot **« Lien »** et réglez le type de correspondance sur **« Ignorer les fautes de frappe et les imprécisions »** (c’est utile en cas de fautes de frappe de l’utilisateur ou d’autres erreurs de message) :

<figure><img src="/files/8e24c5aa75dc43a5d6fe9820ee380d48d9570380" alt="" width="310"><figcaption><p>Fig. 1</p></figcaption></figure>

Pour identifier qui a parrainé l’utilisateur, le bot crée un lien à l’aide du modèle suivant : [https://wa.me/(votre](https://wa.me/%28your) numéro de téléphone lié au bot)text=Vous%20avez%20été%20recommandé%20par%20#{phone}%20😌Bonjour

<figure><img src="/files/788feaa80d34ca1dfea8234526ebfdf3114c561f" alt=""><figcaption><p>Fig. 2 Comment insérer un lien dans un bloc de flux</p></figcaption></figure>

Examinons de plus près le lien modèle : [https://wa.me/(votre](https://wa.me/%28your) numéro de téléphone lié au bot)?text=Vous%20avez%20été%20recommandé%20par%20#{phone}%20😌Bonjour, où :

1. Remplacez les parenthèses « (votre numéro de téléphone lié au bot) » par le numéro correspondant ;
2. \#{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 du bloc, mais comme une pièce jointe — un lien cliquable avec une notification (voir Fig. 2 et Fig. 3) :

* choisissez d’insérer une pièce jointe
* &#x20;sélectionnez le type — Lien, et collez-le dans le champ « URL de la pièce jointe » :

<figure><img src="/files/108868e3673998cb144a69196f37735c82f2e338" alt="" width="323"><figcaption><p>Fig. 3. Pièce jointe -> type -> lien</p></figcaption></figure>

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

![Fig. 4. Vue dans WhatsApp](https://lh5.googleusercontent.com/vW_tS8GIDqDbN0PkdgQsa6xeeiBBfxuC4Qp8QuzXRz98yI4fphKEUIE22MiBcq4q_RvlQLlAEtlVzcL-hln5DbHaM-F1tuSBNp9y5zhvR5efRmjzDbcTlox5AUDvhnVorlBEdYsX)

Testons la fonctionnalité du lien à l’aide de la fonction **« Bot de test »** .

<figure><img src="/files/5d24679d529726baa34d9db4ba38a1407b2252d3" alt="" width="237"><figcaption><p>Fig. 5. Comment tester un bot</p></figcaption></figure>

Voici le résultat : le lien dirige l’utilisateur vers la conversation du messager appropriée avec votre numéro de téléphone :

<figure><img src="/files/3cca59177ed5a3b01337517a7ec8784d5219d603" alt="" width="563"><figcaption><p>Test de la fonctionnalité du lien</p></figcaption></figure>

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 discussion avec un message prérempli. (Voir Fig. 6)

![Fig. 6. Message rempli dans WhatsApp](https://lh5.googleusercontent.com/60e0Pcv5362t53lD5Y0evDiAAmeyCoL-eSg_1wXPsgFiKw-Nn0Zmb3WUwBE16lCBr84e56RB863VJd8GFW4kqZAsXMRzEEIFum_ThIdbr58IqV9_JP-kp3IVnfNZoAsJ7d_n4OI4)

### Vérification de l’utilisateur&#x20;

**Utilisation de fonctions et d’expressions régulières dans un bloc**

La commande de vérification et d’ajout à 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. Il est donc nécessaire de découper la phrase reçue en parties.

Pour cela, la fonction **splitter()** est utilisée.

{% tabs %}
{% tab title="Fonction splitter()" %}
**splitter(str, s, n)** - découpe une chaîne en parties. La fonction renvoie un tableau d’éléments. <br>

Paramètres :

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- la chaîne originale</mark>

<mark style="color:red;">**!**</mark> <mark style="color:red;">**s**</mark> <mark style="color:red;"></mark><mark style="color:red;">- le délimiteur de chaîne</mark>

**n** - le nombre maximal d’éléments
{% endtab %}

{% tab title="Exemple" %}
Fonction de découpage de chaîne :

<figure><img src="/files/5d2b5f466c4720594103f5f8af17e93532a9eb9c" alt=""><figcaption><p>Fig. 8. Découpage de la chaîne</p></figcaption></figure>
{% endtab %}
{% endtabs %}

Ensuite, le bot doit vérifier si la séquence de chiffres dans la chaîne est bien un numéro de téléphone. Pour cela, 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$`
* <mark style="color:red;">**Changer le numéro russe !**</mark> Numéro de téléphone russe uniquement : `^((\+7|7|8)+([0-9]){10})$`

<figure><img src="/files/8948caa561f82cf59ee9eb8d6c77793cd3e20b7d" alt="" width="500"><figcaption><p>Fig. 9. Expression régulière pour le numéro de téléphone</p></figcaption></figure>

{% hint style="info" %}
Pour en savoir plus sur l’utilisation des expressions régulières, veuillez consulter l’article intitulé « Expressions régulières ». <mark style="color:red;">**lien**</mark>
{% endhint %}

Après que le bot a vérifié que la séquence de chiffres est bien un numéro de téléphone, enregistrez-le depuis le message comme variable (par exemple, #{reff}).

**Vérification du numéro de téléphone de l’utilisateur en tant que parrainage 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 parrainage (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 de colonne.

Utilisez la fonction de recherche de colonne en cliquant sur **« Demande API »** dans le bloc, où vous devez définir les valeurs des paramètres suivants :

<figure><img src="/files/87c041e0092dac5d051d84e139a8c7b79cb7d726" alt="" width="337"><figcaption><p>Fig. 9</p></figcaption></figure>

<mark style="color:red;">**!**</mark>**&#x20;URL de la fonction**: <https://store.salebot.pro/function/findcell> <mark style="color:red;">**lien**</mark>

<mark style="color:red;">**!**</mark>**&#x20;JSON** **paramètres de requête :**&#x20;

**{ "id": "your\_table\_id", "find": "text\_to\_search", "col": column\_number\_to\_search\_in, "return": column\_number\_to\_return, "creds\_path": "path\_to\_your\_auth\_credentials\_file" }**

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

{% tabs %}
{% tab title="Recherche par colonne et affichage du texte de toute la ligne" %}
Le paramètre return doit être défini sur 0.\
\&#xNAN;**{ "id": "your\_table\_id", "find": "text\_to\_search", "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"}}\
Répartition de la réponse :&#x20;

data — réponse

data|0 — Cellule 1

data|1 — Cellule 2

data|2 — Cellule 3

data|3 — Cellule 4

cell\_number|row — ligne&#x20;

cell\_number|col — colonne&#x20;
{% endtab %}
{% endtabs %}

{% hint style="info" %}
Pour en savoir plus sur les fonctions disponibles pour travailler avec les tableaux, consultez l’article intitulé « Google Sheets ». <mark style="color:red;">**lien**</mark>
{% endhint %}

### Bloc de notification

Pour notifier l’utilisateur qui a partagé le lien de parrainage qu’un nouveau client l’a bien suivi, nous allons créer un bloc dédié. Pour envoyer une notification concernant la création d’un nouveau parrainage, utilisez les paramètres de requête suivants (type : **POST - JSON**):

<figure><img src="/files/c957c787393a5eb47f4c0a493669b986c8d4302e" alt="" width="357"><figcaption></figcaption></figure>

Les requêtes sont envoyées en utilisant la **POST** méthode vers l’URL : **`https://chatter.salebot.pro/api/{api_key}/{action}`** Où :

* **`api_key`** est la clé d’accès API de votre projet, que vous pouvez obtenir dans les paramètres du projet (voir Fig. 11).

<figure><img src="/files/4f1d3c63d516d3fc3c46eaa7d3aae30052b31915" alt="" width="563"><figcaption><p>Fig. 11.</p></figcaption></figure>

Vous pouvez récupérer la clé d’accès à l’aide de la variable **#{api\_key}**, qui stocke le jeton d’accès généré actuellement. **N’oubliez pas de générer le jeton avant de l’utiliser.**

<mark style="color:red;">**!**</mark>**&#x20;URL de la requête :** [**https://chatter.salebot.pro/api/#{api\_key}/whatsapp\_message**](https://chatter.salebot.pro/api/#{api_key}/whatsapp_message) <mark style="color:red;">**lien**</mark>

<figure><img src="/files/a930a5dd834024a3fa7ea31e27729bd2703e57a4" alt="" width="563"><figcaption><p>Fig. 12. Notification dans Whatsapp</p></figcaption></figure>

{% hint style="info" %}
Vous pouvez trouver plus de détails sur les fonctions de requêtes API ici. <mark style="color:red;">**lien**</mark>
{% endhint %}

### Ajout des utilisateurs invités et invitants à la base de données

Pour cela, nous utiliserons une saisie ligne par ligne dans des colonnes spécifiques, ce qui se fait à l’aide du **mapping** fonction.

{% hint style="danger" %}
Le tableau doit comporter un en-tête rempli (au moins une cellule dans la première ligne).
{% endhint %}

<mark style="color:red;">**!**</mark>**&#x20;URL de la fonction** <https://store.salebot.pro/function/gsheets> <mark style="color:red;">**lien**</mark>

<mark style="color:red;">**!**</mark>**&#x20;JSON** **paramètres de requête :**&#x20;

{ "id": "your\_table\_id", "mapping": { "a": "#{variable}", "b": "#{another\_variable}", "d": "plain text" } }

Si vous souhaitez écrire des lignes non pas sur la première feuille, ajoutez le paramètre **list\_name** à la requête :

{ "id": "your\_table\_id", "mapping": { "a": "plain text", "b": "#{variable}" }, "list\_name": "SheetName" }

Paramètres :

* **id** — identifiant du tableau\*
* **a, b, c, d** — noms des colonnes
* **list\_name** — le nom de votre feuille (par ex., « Sheet2 »)

\*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 parrainages

Ajoutons une commande supplémentaire au bot qui permet aux utilisateurs de voir leur liste de parrainages.

Pour trouver toutes les valeurs spécifiées dans une colonne, utilisez la **findcell** fonction avec le paramètre **"find\_all"**. Cela localisera toutes les occurrences de la **"find\_all"** valeur dans la **"col"** colonne spécifiée et renverra une liste de valeurs uniques de la **"return"** colonne sous forme de chaîne.

<mark style="color:red;">**!**</mark>**&#x20;URL de la fonction :**  <https://store.salebot.pro/function/findcell> <mark style="color:red;">**lien**</mark>

<mark style="color:red;">**!**</mark>**&#x20;Paramètres de la requête JSON :**&#x20;

{ "id": "table\_id", "find\_all": "search\_value", "list\_name": "sheet\_name", "col": "column\_number\_to\_search\_in", "return": "column\_number\_to\_return\_values\_from", "find": "!" }

<figure><img src="/files/9d73e33455c1547df3027025c52001ac4d3cacd0" alt="" width="449"><figcaption></figcaption></figure>

Dans les valeurs enregistrées, spécifiez :

list → Liste

quantity → Quantité

Pour l’utilisateur, affichez le message :*"Vous avez parrainé #{spisok}, votre total de parrainages : #{quantity}"*

Dans les autres messageries, la mise en œuvre d’un tel système de parrainage est encore plus simple car les données de l’invitant sont transmises en tant que paramètre caché lors de la transition du lien, de sorte que le nouvel utilisateur n’a pas besoin d’envoyer un message du type *« J’ai été invité par ce numéro. »*


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/fr/comment-faire.../programme-de-parrainage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
