# Botones y archivos adjuntos

## Cómo trabajar con botones

{% hint style="info" %}
Instagram no admite enviar botones en línea y de respuesta al mismo tiempo
{% endhint %}

### Teclado **(respuesta)**

Instagram admite hasta 11 botones de respuesta. Los botones solo se pueden organizar en una línea

Ejemplo:

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

Resultado:

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

### En texto (en línea)

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

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

{% hint style="danger" %}
Instagram admite no más de 3 botones en línea
{% endhint %}

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

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

Los botones pueden enlazar a recursos de terceros. Visualmente, estos botones son idénticos.

Para obtener instrucciones sobre cómo configurar botones, consulte la **Botones** sección.

## Cómo trabajar con archivos adjuntos

Puede enviar archivos adjuntos en el mensaje. Para obtener más información sobre qué archivos adjuntos usar y cómo agregarlos, consulte la [Envío de archivos adjuntos](/doc/es/chatbot/builder/attachments/tab.md) sección en la documentación.

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

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

{% hint style="warning" %}
Puede cargar archivos adjuntos a un bloque como archivo o proporcionando un enlace al archivo.

Los archivos de video cargados no deben superar los 20 MB, mientras que los archivos de audio e imagen no deben ser mayores de 5 MB.
{% endhint %}

**Requisitos de los archivos adjuntos:**

| Tipo de archivo multimedia | Formato admitido | Tamaño máximo |
| -------------------------- | ---------------- | ------------- |
| Audio                      | M4A              | 5 MB          |
| Imagen                     | JPEG, PNG        | 5 MB          |
| Vídeo                      | MP4              | 20 MB         |

{% hint style="warning" %}
Está **NOT** se recomienda usar el formato MP4 para los archivos adjuntos de audio. Además, **no se enviará ningún audio en formato MP3**.
{% endhint %}

## Cómo crear un carrusel

El carrusel puede contener de 2 a 10 tarjetas (diapositivas).

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

Usaremos un carrusel de 3 tarjetas como ejemplo. Para crear las tarjetas, debe ingresar lo siguiente en el **Calculadora** :

p = \[{"title":"TÍTULO", "description": "DESCRIPCIÓN DE LA IMAGEN 1", "image": "ENLACE A LA IMAGEN 1", "buttons":\[{"text":"TEXTO DEL BOTÓN 1"}]},{"title":"TÍTULO", "description": "DESCRIPCIÓN DE LA TARJETA 2", "image": "ENLACE A LA IMAGEN 2", "buttons":\[{"text":"TEXTO DEL BOTÓN 2"}]}, {"title":"TÍTULO", "description": "DESCRIPCIÓN DE LA TARJETA 3", "image": " ENLACE A LA IMAGEN 3", "buttons":\[{"text":"TEXTO DEL BOTÓN 3"}]}]                                              &#x20;

r = send\_carousel(p, '')

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

Copie el enlace:

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

El resultado:

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

{% hint style="warning" %}
Tenga en cuenta: la expresión `r = send_carousel(p, '')` debe comenzar en una nueva línea en la Calculadora.
{% endhint %}

Eso significa que debe asignar a una variable un array que contenga el título, la descripción, la imagen y los botones `p` (nombre la variable de forma diferente si lo desea). Luego, use esta variable en el `send_carousel(p, "")` .

Deja `#{None}` en el **"Respuesta"** campo.

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

{% hint style="info" %}
Puede añadir enlaces a los botones en las tarjetas del carrusel. Cuando un usuario haga clic en el botón, será dirigido al enlace.
{% endhint %}

Para añadir un enlace a un botón en la tarjeta, inclúyalo en el array:

p = \[{"title":"título", "description": "DESCRIPCIÓN DE LA TARJETA 1", "image": "ENLACE A LA IMAGEN 1", "buttons":\[{"text":"TEXTO DEL BOTÓN 1", "url":"ENLACE DEL BOTÓN" }]}]

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

{% hint style="info" %}
Otro parámetro opcional, `payload`se ha añadido a los botones de las tarjetas del carrusel. No se muestra al cliente, pero permite analizar la elección del cliente.
{% endhint %}

Dado que las tarjetas del carrusel suelen requerir botones con texto idéntico, se ha introducido un parámetro `payload` adicional. Este parámetro no es visible para el cliente, pero permite analizar su selección.

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

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

Preste atención a su uso correcto:

p = \[{"title":"título", "description": "DESCRIPCIÓN DE LA TARJETA 1", "image": " 1", "buttons":\[{"text":"TEXTO DEL BOTÓN 1","payload":"1"}]},{"title":"título", "description": "DESCRIPCIÓN DE LA TARJETA 2", "image": "ENLACE A LA IMAGEN 2", "buttons":\[{"text":"TEXTO DEL BOTÓN 1","payload":"2"}]}, {"title":"título", "description": "DESCRIPCIÓN DE LA TARJETA 3", "image": "ENLACE A LA IMAGEN 3", "buttons":\[{"text":"TEXTO DEL BOTÓN 1"}]}]

