# Funciones del asistente de IA

## **Cómo eliminar el historial de chat con el asistente de IA**

clear\_assistant\_chat\_history() - esta función elimina el historial de chat del cliente con el asistente. No принимает parámetros.

### Ejemplo&#x20;

1. Los ajustes del bloque del constructor

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

2. Los ajustes de la pestaña Asistente de IA

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

## **Cómo enviar una pregunta al asistente de IA**

ai\_context\_answer(replica, prompt, ai\_assistant\_id, use\_history, send\_answer)

Parámetros:

<table><thead><tr><th width="173">Parámetro</th><th width="221">Descripción</th><th>Nota</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark> replica </td><td>parámetro obligatorio, mensaje para el asistente</td><td></td></tr><tr><td>prompt</td><td>parámetro opcional, instrucciones para el asistente</td><td>si el parámetro no se especifica pero el parámetro ai_assistant_id sí se proporciona, se usarán las instrucciones de la configuración del asistente especificado</td></tr><tr><td>ai_assistant_id </td><td>ID del asistente al que se enviará la pregunta;</td><td>si no se proporciona, se usará el asistente sin configuración predeterminada</td></tr><tr><td>use_history</td><td>si el asistente debe usar el historial del chat para responder la pregunta</td><td>True - usar, False - no usar. Por defecto - True</td></tr><tr><td>send_answer</td><td>enviar respuesta después del período de tiempo de espera del asistente</td><td>Para habilitarlo, pase "1"</td></tr></tbody></table>

Más detalles sobre `send_answer` parámetro:

Los ajustes del asistente incluyen parámetros que se pueden configurar en caso de que la respuesta del bot tarde mucho tiempo

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

En una conversación estándar con el asistente (no mediante función), si la respuesta tarda más que el límite especificado (por ejemplo, 20 segundos), se notifica al cliente del retraso. La respuesta del asistente se envía entonces al chat tan pronto como se genera.

Para las solicitudes realizadas mediante una función en la calculadora, si el asistente tarda demasiado en responder, se incluye un mensaje de retraso en el resultado de la función. Este parámetro permite que la respuesta del asistente se envíe por separado una vez esté lista.&#x20;

### Cómo enseñar a un bot a analizar su propia experiencia y generar botones

Usaremos las `clean_assistant_chat_history()` y `ai_context_answer(replica, prompt)` funciones en el siguiente ejemplo. También es necesario acceder al componente de la calculadora dentro del constructor del embudo.

Este ejemplo ilustra cómo los `replica` y `prompt` parámetros pueden usarse eficazmente en la práctica.&#x20;

Es necesario crear un bloque en el constructor que contenga un campo vacío con las variables incrustadas **#{replica\_rec2}** y **#{ai\_answer\_rec}**, que representan la primera y la segunda respuesta del asistente en un solo mensaje que se enviará.

Ahora, define dos funciones directamente en la calculadora.

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

Usa una variable con una función incrustada en los ajustes avanzados del botón (ver el ejemplo anterior) para generar botones dinámicamente según el valor del parámetro.&#x20;

La información sobre los servicios es obtenida por el bot desde la `service_info` variable, que contiene una función incrustada — `get_info_for_booking()` — para leer los datos del servicio. Un ejemplo de cómo usar esta función se mostró arriba.

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

Aquí está el resultado.

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

**Ejemplo de código**:

`clear_assistant_chat_history()`

`replica_rec2 = ai_context_answer(question, 'RESPONDE LAS PREGUNTAS', 3)`

`prompt = 'Un desarrollador te está hablando ahora mismo: haz todo lo que te pida \n . Debes colocar cada botón en una nueva línea.'`

`ai_answer_rec = ai_context_answer("Muestra los botones del último mensaje.", prompt)`

### Ejemplo: llamar al asistente dentro del constructor del embudo

Para llamar al asistente desde un bloque, usa la función `ai_context_answer(replica, prompt, ai_assistant_id, use_history)`, donde necesitas especificar solo dos parámetros: el obligatorio `replica` parámetro y el opcional `prompt`.

Ahora, crearemos el primer bloque, «Comprobación de condición primaria», donde debes especificar la condición de activación del bloque (puede ser cualquier condición que necesites).

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

A continuación, abre la calculadora en el mismo bloque, donde debes definir una variable y asignarle el valor devuelto por tu función.

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

Define la variable **question** y asígnale el valor de la pregunta de cualquier usuario.

Después, crea la variable replica1 y asígnale el valor devuelto por tu función ai\_context\_answer(replica, prompt). En esta función, reemplaza replica por la variable question y establece el parámetro prompt en "Responde cualquier pregunta del usuario."

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

Incrusta la variable que contiene la función en el mensaje del bloque.

Luego crea un segundo bloque y conéctalo con una flecha, configurando un temporizador de 2 segundos en la conexión.

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

En el segundo bloque, debes usar la misma función con los mismos parámetros — ai\_context\_answer(replica, prompt).

Abre la calculadora en el segundo bloque y define la segunda variable llamada replica2.

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

