# API do Facebook

### O que é um menu persistente

Um menu persistente permite criar e enviar um menu com as principais funções da sua empresa, como horário de funcionamento, locais das lojas e produtos. Ele ficará sempre visível durante a conversa de uma pessoa com sua empresa no Messenger.

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

#### Botões suportados:

O menu persistente consiste em um conjunto de botões. Os seguintes tipos de botões são suportados no menu persistente:

● Botões de URL (web\_url)\
● Botões de callback (postback)

### Como adicionar um menu persistente para uma página específica

**response = fb\_set\_persistent\_menu("group\_id", buttons)**, em que:\
**group\_id** - ID do bot do Facebook, (pode ser encontrado no **"Channel"** menu MaviBot)\
**buttons** - um dicionário contendo botões

**Exemplo de como estruturar o dicionário de botões**:\
buttons = {"default": \[\["postback", "Botão 1", "callback\_text 1"], \["postback", "Botão 2", "callback\_text 2"], \["web\_url", "Link do site", "<https://mavibot.ai/"]]}>

**padrão** - uma chave obrigatória que define o array de botões a serem exibidos no menu por padrão, независимо da localização do usuário.\
O valor deve ser um array de botões. Cada botão é descrito como um array separado no seguinte formato:\
\["button\_type", "Texto exibido do botão", "Texto de callback enviado ao bot"]

**Tipos de botões e sua descrição:**\
\&#xNAN;*- botão de callback:*\
\["postback", "Texto exibido no botão", "Texto de callback enviado ao bot"]\
\&#xNAN;*- botão de URL:*\
\["web\_url", "Texto do link", "<https://example.com>"]

### Como configurar o menu com base na localização do usuário

Você pode definir botões para diferentes regiões adicionando chaves extras ao dicionário de botões correspondentes a locais específicos.

Por exemplo, para adicionar botões para a localidade em inglês:

buttons = {"default": \[\["postback", "Botão 1", "callback\_text 1"], \["postback", "Botão 2", "callback\_text 2"], \["web\_url", "Link do site", "<https://mavibot.ai/>"]], **"en\_EN"**: \[\["postback", "Botão", "callback\_text 1"], \["postback", "Botão 2", "callback\_text 2"], \["web\_url", "Link", "<https://mavibot.ai/"]]}>

{% hint style="info" %}
Observação: Nesse caso, a chave representa a localidade para a qual os botões serão exibidos.
{% endhint %}

**Localidades suportadas**:\
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

### Como adicionar um menu persistente para um usuário específico

Para fazer isso, defina o terceiro parâmetro da função fb\_set\_persistent\_menu como 1, assim: response = fb\_set\_persistent\_menu('group\_id', buttons, 1)

Esse menu ficará disponível para o usuário para o qual a função foi chamada.

{% hint style="info" %} <mark style="color:vermelho;">**OBSERVAÇÃO**</mark> . **Atualizar** um menu persistente **de nível de usuário** entra em vigor em tempo real.\
No entanto, a atualização de um menu persistente de nível de página pode levar até 24 horas.

As configurações de nível de usuário <mark style="color:vermelho;">são limitadas</mark> a uma taxa de 10 chamadas por usuário a cada 10 minutos.
{% endhint %}

### Como desativar todas as comunicações, exceto o menu persistente

Para fazer do menu persistente a única forma de um usuário interagir com seu bot do Messenger, você precisa desativar o compositor.

#### Por que você faria isso?

Isso é útil quando o seu bot foi projetado para um propósito específico ou um conjunto predefinido de opções.

#### Como fazer isso?

Para desativar o compositor, passe 1 como o quarto parâmetro na função:

para desativar o compositor no nível da página (para todos os usuários):\
**response = fb\_set\_persistent\_menu('group\_id', buttons, '', 1)**\
para desativar o compositor para o usuário para o qual a função é chamada:\
**response = fb\_set\_persistent\_menu('group\_id', buttons, 1, 1)**\
onde:\
**group\_id** - ID do bot do Facebook, (pode ser encontrado no **"Channel"** menu MaviBot)\
**buttons** - um dicionário contendo botões

Se tiver sucesso, a função retorna:\
{"result":"success"}

Caso contrário, ela retorna uma descrição do erro.\
'Error parse buttons data' - erro no dicionário de botões\
{"error":{"message":"(#100) param persistent\_menu\[0]\[call\_to\_actions] must be non-empty.","type":"OAuthException","code":100,"fbtrace\_id":"AJtVczu7TEJJxbMfnO"}}

#### EXEMPLOS:

**Adicionando um menu para todos os usuários:**

```
buttons = {"default": [["postback", "Botão 1", "callback_text 1"], ["postback", "Botão 2", "callback_text 2"], ["web_url", "Link do site", "https://mavibot.ai/"]], "en_EN": [["postback", "Botão", "callback_text 1"], ["postback", "Botão 2", "callback_text 2"], ["web_url", "Link", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons)
```

**Adicionando um menu para todos os usuários e tornando esse menu o único método de comunicação para todos:**

```
buttons = {"default": [["postback", "Botão 1", "callback_text 1"], ["postback", "Botão 2", "callback_text 2"], ["web_url", "Link do site", "https://mavibot.ai/"]], "en_EN": [["postback", "Botão", "callback_text 1"], ["postback", "Botão 2", "callback_text 2"], ["web_url", "Link", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, '', 1)
```

**Adicionando um menu para o usuário que entrou no bloco que chama a função:**

```
buttons = {"default": [["postback", "Botão 1", "callback_text 1"], ["postback", "Botão 2", "callback_text 2"], ["web_url", "Link do site", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, 1)
```

**Adicionando um menu para o usuário que entrou no bloco que chama a função, e tornando esse menu o único método de comunicação para todos os usuários:**

```
buttons = {"default": [["postback", "Botão 1", "callback_text 1"], ["postback", "Botão 2", "callback_text 2"], ["web_url", "Link do site", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, 1, 1)
```

### Excluir o menu persistente no nível da página (para todos os usuários):

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

Se tiver sucesso, a função retorna:\
{"result":"success"}

Caso contrário, ele retorna uma descrição do erro.\
'Bot not found'

### Excluir o menu persistente no nível do usuário:

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

Se tiver sucesso, a função retorna:\
{"result":"success"}

Caso contrário, ele retorna uma descrição do erro.

**"Bot não encontrado"**


---

# 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/pt/chatbot/mensageiros/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.
