# Botões e anexos

## Como trabalhar com botões

{% hint style="info" %}
O Instagram não oferece suporte ao envio de botões inline e de resposta ao mesmo tempo
{% endhint %}

### Teclado **(resposta)**

O Instagram suporta até 11 botões de resposta. Os botões só podem ser organizados em uma linha

Exemplo:

<div data-with-frame="true"><figure><img src="/files/8b13f3d917a09883c32501c528b68e07329142f2" alt="" width="563"><figcaption></figcaption></figure></div>

Resultado:

<div data-with-frame="true"><figure><img src="/files/debbead585292ee66242dfdf09ded8c68cedfd28" alt="" width="375"><figcaption></figcaption></figure></div>

### No texto (inline)

<div data-with-frame="true"><figure><img src="/files/944c96a3c3a5ef6afe7c3b8ba94f36090f83ef33" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/fdd860e98c1be02d0d958efc2118c090392073a9" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="danger" %}
O Instagram suporta no máximo 3 botões inline
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/4c08bbccf5601fa715d5537cb6a111850bf413ec" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/50baba29599e798e34f3addd8f5e958b51a9396c" alt="" width="563"><figcaption></figcaption></figure></div>

Os botões podem linkar para recursos de terceiros. Visualmente, esses botões são idênticos.

Para instruções sobre a configuração de botões, consulte o **Botões** seção.

## Como trabalhar com anexos

Você pode enviar anexos na mensagem. Para mais informações sobre quais anexos e como adicioná-los, veja a [Envio de anexos](/doc/pt/chatbot/builder/attachments/tab.md) seção na documentação.

<div data-with-frame="true"><figure><img src="/files/a56cd97298a0b17574a10b2368f7178d361d2fcd" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/7a8aa62b39843f9857879d42d08ec91ae33cfbb0" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Você pode enviar anexos para um bloco como arquivo ou fornecendo um link para o arquivo.

Arquivos de vídeo enviados não devem exceder 20 MB, enquanto arquivos de áudio e imagem não devem ser maiores que 5 MB.
{% endhint %}

**Requisitos para anexos:**

| Tipo de arquivo de mídia | Formato compatível | Tamanho máximo |
| ------------------------ | ------------------ | -------------- |
| Áudio                    | M4A                | 5 MB           |
| Imagem                   | JPEG, PNG          | 5 MB           |
| Vídeo                    | MP4                | 20 MB          |

{% hint style="warning" %}
É **NOT** é recomendado usar o formato MP4 para anexos de áudio. Além disso, **nenhum áudio será enviado no formato MP3**.
{% endhint %}

## Como criar um carrossel

O carrossel pode conter de 2 a 10 cartões (slides).

<div data-with-frame="true"><figure><img src="/files/5363a9d0e9d49907f6e1483afa7693a5dfeb377e" alt="" width="375"><figcaption></figcaption></figure></div>

Vamos usar um carrossel de 3 cartões como exemplo. Para criar os cartões, você precisa inserir o seguinte no **Calculadora** “Broadcast para clientes dos blocos”

p = \[{"title":"TÍTULO", "description": "DESCRIÇÃO DA IMAGEM 1", "image": "LINK PARA A IMAGEM 1", "buttons":\[{"text":"TEXTO DO BOTÃO 1"}]},{"title":"TÍTULO", "description": "DESCRIÇÃO DO کارت 2", "image": "LINK PARA A IMAGEM 2", "buttons":\[{"text":"TEXTO DO BOTÃO 2"}]}, {"title":"TÍTULO", "description": "DESCRIÇÃO DO CARTÃO 3", "image": " LINK PARA A IMAGEM 3", "buttons":\[{"text":"TEXTO DO BOTÃO 3"}]}]                                              &#x20;

r = send\_carousel(p, '')

<div data-with-frame="true"><figure><img src="/files/e86987029d9e6aaace5a44fe82d4b186991df0e7" alt=""><figcaption></figcaption></figure></div>

Copie o link:

<div data-with-frame="true"><figure><img src="/files/61e54b034d59d2c714ea5fed634a1a31dbd93b01" alt=""><figcaption></figcaption></figure></div>

O resultado:

<div data-with-frame="true"><figure><img src="/files/c764e0848b5f2dcdecf9d4b5faa2174a39e829a6" alt="" width="383"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Por favor, note: a expressão `r = send_carousel(p, '')` deve começar em uma nova linha na Calculadora.
{% endhint %}

