# API Facebook

### Qu’est-ce qu’un menu persistant

Un menu persistant vous permet de créer et d’envoyer un menu des principales fonctions de votre entreprise, telles que les horaires d’ouverture, les emplacements des magasins et les produits. Il sera toujours visible pendant la conversation d’une personne avec votre entreprise dans Messenger.

<figure><img src="/files/d15ee74275eb99e68076d9f7aeadeca840040cc8" alt="" width="230"><figcaption></figcaption></figure>

#### Boutons pris en charge :

Le menu persistant se compose d’un ensemble de boutons. Les types de boutons suivants sont pris en charge dans le menu persistant :

● Boutons URL (web\_url)\
● Boutons de rappel (postback)

### Comment ajouter un menu persistant pour une page spécifique

**response = fb\_set\_persistent\_menu("group\_id", buttons)**, où :\
**group\_id** - ID du bot Facebook, (peut être trouvé dans le **"Channel"** menu MaviBot)\
**buttons** - un dictionnaire contenant des boutons

**Exemple de structure du dictionnaire de boutons** :\
buttons = {"default": \[\["postback", "Button 1", "callback\_text 1"], \["postback", "Button 2", "callback\_text 2"], \["web\_url", "Site link", "<https://mavibot.ai/"]]}>

**default** - une clé obligatoire qui définit le tableau de boutons à afficher dans le menu par défaut, indépendamment de la localisation de l'utilisateur.\
La valeur doit être un tableau de boutons. Chaque bouton est décrit comme un tableau séparé dans le format suivant :\
\["button\_type", "Texte d'affichage du bouton", "Texte de rappel envoyé au bot"]

**Types de boutons et leur description :**\
\&#xNAN;*- bouton de rappel :*\
\["postback", "Texte affiché du bouton", "Texte de rappel envoyé au bot"]\
\&#xNAN;*- bouton URL :*\
\["web\_url", "Texte affiché du lien", "<https://example.com>"]

### Comment configurer le menu en fonction de la localisation de l’utilisateur

Vous pouvez configurer des boutons pour différentes régions en ajoutant des clés supplémentaires au dictionnaire de boutons correspondant à des paramètres régionaux spécifiques.

Par exemple, pour ajouter des boutons pour la locale anglaise :

buttons = {"default": \[\["postback", "Button 1", "callback\_text 1"], \["postback", "Button 2", "callback\_text 2"], \["web\_url", "Site link", "<https://mavibot.ai/>"]], **"en\_EN"**: \[\["postback", "Button", "callback\_text 1"], \["postback", "Button 2", "callback\_text 2"], \["web\_url", "Link", "<https://mavibot.ai/"]]}>

{% hint style="info" %}
Remarque : dans ce cas, la clé représente la locale pour laquelle les boutons seront affichés.
{% endhint %}

**Locales prises en charge**:\
af\_ZA, ar\_AR, as\_IN, az\_AZ, be\_BY, bg\_BG, bn\_IN, br\_FR, bs\_BA, ca\_ES, cb\_IQ, co\_FR, cs\_CZ, cx\_PH, cy\_GB, da\_DK, de\_DE, el\_GR, en\_GB, en\_UD, en\_US, es\_ES, es\_LA, et\_EE, eu\_ES, fa\_IR, ff\_NG, fi\_FI, fo\_FO, fr\_CA, fr\_FR, fy\_NL, ga\_IE, gl\_ES, gn\_PY, gu\_IN, ha\_NG, he\_IL, hi\_IN, hr\_HR, hu\_HU, hy\_AM, id\_ID, is\_IS, it\_IT, ja\_JP, ja\_KS, jv\_ID, ka\_GE, kk\_KZ, km\_KH, kn\_IN, ko\_KR, ku\_TR, lt\_LT, lv\_LV, mg\_MG, mk\_MK, ml\_IN, mn\_MN, mr\_IN, ms\_MY, mt\_MT, my\_MM, nb\_NO, ne\_NP, nl\_BE, nl\_NL, nn\_NO, or\_IN, pa\_IN, pl\_PL, ps\_AF, pt\_BR, pt\_PT, qz\_MM, ro\_RO, ru\_RU, rw\_RW, sc\_IT, si\_LK, sk\_SK, sl\_SI, so\_SO, sq\_AL, sr\_RS, sv\_SE, sw\_KE, sz\_PL, ta\_IN, te\_IN, tg\_TJ, th\_TH, tl\_PH, tr\_TR, tz\_MA, uk\_UA, ur\_PK, uz\_UZ, vi\_VN, zh\_CN, zh\_HK, zh\_TW

