# API Facebook

### Что такое постоянное меню

Постоянное меню позволяет вам создать и отправить меню основных функций вашего бизнеса, таких как часы работы, адреса магазинов и продукты. Оно всегда будет видно во время разговора человека с вашей компанией в Messenger.

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

#### Поддерживаемые кнопки:

Постоянное меню состоит из набора кнопок. В постоянном меню поддерживаются следующие типы кнопок:

● URL-кнопки (web\_url)\
● Кнопки обратного вызова (postback)

### Как добавить постоянное меню для конкретной страницы

**response = fb\_set\_persistent\_menu("group\_id", buttons)**&#x433;де:\
**group\_id** - ID бота Facebook, (можно найти в **"Channel"** меню MaviBot)\
**buttons** - словарь, содержащий кнопки

**Пример структуры словаря кнопок**:\
buttons = {"default": \[\["postback", "Button 1", "callback\_text 1"], \["postback", "Button 2", "callback\_text 2"], \["web\_url", "Site link", "<https://mavibot.ai/"]]}>

**по умолчанию** - обязательный ключ, который определяет массив кнопок, отображаемых в меню по умолчанию, независимо от локализации пользователя.\
Значение должно быть массивом кнопок. Каждая кнопка описывается как отдельный массив в следующем формате:\
\["button\_type", "Текст кнопки", "Текст callback, отправляемый боту"]

**Типы кнопок и их описание:**\
\&#xNAN;*- кнопка обратного вызова:*\
\["postback", "Текст кнопки", "Текст обратного вызова, отправляемый боту"]\
\&#xNAN;*- URL-кнопка:*\
\["web\_url", "Текст ссылки", "<https://example.com>"]

### Как настроить меню в зависимости от локализации пользователя

Вы можете настроить кнопки для разных регионов, добавив в словарь кнопок дополнительные ключи, соответствующие конкретным локалям.

Например, чтобы добавить кнопки для английской локали:

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" %}
Примечание: в этом случае ключ представляет локаль, для которой будут отображаться кнопки.
{% endhint %}

**Поддерживаемые локали**:\
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

### Как добавить постоянное меню для конкретного пользователя

Чтобы сделать это, установите третий параметр функции fb\_set\_persistent\_menu в 1, вот так: response = fb\_set\_persistent\_menu('group\_id', buttons, 1)

Это меню будет доступно пользователю, для которого была вызвана функция.

{% hint style="info" %} <mark style="color:красный;">**ПРИМЕЧАНИЕ**</mark> . **Обновление** постоянного меню **уровня пользователя** вступает в силу в реальном времени.\
Однако обновление постоянного меню уровня страницы может занять до 24 часов.

Настройки уровня пользователя <mark style="color:красный;">ограничены</mark> частотой 10 вызовов на пользователя каждые 10 минут.
{% endhint %}

### Как отключить все коммуникации, кроме постоянного меню

Чтобы постоянное меню стало единственным способом, которым пользователь может взаимодействовать с вашим Messenger-ботом, нужно отключить composer.

#### Зачем это делать?

Это полезно, когда ваш бот предназначен для определённой цели или заранее заданного набора опций.

#### Как это сделать?

Чтобы отключить composer, передайте 1 в качестве четвёртого параметра функции:

чтобы отключить composer на уровне страницы (для всех пользователей):\
**response = fb\_set\_persistent\_menu('group\_id', buttons, '', 1)**\
чтобы отключить composer для пользователя, для которого вызывается функция:\
**response = fb\_set\_persistent\_menu('group\_id', buttons, 1, 1)**\
где:\
**group\_id** - ID бота Facebook, (можно найти в **"Channel"** меню MaviBot)\
**buttons** - словарь, содержащий кнопки

При успешном выполнении функция возвращает:\
{"result":"success"}

В противном случае она возвращает описание ошибки.\
'Error parse buttons data' - ошибка в словаре кнопок\
{"error":{"message":"(#100) param persistent\_menu\[0]\[call\_to\_actions] must be non-empty.","type":"OAuthException","code":100,"fbtrace\_id":"AJtVczu7TEJJxbMfnO"}}

#### ПРИМЕРЫ:

**Добавление меню для всех пользователей:**

```
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)
```

**Добавление меню для всех пользователей и сделав это меню единственным способом общения для всех:**

```
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)
```

**Добавление меню для пользователя, который вошёл в блок, вызывающий функцию:**

```
buttons = {"default": [["postback", "Кнопка 1", "callback_text 1"], ["postback", "Кнопка 2", "callback_text 2"], ["web_url", "Ссылка на сайт", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, 1)
```

**Добавление меню для пользователя, который вошёл в блок, вызывающий функцию, и сделать это меню единственным способом общения для всех пользователей:**

```
buttons = {"default": [["postback", "Кнопка 1", "callback_text 1"], ["postback", "Кнопка 2", "callback_text 2"], ["web_url", "Ссылка на сайт", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, 1, 1)
```

### Удалить постоянное меню на уровне страницы (для всех пользователей):

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

При успешном выполнении функция возвращает:\
{"result":"success"}

В противном случае она возвращает описание ошибки.\
'Bot not found'

### Удалить постоянное меню на уровне пользователя:

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

При успешном выполнении функция возвращает:\
{"result":"success"}

В противном случае она возвращает описание ошибки.

**"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/ru/chatbot/messendzhery/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.