Isso significa que você precisa atribuir uma matriz contendo o título, a descrição, a imagem e os botões a uma variável `p` (nomeie a variável de forma diferente, se quiser). Depois, use essa variável no `send_carousel(p, "")` .

Ele deixa `#{None}` no campo **"Response"** .

<div data-with-frame="true"><figure><img src="/files/7337fc3973dfbbe008137b7fb139b130ef741007" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Você pode adicionar links aos botões nos cartões do carrossel. Quando um usuário clicar no botão, ele será direcionado ao link.
{% endhint %}

Para adicionar um link a um botão no cartão, inclua-o na matriz:

p = \[{"title":"title", "description": "DESCRIÇÃO DO CARTÃO 1", "image": "LINK PARA A IMAGEM 1", "buttons":\[{"text":"TEXTO DO BOTÃO 1", "url":"LINK PARA O BOTÃO" }]}]

<div data-with-frame="true"><figure><img src="/files/d07586f3cb5d4b018ae4b63680dfe1f510930e41" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Outro parâmetro opcional, `payload`, foi adicionado aos botões dos cartões do carrossel. Ele não é exibido ao cliente, mas permite analisar a escolha do cliente.
{% endhint %}

Como os cartões do carrossel geralmente exigem botões com texto idêntico, um parâmetro adicional `payload` foi introduzido. Esse parâmetro não é visível para o cliente, mas permite analisar a seleção dele.

<div data-with-frame="true"><figure><img src="/files/0772b62f51cd1eb2a5e8beeca232c6a80e4a7717" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/d7f1d70df896fd8666653dd474828f3c9b9d09f8" alt=""><figcaption></figcaption></figure></div>

Preste atenção ao uso correto:

p = \[{"title":"title", "description": "DESCRIÇÃO DO CARTÃO 1", "image": " 1", "buttons":\[{"text":"TEXTO DO BOTÃO 1","payload":"1"}]},{"title":"title", "description": "DESCRIÇÃO DO CARTÃO 2", "image": "LINK PARA A IMAGEM 2", "buttons":\[{"text":"TEXTO DO BOTÃO 1","payload":"2"}]}, {"title":"title", "description": "DESCRIÇÃO DO CARTÃO 3", "image": "LINK PARA A IMAGEM 3", "buttons":\[{"text":"TEXTO DO BOTÃO 1"}]}]

O `payload` parâmetro pode ser omitido, como mostrado na figura acima.

## Como definir frases introdutórias

As frases introdutórias permitem que uma pessoa inicie um chat com uma empresa usando uma lista de solicitações frequentes. Você pode definir até quatro solicitações.

<div data-with-frame="true"><figure><img src="/files/6d8eccc1da3cdd1aac288ccb45ef9f70aed409ac" alt="" width="375"><figcaption></figcaption></figure></div>

Para configurar frases introdutórias, você precisa configurar um controle deslizante na conta do Instagram conectada, na seção “Canais”.

<div data-with-frame="true"><figure><img src="/files/bae077f7859b74f3cf663184f853ec3b2b214632" alt=""><figcaption></figcaption></figure></div>

Depois de clicar nesse controle deslizante, aparece uma janela pop-up onde você pode definir as frases introdutórias necessárias.

<div data-with-frame="true"><figure><img src="/files/44a044b545a055b5585a6dee2cc0ecfad5961efd" alt=""><figcaption></figcaption></figure></div>

Depois, siga estes passos:

1. Configure respostas para frases específicas no seu funil.
2. Coloque os blocos necessários no estado "Start".
3. Insira o texto da frase introdutória no gatilho.

{% hint style="warning" %}

#### Por favor, observe!&#x20;

As frases introdutórias aparecem para usuários que não entraram em contato previamente com sua conta do Instagram (ou se todo o histórico de conversas anterior foi excluído).
{% endhint %}

## Configurar resposta por palavra-chave no Direct

Para responder a clientes nas Mensagens Diretas com base em palavras-chave, você pode usar um bloco com um Gatilho (blocos Start e Trigger) e inserir as palavras para as quais você quer que seu bot responda no campo Trigger:

<div data-with-frame="true"><figure><img src="/files/ccf143ae562686ba79940f566007440133db320b" alt="" width="375"><figcaption></figcaption></figure></div>

A escolha de uma correspondência é baseada na presença de palavras-chave ou em uma correspondência completa (opções recomendadas).