El `payload` el parámetro puede omitirse, como se muestra en la figura anterior.

## Cómo configurar frases de introducción

Las frases de introducción permiten a una persona iniciar un chat con una empresa mediante una lista de solicitudes frecuentes. Puede configurar hasta cuatro solicitudes.

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

Para configurar frases de introducción, debe configurar un control deslizante en la cuenta de Instagram conectada, en la sección “Canales”.

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

Después de hacer clic en este control deslizante, aparece una ventana emergente donde puede configurar las frases de introducción necesarias.

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

Luego, siga estos pasos:

1. Configure respuestas a frases específicas en su embudo.
2. Coloque los bloques necesarios en el estado "Inicio".
3. Ingrese el texto de la frase de introducción en el disparador.

{% hint style="warning" %}

#### ¡Ten en cuenta!&#x20;

Las frases de introducción aparecen para los usuarios que no han contactado previamente con su cuenta de Instagram (o si se ha eliminado todo el historial de chat anterior).
{% endhint %}

## Configurar una respuesta por palabra clave en Direct

Para responder a los clientes en Mensajes Directos según palabras clave, puede usar un bloque con un Disparador (bloques Inicio y Disparador) e ingresar las palabras a las que desea que responda su bot en el campo Disparador:

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

La elección de una coincidencia se basa en la presencia de palabras clave o en una coincidencia completa (opciones recomendadas).

En la **"Texto del mensaje"** campo, introduce la respuesta del bot que recibirá el usuario. También puedes añadir archivos adjuntos, botones y enlaces.

## **Cómo comprobar si un usuario está suscrito a su cuenta**

Hay dos métodos para **comprobar** el estado de suscripción:

1\. Comprobación de suscripción usando la calculadora

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

`resultado` es el nombre de la variable donde se **comprobar** guardará el resultado (puede cambiarle el nombre si es necesario).

La función devuelve:

* **`True`** si el usuario está suscrito.
* **`Falso`** si el usuario no está suscrito.

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

La comprobación debe realizarse en el **"Variable"** campo, tanto en la flecha como en el bloque.

* `result == True` – una expresión en el **"Variable"** campo si el cliente está suscrito a la cuenta.
* `result == False` – una expresión si el cliente no está suscrito.

También puede usar otras expresiones de comparación, por ejemplo:\
`result != False` (result no es igual a False, lo que significa que el usuario está suscrito a la cuenta).

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

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

2. Datos de la verificación de la tarjeta del cliente

Cuando un usuario interactúa con el bot, las variables `follow` y `followers` se muestran y se verifican en la tarjeta del cliente (en la subsección **Variables del cliente** ).

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

**`follow` variable** – verifica el estado de suscripción. Toma el valor `True` si el cliente está suscrito a la cuenta, `Falso` si no está suscrito, y `None` si la cuenta del cliente está cerrada.

**`verified`** – indica si el usuario tiene una cuenta verificada (marca azul). Es `True` si está verificado y `Falso` si no.

**`followers`** – muestra el número de suscriptores/seguidores que tiene el cliente.

Para comprobar el estado de suscripción o restringir el progreso del embudo, puede usar la **`follow`** variable en bloques de condición o conectores de flecha dentro del **"Variable"** campo.

Ejemplo:

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

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

En la **Disparador** campo, ingrese cualquier palabra que iniciará su embudo.

En la **variable para comparación**, escriba:\
`follow == True`\
O\
`follow != False`

* En el primer caso, comprueba si la persona está suscrita a su cuenta.
* En el segundo caso, comprueba si la persona está **no** suscrita a su cuenta.

{% hint style="warning" %}
Tenga en cuenta que los `True` y `Falso` estados deben escribirse con mayúscula inicial. De lo contrario, la comprobación no funcionará correctamente.
{% endhint %}

Para entregar diferentes mensajes según el estado de suscripción, debe crear dos bloques con condiciones opuestas. Si prefiere un enfoque menos recargado, le recomendamos definir las condiciones en las conexiones (flechas) en su lugar.

**Disparadores en las conexiones:**

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

Ingrese el disparador en la **"Variable"** fila de la flecha:\
`follow == True` o `follow != False`

Si se cumple la condición del disparador, el cliente avanza más en el embudo.

Si el cliente no está suscrito, va al bloque donde no se cumplen las condiciones de verificación (`follow == False` o `follow != True`).

Si quiere que la comprobación sea dinámica, recomendamos añadir un botón, por ejemplo, **"Ya me he suscrito"**—para que se pueda realizar la comprobación y la persona pueda pasar a la siguiente etapa.

{% hint style="danger" %}

#### Atención

No **NOT** recomendamos establecer un temporizador sin un botón en una flecha cerrada, ya que la persona recibirá mensajes continuamente, agotando rápidamente su límite de mensajes.
{% 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/es/chatbot/mensajeros/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.