### Comment ajouter un menu persistant pour un utilisateur spécifique

Pour ce faire, définissez le troisième paramètre de la fonction fb\_set\_persistent\_menu sur 1, comme ceci : response = fb\_set\_persistent\_menu('group\_id', buttons, 1)

Ce menu sera disponible pour l'utilisateur pour lequel la fonction a été appelée.

{% hint style="info" %} <mark style="color:red;">**REMARQUE**</mark> . **La mise à jour** d'un menu persistant **au niveau de l'utilisateur** prend effet en temps réel.\
Cependant, la mise à jour d'un menu persistant au niveau de la page peut prendre jusqu'à 24 heures.

Les paramètres au niveau de l'utilisateur <mark style="color:red;">sont limités</mark> à un rythme de 10 appels par utilisateur toutes les 10 minutes.
{% endhint %}

### Comment désactiver toutes les communications sauf le menu persistant

Pour faire du menu persistant le seul moyen pour un utilisateur d'interagir avec votre bot Messenger, vous devez désactiver le compositeur.

#### Pourquoi feriez-vous cela ?

C'est utile lorsque votre bot est conçu pour un objectif spécifique ou un ensemble d'options prédéfini.

#### Comment faire cela ?

Pour désactiver le compositeur, passez 1 comme quatrième paramètre de la fonction :

pour désactiver le compositeur au niveau de la page (pour tous les utilisateurs) :\
**response = fb\_set\_persistent\_menu('group\_id', buttons, '', 1)**\
pour désactiver le compositeur pour l'utilisateur pour lequel la fonction est appelée :\
**response = fb\_set\_persistent\_menu('group\_id', buttons, 1, 1)**\
où :\
**group\_id** - ID du bot Facebook, (peut être trouvé dans le **"Channel"** menu MaviBot)\
**buttons** - un dictionnaire contenant des boutons

En cas de succès, la fonction renvoie :\
{"result":"success"}

Sinon, elle renvoie une description de l'erreur.\
'Error parse buttons data' - erreur dans le dictionnaire des boutons\
{"error":{"message":"(#100) param persistent\_menu\[0]\[call\_to\_actions] must be non-empty.","type":"OAuthException","code":100,"fbtrace\_id":"AJtVczu7TEJJxbMfnO"}}

#### EXEMPLES :

**Ajout d'un menu pour tous les utilisateurs :**

```
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://mavibot.ai/"]], "en_EN": [["postback", "Button", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Link", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons)
```

**Ajout d'un menu pour tous les utilisateurs et définition de ce menu comme unique méthode de communication pour כולם :**

```
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://mavibot.ai/"]], "en_EN": [["postback", "Button", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Link", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, '', 1)
```

**Ajout d'un menu pour l'utilisateur qui a entré le bloc qui appelle la fonction :**

```
buttons = {"default": [["postback", "Bouton 1", "callback_text 1"], ["postback", "Bouton 2", "callback_text 2"], ["web_url", "Lien du site", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, 1)
```

**Ajout d'un menu pour l'utilisateur qui a entré le bloc qui appelle la fonction, et définition de ce menu comme unique méthode de communication pour tous les utilisateurs :**

```
buttons = {"default": [["postback", "Bouton 1", "callback_text 1"], ["postback", "Bouton 2", "callback_text 2"], ["web_url", "Lien du site", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, 1, 1)
```

### Supprimer le menu persistant au niveau de la page (pour tous les utilisateurs) :

**response = fb\_delete\_persistent\_menu('group\_id')**

En cas de succès, la fonction renvoie :\
{"result":"success"}

Sinon, elle renvoie une description de l'erreur.\
'Bot not found'

### Supprimer le menu persistant au niveau de l'utilisateur :

**response = fb\_delete\_persistent\_menu('group\_id', 1)**

En cas de succès, la fonction renvoie :\
{"result":"success"}

Sinon, elle renvoie une description de l'erreur.

**"Bot not found"**


---

# 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/chatbot/messageries/facebook-messenger/api.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.
