# Funciones (API) en la calculadora

{% hint style="warning" %}
Las funciones de API están disponibles solo en los planes "Business" y "MaviBot AI".
{% endhint %}

## API MaviBot

<mark style="color:rojo;">**LEYENDA:**</mark>\ <mark style="color:rojo;">**!**</mark> -Parámetros obligatorios

### Cómo enviar un callback

#### **callback()**

{% hint style="danger" %}
Puedes enviar un callback solo a OTRO cliente.

¡NO PUEDES enviar un callback a TI MISMO!
{% endhint %}

<details>

<summary>Descripción</summary>

**callback(client\_id, callback\_message)**

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;client\_id** - identificador del cliente

<mark style="color:rojo;">**!**</mark>**&#x20;callback\_message** - texto del mensaje de callback

</details>

<details>

<summary>Ejemplo</summary>

Un callback es un mensaje especial del sistema que el bot reconoce como un comando para activar una acción específica. Este mensaje es invisible para el usuario y solo se registra en el perfil del cliente para procesamiento interno.

Enviemos un callback al cliente con client\_id=73704021

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

A continuación, configuramos la respuesta a este callback en el bloque con la condición.

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
callback('73704021', 'callback TEST123')

callback(client_id, 'callback TEST123')
```

</details>

### Cómo enviar un callback en Telegram

#### **tg\_callback()**

<details>

<summary>Descripción</summary>

**tg\_callback(platform\_id , callback\_message,group\_id, business\_connection\_id)**

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;platform\_id** -  identificador del cliente de Telegram

<mark style="color:rojo;">**!**</mark>**&#x20;callback\_message** - texto del mensaje de callback

&#x20;**group\_id** -  identificador del bot de Telegram

**tg\_business -** para trabajar con clientes empresariales, se pasa el valor "1".

</details>

<details>

<summary>Ejemplo</summary>

Este es un ejemplo con los parámetros obligatorios:

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

Este es un ejemplo con los parámetros opcionales

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

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
tg_callback('73704021', 'callback TEST123')

tg_callback(platform_id, 'callback TEST123', None, 1)
```

</details>

### ¿Cómo añadir una redirección del bot con una etiqueta en respuesta a un botón de callback?

<details>

<summary>Descripción</summary>

**tg\_callback\_url\_open(callback\_query\_id, url)**

Parámetros: \ <mark style="color:rojo;">**!**</mark>**&#x20;callback\_query\_id** - este id te permite identificar a la persona que pulsó el botón y mostrarle una notificación de alerta,\ <mark style="color:rojo;">**!**</mark>**&#x20;url** - URL: especifica el bot y el parámetro (se ve así: t.me/your\_bot?start=XXXX, en lugar de your\_bot - nombre del bot)

</details>

### **Cómo enviar un mensaje al cliente**

**message() | platform\_message() | whatsapp\_message()**

{% hint style="info" %}
Para guardar texto con saltos de línea en una variable, establece el valor de la siguiente manera:

`text = "Texto de la primera línea" + "\n" + "Texto de la segunda línea" + "\n" +"Texto de la tercera línea"`
{% endhint %}

<details>

<summary>Descripción</summary>

**message(client\_id, text, message\_id, timeout)**

Parámetros:\ <mark style="color:rojo;">**!**</mark>**&#x20;client\_id** - identificador del cliente\ <mark style="color:rojo;">**!**</mark>**&#x20;text** - texto del mensaje\
**message\_id** - el ID del bloque. Si dejas el campo de texto vacío (") y completas este parámetro, se enviará al cliente el texto del bloque especificado.

*Nota: Si pasas el parámetro message\_id a la función message, el bloque se ejecutará igualmente por completo, y el cliente especificado en el parámetro client\_id será movido al bloque que pasaste en message\_id.*

\
**timeout** - retraso del mensaje o hora programada de envío. Puedes usar el parámetro timeout para retrasar el envío del mensaje:\
a) Un retraso en segundos (hasta 3600 segundos). Si el valor supera 3600, el mensaje se enviará en una hora. Si el valor es negativo, el mensaje se enviará inmediatamente. Ejemplo: timeout = 50                                                                                                                 &#x20;

b) Una fecha y hora específicas en el formato dd.mm.yyyy hh:mm, ejemplo: timeout = '03.04.2022 15:00' . Si se especifica una fecha pasada, el mensaje se enviará inmediatamente.

**platform\_message(platform\_id, text, client\_type,  message\_id, timeout,group\_id)**