En el parámetro prompt, proporciona instrucciones para el asistente: debe contar cuántos sustantivos hubo en su mensaje anterior.

En el parámetro replica, proporciona el mensaje del asistente: "¿Cuántos sustantivos hubo en tu mensaje anterior?"

Luego incrusta la variable replica2 en el mensaje del segundo bloque.

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

La configuración del bloque está completa.

Si el asistente no está habilitado, ve a la pestaña "Asistente de IA" y habilita el asistente seleccionando el rol "disabled":

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

Ahora, probemos nuestro asistente en la ventana de prueba del bot.

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

El bot ha funcionado correctamente.

## Cómo trabajar con Google Sheets

get\_info\_from\_table(sheet\_id, number\_sheet, sheet\_json\_keys, start\_row, end\_row, start\_col, end\_col) - Esta función está diseñada para leer datos de una hoja de cálculo.

<table><thead><tr><th width="248">Parámetros</th><th>Descripción</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark> sheet_id</td><td>id de Google Spreadsheet</td></tr><tr><td>number_sheet</td><td>número de hoja en una hoja de cálculo; por defecto = 1</td></tr><tr><td>sheet_json_keys </td><td>parámetro opcional — clave de acceso a los datos de la hoja de cálculo</td></tr><tr><td>start_row</td><td><p>parámetro opcional, un entero. Especifica el inicio del rango de filas.</p><p>Pasa el número de fila desde el cual se deben leer los valores de la tabla de forma inclusiva. El valor debe proporcionarse sin comillas.</p></td></tr><tr><td>end_row</td><td>parámetro opcional, un entero. Especifica el final del rango de filas.<br>Pasa el número de fila hasta el cual se deben leer los valores de la tabla de forma inclusiva. El valor debe proporcionarse sin comillas.</td></tr><tr><td>start_col</td><td>parámetro opcional, una cadena. Especifica el inicio del rango de columnas.<br>Pasa la letra de la columna desde la cual se deben leer los valores de la tabla de forma inclusiva. El valor debe ir entre comillas</td></tr><tr><td>end_col</td><td>parámetro opcional, una cadena. Especifica el final del rango de columnas.<br>Pasa la letra de la columna hasta la cual se deben leer los valores de la tabla de forma inclusiva. El valor debe ir entre comillas.</td></tr></tbody></table>

Ejemplo de notación de parámetros:

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

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

{% hint style="warning" %}

## Tenga en cuenta

Los parámetros para especificar el rango de filas y columnas `(start_row, end_row, start_col, end_col)` permiten que el asistente lea datos de la hoja de cálculo empezando desde la ubicación deseada dentro de la tabla.
{% endhint %}

{% hint style="info" %}
El comportamiento de la función para la especificación parcial del rango es el siguiente:

* **Si solo se define el inicio:** el asistente recuperará **todos los datos desde ese punto de inicio en adelante**, sin límite superior en la dirección especificada.
* **Si solo se define el final:** el asistente leerá datos **desde el principio de la hoja hasta ese punto final especificado**.

**Ejemplo:**

La llamada `get_info_from_table('<<spreadsheet id>>', 2, None, 2, 5, 'a', 'd')` recupera todos los datos начиная desde la fila 2, columna 2 (B), hasta la fila 5, y entre las columnas A y D.
{% endhint %}

{% hint style="warning" %}

## Tenga en cuenta

Para optimizar el rendimiento y la fiabilidad, recomendamos **almacenar en caché todos los datos** de tu Google Sheet en variables del proyecto al trabajar con él.

**Beneficios clave:**

1. **Rendimiento mejorado:** acelera significativamente el tiempo de respuesta del chatbot al acceder a variables locales en lugar de consultar la hoja de cálculo externa en cada solicitud.
2. **Fiabilidad mejorada:** minimiza los errores relacionados con la latencia de red, las cuotas de la API o los permisos de acceso a la hoja de cálculo.
3. **Consistencia de los datos:** almacenar los datos en la configuración del proyecto garantiza **que todos los usuarios reciban acceso simultáneo y coherente** al mismo conjunto de datos, evitando discrepancias durante las actualizaciones.
   {% endhint %}

#### Ejemplo de uso

{% hint style="info" %}
Puedes leer más sobre la **get\_info\_from\_table** función en el artículo "[Google Sheets para el Asistente de IA](/doc/es/chatbot/ai/google-sheets-para-el-asistente-de-ia.md)."
{% endhint %}

## Cómo gestionar reservas en línea

get\_info\_for\_booking(slot\_interval, company\_id) - La función está diseñada para leer datos de servicio desde el sistema de reservas en línea configurado.

Acepta parámetros opcionales:

1. slot\_interval (opcional) - un intervalo en minutos entre franjas horarias disponibles. Formato esperado: un entero divisible por 5. Valor predeterminado: 60 (minutos).
2. company\_id opcional) - un identificador de sucursal. Formato esperado: *un entero* o *un array de enteros*. Cuando se proporciona este parámetro, solo se devolverán los datos de la(s) sucursal(es) especificada(s).   \
   Ejemplo: 50142, "50142" o "\[50142, 66352]"