Na **"Texto da mensagem"** campo, insira a resposta do bot que o usuário receberá. Você também pode adicionar anexos, botões e links.

## **Como verificar se um usuário está inscrito na sua conta**

Existem dois métodos para **verificar** o status da inscrição:

1\. Verificando a inscrição usando a calculadora

**result = check\_insta\_subscription()**

`resultado` é o nome da variável onde o **verificar** resultado será armazenado (você pode renomeá-la se necessário).

A função retorna:

* **`True`** se o usuário estiver inscrito.
* **`Falso`** se o usuário não estiver inscrito.

<div data-with-frame="true"><figure><img src="/files/a3bf3f7d33b0f5ba0979691f0423052c576c806c" alt="" width="563"><figcaption></figcaption></figure></div>

A verificação deve ser feita no campo **"Variável"** tanto na seta quanto no bloco.

* `result == True` – uma expressão no campo **"Variável"** se o cliente estiver inscrito na conta.
* `result == False` – uma expressão se o cliente não estiver inscrito.

Você também pode usar outras expressões de comparação, por exemplo:\
`result != False` (result é diferente de False, ou seja, o usuário está inscrito na conta).

<div data-with-frame="true"><figure><img src="/files/f08f0bfe1bfd238199af2027697f0b324ff567dd" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/8398eebb54407c38056b282d73f54b95b1aea54d" alt=""><figcaption></figcaption></figure></div>

2. Dados da verificação do cartão do cliente

Quando um usuário interage com o bot, as variáveis `follow` e `followers` são exibidas e verificadas no cartão do cliente (na subseção **Variáveis do Cliente** ).

<div data-with-frame="true"><figure><img src="/files/9b67d6480a50107dc5ecd707c575268e09022c72" alt=""><figcaption></figcaption></figure></div>

**`follow` variable** – verifica o status da inscrição. Assume o valor `True` se o cliente estiver inscrito na conta, `Falso` se não estiver inscrito, e `None` se a conta do cliente estiver fechada.

**`verified`** – indica se o usuário tem uma conta verificada (selo azul). É `True` se verificado e `Falso` se não estiver.

**`followers`** – mostra o número de inscritos/seguidores que o cliente tem.

Para verificar o status da inscrição ou restringir o avanço no funil, você pode usar a **`follow`** variável em blocos de condição ou conectores de seta dentro do **"Variável"** .

Exemplo:

<div data-with-frame="true"><figure><img src="/files/743042d289466dfbdc628d65879c23f5d26ffa14" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/420de745f9e75746dcd8b9e8c5603e0d702da855" alt="" width="375"><figcaption></figcaption></figure></div>

Na **Gatilho** campo, insira qualquer palavra que iniciará seu funil.

Na **variável para comparação**, escreva:\
`follow == True`\
OU\
`follow != False`

* No primeiro caso, você verifica se a pessoa está inscrita na sua conta.
* No segundo caso, você verifica se a pessoa está **não** inscrita na sua conta.

{% hint style="warning" %}
Por favor, note que os `True` e `Falso` status devem ser escritos com letra maiúscula. Caso contrário, a verificação não funcionará corretamente.
{% endhint %}

Para entregar mensagens diferentes com base no status da inscrição, você precisa criar dois blocos com condições opostas. Se preferir uma abordagem menos poluída, recomendamos definir as condições nas conexões (setas).

**Gatilhos nas conexões:**

<div data-with-frame="true"><figure><img src="/files/c6a93407ae812155cfab56a60c64ca23cab715d3" alt="" width="563"><figcaption></figcaption></figure></div>

Insira o gatilho no **"Variável"** campo da seta:\
`follow == True` ou `follow != False`

Se a condição do gatilho for atendida, o cliente avança mais no funil.

Se o cliente não estiver inscrito, ele vai para o bloco em que as condições de verificação não são atendidas (`follow == False` ou `follow != True`).

Se você quiser que a verificação seja dinâmica, recomendamos adicionar um botão — por exemplo, **"Eu me inscrevi"**— para que a verificação possa ser realizada e a pessoa possa avançar para a próxima etapa.

{% hint style="danger" %}

#### Atenção

Nós **NOT** recomendamos definir um temporizador sem um botão em uma seta fechada, pois a pessoa receberá mensagens continuamente, esgotando rapidamente seu limite de mensagens.
{% endhint %}


---

# 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/instagram/buttons.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.