Parámetros:\ <mark style="color:rojo;">**!**</mark>**&#x20;platform\_id** -  identificador del cliente en el mensajero\ <mark style="color:rojo;">**!**</mark>**&#x20;text** - texto del mensaje\
**client\_type -** tipo de mensajero, parámetro opcional. Si no se especifica, el cliente se buscará en el mismo mensajero desde el que el bot envía el mensaje. Si se especifica, el cliente se buscará entre la base de datos del mensajero especificado. Puedes encontrar los tipos de mensajero [aquí.](/doc/es/chatbot/functions/variables.md#how-to-work-with-variables)\
**message\_id** - ID del bloque. Si se especifica, el cliente recibirá el mensaje del bloque indicado, no el valor del parámetro text.\
**timeout** - hora de envío o retraso. Es similar al parámetro de la función message() del mismo nombre.\
**group\_id** - identificador del bot

**whatsapp\_message(phone, text, message\_id)**

Parámetros:\ <mark style="color:rojo;">**!**</mark>**&#x20;phone**- el número de teléfono del cliente donde está registrado Whatsapp\ <mark style="color:rojo;">**!**</mark>**&#x20;text** - texto del mensaje\
**message\_id** -es el ID del bloque. Si el campo de texto se deja vacío ('') y se establece este parámetro, el cliente recibirá el contenido del mensaje del bloque especificado.

{% hint style="info" %}
El bot de Whatsapp debe estar conectado al proyecto.
{% endhint %}

</details>

<details>

<summary>Ejemplo</summary>

Un ejemplo simple de envío de un mensaje por client\_id:

<div data-with-frame="true"><figure><img src="/files/9db43192d38556bfcef7c6daa83cf3345650f5e2" alt="" width="563"><figcaption><p>Envío de un mensaje por client_id</p></figcaption></figure></div>

Diferentes opciones para enviar un mensaje por client\_id:

<div data-with-frame="true"><figure><img src="/files/81bfa7fda6b8867be4ef16f3bf8b571de3852906" alt="" width="563"><figcaption><p>Diferentes opciones para enviar un mensaje </p></figcaption></figure></div>

Ejemplo de envío de un mensaje mediante platform\_message():

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

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
/*Envío de un mensaje por client_id*/
message(73704021, 'Texto del mensaje para el cliente')
/*Envío de un mensaje por client_id con un retraso de 30 segundos*/
message(73704021, '¡Hola! Gracias por escribir..','',30)
/*Envío de un mensaje desde el bloque 3190 por client_id 03.04.2022 a las 3pm*/
message(73704021, '',3190, '03.04.2022 3pm')

/*Envío de mensaje en Whatsapp*/
whatsapp_message('79999999999', 'Texto del mensaje para el cliente')
```

</details>

### Obtener client\_id por el valor de platform\_id

get\_client\_id\_by\_platform\_i&#x64;**()**

<details>

<summary>Descripción</summary>

**get\_client\_id\_by\_platform\_id(client\_type, platform\_id , group)**&#x20;

Después de ejecutarse, la función devolverá el client\_id si se encuentra un cliente que coincida con las condiciones especificadas; de lo contrario, devolverá None.

<mark style="color:rojo;">**!**</mark> **client\_type** - mensajero.  Para el valor client\_type, lee [este artículo](/doc/es/chatbot/functions/variables.md).&#x20;

<mark style="color:rojo;">**!**</mark> **platform\_id** - ID del cliente en el mensajero especificado.

**group**  - es un parámetro obligatorio si hay más de un bot de mensajería conectado.

{% hint style="warning" %}
Si hay varios mensajeros del mismo tipo conectados en el proyecto, la búsqueda se basará en todos los mensajeros conectados de este tipo.

En este caso, recomendamos pasar el parámetro group.
{% endhint %}

</details>

### Función para solicitudes get:  requests\_get(url, answer\_type, headers, params, auth, proxy)&#x20;

<details>

<summary>Descripción</summary>

<mark style="color:rojo;">**!**</mark>**&#x20;url** - es un enlace donde se realiza la solicitud

**answer\_type**  – es un parámetro opcional que define qué debe devolverse de la respuesta del servidor: ('status' – devuelve el código de estado de la respuesta; 'json' – devuelve el cuerpo json de la respuesta; 'text' – devuelve el texto sin procesar de la respuesta; cualquier otro valor (incluido el predeterminado) devuelve una respuesta en el formato: '{"status": status\_code, "data": data}')

**headers** - es un parámetro opcional para pasar los encabezados de la solicitud,&#x20;

**params** - es *get* parámetros de la solicitud (también pueden incluirse directamente en la URL),

**auth** - es un parámetro opcional útil para la autenticación de API. Si no quieres usar ningún parámetro opcional pero necesitas el siguiente, pasa 0 aquí.

**proxy** -  es un parámetro opcional; acepta un valor: "de", que enruta la solicitud a través de una dirección IP europea.

</details>

### Funciones para solicitudes pos

<details>

<summary>Descripción</summary>

requests\_post(url, answer\_type, headers, data, json\_data, auth, proxy)

<mark style="color:rojo;">**!**</mark>**&#x20;url** - es un enlace donde se realiza la solicitud,

**answer\_type** - es un parámetro opcional que define qué debe devolverse de la respuesta del servidor: ('status' – devuelve el código de estado de la respuesta; 'json' – devuelve el cuerpo json de la respuesta; 'text' – devuelve el texto sin procesar de la respuesta; cualquier otro valor (incluido el predeterminado) devuelve una respuesta en el formato: '{"status": status\_code, "data": data}')

**headers** - es un parámetro opcional para pasar los encabezados de la solicitud

**data** - es un parámetro opcional; representa el cuerpo de la solicitud cuando la API no funciona con json.

&#x20;**json\_data** - es un parámetro opcional; también representa el cuerpo de la solicitud. Debes usar solo uno de estos parámetros a la vez.

{% hint style="warning" %}
Ten en cuenta: ciertas configuraciones de encabezados pueden bloquear el envío de la solicitud con un tipo específico de cuerpo.
{% endhint %}

**auth** - es un parámetro opcional útil para la autenticación de API. Si no quieres usar ningún parámetro opcional pero necesitas el siguiente, pasa 0 aquí

**proxy** - es un parámetro opcional; acepta un valor: "de", que enruta la solicitud a través de una dirección IP europea.

</details>

### Funciones para solicitudes put

<details>

<summary>Descripción</summary>

requests\_put(url, answer\_type, headers, data, auth, proxy)

<mark style="color:rojo;">**!**</mark>**&#x20;url** - es un enlace donde se realiza la solicitud

**answer\_type** - es un parámetro opcional que define qué debe devolverse de la respuesta del servidor: ('status' – devuelve el código de estado de la respuesta; 'json' – devuelve el cuerpo json de la respuesta; 'text' – devuelve el texto sin procesar de la respuesta; cualquier otro valor (incluido el predeterminado) devuelve una respuesta en el formato: '{"status": status\_code, "data": data}')

**headers** - es un parámetro opcional para pasar los encabezados de la solicitud

**data** - es un parámetro opcional; representa el cuerpo de la solicitud cuando la API no funciona con json.

**auth** - es un parámetro opcional útil para la autenticación de API. Si no quieres usar ningún parámetro opcional pero necesitas el siguiente, pasa 0 aquí

proxy - es un parámetro opcional; acepta un valor: "de", que enruta la solicitud a través de una dirección IP europea.

**data\_is\_json** es un parámetro opcional.\
Si se establece, los datos pasados en `data` se enviarán en formato JSON.\
Para habilitarlo, pasa `'1'`.

</details>

### Funciones para solicitudes patch

requests\_patch(url, answer\_type, headers, data, auth, proxy)

<details>

<summary>Descripción</summary>

<mark style="color:rojo;">**!**</mark>**&#x20;url** - es un enlace donde se realiza la solicitud

**answer\_type** - es un parámetro opcional que define qué debe devolverse de la respuesta del servidor: ('status' – devuelve el código de estado de la respuesta; 'json' – devuelve el cuerpo json de la respuesta; 'text' – devuelve el texto sin procesar de la respuesta; cualquier otro valor (incluido el predeterminado) devuelve una respuesta en el formato: '{"status": status\_code, "data": data}')

**headers** - es un parámetro opcional para pasar los encabezados de la solicitud

**data** - es un parámetro opcional; representa el cuerpo de la solicitud cuando la API no funciona con json.

**auth** - es un parámetro opcional útil para la autenticación de API. Si no quieres usar ningún parámetro opcional pero necesitas el siguiente, pasa 0 aquí

proxy - es un parámetro opcional; acepta un valor: "de", que enruta la solicitud a través de una dirección IP europea.

</details>

### Funciones para solicitudes delete

requests\_delete(url, answer\_type, headers, data, json\_data, auth, proxy)

<details>

<summary>Descripción</summary>

<mark style="color:rojo;">**!**</mark>**&#x20;url** - es un enlace donde se realiza la solicitud

**answer\_type** - es un parámetro opcional que define qué debe devolverse de la respuesta del servidor: ('status' – devuelve el código de estado de la respuesta; 'json' – devuelve el cuerpo json de la respuesta; 'text' – devuelve el texto sin procesar de la respuesta; cualquier otro valor (incluido el predeterminado) devuelve una respuesta en el formato: '{"status": status\_code, "data": data}')

**headers** - es un parámetro opcional para pasar los encabezados de la solicitud

data -  es un parámetro opcional; representa el cuerpo de la solicitud cuando la API no funciona con json.

json\_data - es opcional y también puede utilizarse como cuerpo de la solicitud. Sin embargo, solo debe usarse una opción a la vez

auth - es un parámetro opcional útil para la autenticación de API. Si no quieres usar ningún parámetro opcional pero necesitas el siguiente, pasa 0 aquí

proxy - es un parámetro opcional; acepta un valor: "de", que enruta la solicitud a través de una dirección IP europea.

</details>

### Función para obtener el nombre del bloque por su ID

<details>

<summary>Descripción</summary>

get\_block\_name\_by\_id(block\_id)

<mark style="color:rojo;">**!**</mark>**&#x20;block\_id** — identificador del bloque (id)&#x20;

</details>


---

# 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/functions/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.