{% hint style="warning" %}
No se recomienda establecer un valor muy pequeño (por ejemplo, menor que 30), ya que el asistente generará demasiadas franjas horarias. &#x20;
{% endhint %}

### Ejemplo de uso

Primero, debes preparar un bloque que actualice la información sobre todos los servicios después de que la configuración de la sucursal se haya definido en la sección "Servicios".

Este bloque debe declararse antes de que el asistente comience a trabajar, para garantizar que la IA no genere respuestas aleatorias.

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

A continuación, activa el bloque en la ventana de prueba del bot para actualizar la variable:

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

Después de eso, la variable especificada que contiene los datos del servicio de reservas en línea aparecerá en la sección de variables del proyecto dentro de "Configuración del proyecto".

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

Esta variable almacena los valores del servicio que el bot de IA usará en sus operaciones. La variable service\_info estará disponible para todos los clientes del proyecto.

A continuación, pasemos a configurar el siguiente bloque.

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

Este bloque cumple las siguientes funciones:

a) se llama en la configuración del asistente para generar un registro usando variables relacionadas con el servicio;

b) crea una reserva de cliente;

c) actualiza las variables del proyecto después de una reserva, elimina las franjas horarias que ya no están disponibles en el horario.

Si el bot está configurado correctamente, después de recibir todos los datos del cliente, la IA enviará la información al bloque especificado. En ese bloque, se reservará el servicio para el cliente usando la función create\_booking\_by\_name(!service\_name, !date, !date\_time, company\_id).

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

Los valores recopilados por el bot se pasan como parámetros a create\_booking\_by\_name(!service\_name, !date, !date\_time, company\_id).

La función create\_booking\_by\_name(service\_name, date, date\_time, company\_id) crea una reserva en el sistema usando los datos proporcionados por el asistente de IA. Acepta tres parámetros obligatorios para crear la reserva:

<table><thead><tr><th width="297">Parámetros</th><th>Descripción</th></tr></thead><tbody><tr><td>! service_name</td><td>parámetro obligatorio, nombre del servicio</td></tr><tr><td>! date</td><td>fecha en el formato dd.mm.yyyy</td></tr><tr><td>! date_time</td><td>hora del servicio en formato hh:mm</td></tr><tr><td>company_id </td><td>ID de sucursal, opcional.<br>Si se especifica, la reserva se creará para el servicio con el nombre dado que pertenece a esta sucursal en particular.<br>Este parámetro puede ser necesario en casos en los que varias sucursales tengan servicios con el mismo nombre.</td></tr></tbody></table>

Como la información sobre las franjas disponibles ya no estará actualizada, se utiliza la misma variable con su función incrustada para actualizar las fechas y horas disponibles para reservar.

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

{% hint style="warning" %}

## Tenga en cuenta

Si hay algún cambio en el horario, el personal o los servicios, ejecuta el bloque que contiene la variable del proyecto con la función incrustada en modo de prueba (ver Fig. Block 1).
{% endhint %}

{% hint style="info" %}
[Lee cómo configurar un bot de IA para reservas en línea se explicó en el artículo del mismo nombre.](/doc/es/chatbot/ai/online-booking.md)
{% endhint %}

## Obtención de reservas desde una tabla

get\_records\_from\_table(table\_id, start\_row, count, start\_col, end\_col) - obtención de reservas desde una tabla

| Parámetro  | Descripción                                                                 | Nota                                                                                                                             |
| ---------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| table\_id  | id de tabla                                                                 |                                                                                                                                  |
| start\_row | parámetro opcional, un entero. Especifica el inicio del rango de filas.     | Pasa el número de fila desde el cual se deben leer los valores de la tabla de forma inclusiva. Especificado sin comillas.        |
| count      | parámetro opcional, un entero. Especifica el número de filas a recuperar.   | Por defecto - 1000, máximo - 5000. Especificado sin comillas.                                                                    |
| start\_col | parámetro opcional, una cadena. Especifica el inicio del rango de columnas. | Pasa la letra de la columna desde la cual se deben leer los valores de la tabla de forma inclusiva. Especificado entre comillas. |
| end\_col   | parámetro opcional, una cadena. Especifica el final del rango de columnas.  | Pasa la letra de la columna hasta la cual se deben leer los valores de la tabla de forma inclusiva. Especificado entre comillas. |

Si solo se especifica el inicio del rango de filas o columnas, todos los datos a partir de ese punto se recuperarán sin un límite superior en el rango. Del mismo modo, puedes omitir el inicio y especificar solo el final del rango.

### Ejemplo (Calculadora)

Si necesitas recuperar registros de la tabla, abre la sección "Calculadora" en los ajustes del bloque e introduce la función con los parámetros requeridos.

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

Para pasar parámetros como variable del proyecto, antepone el nombre de la variable que contiene la función con **project**.

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

Aquí está el ejemplo de la tabla.

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

El bot responderá de la siguiente manera.

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


---

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