# Constructor de API

Algunas funciones de solicitud de API se pueden ejecutar en la Calculadora.

Las solicitudes se envían mediante el **POST** o **GET** método a una URL en el siguiente formato:

**<https://chatter.mavibot.ai/api/{api\\_key}/{action}>**

Dónde:

**api\_key** — la clave de acceso a la API generada en la configuración del proyecto.

<figure><img src="/files/ee2f3bcc193fc1a6020b8b6bd6ee75578f505f3f" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Para usar el token en una solicitud URL, primero necesitas generar una clave API.

Las instrucciones para hacerlo se proporcionan en la sección "Generación de una clave API". <mark style="color:rojo;">**ссылка**</mark>
{% endhint %}

{% hint style="danger" %}
Al copiar una URL de esta página, puede aparecer un espacio y debe eliminarse.

Ejemplo de un enlace incorrecto:&#x20;<https://chatter.mavibot.pro> /api/callback

Si el espacio después de .pro permanece, la solicitud no funcionará.
{% endhint %}

{% hint style="warning" %}
No uses caracteres prohibidos al enviar una solicitud GET.

Asegúrate de entender el formato correcto para las solicitudes GET.
{% endhint %}

## **Cómo generar una clave API**

{% hint style="success" %}
La antigua función de generación de claves API sigue funcionando como antes, pero no está disponible para nuevos proyectos.

Si tu proyecto ya tiene claves API generadas sin la configuración de acceso descrita en esta sección, esas claves API existentes seguirán funcionando normalmente.

Si necesitas generar nuevas claves, usa la configuración actualizada.
{% endhint %}

Para generar una clave API, ve a la configuración del proyecto:

<figure><img src="/files/048b91d81c8881179b5fe19df0ef1ebd2629af72" alt="" width="301"><figcaption></figcaption></figure>

A continuación, ve a la sección "Integraciones":

<figure><img src="/files/74cefe8e4bfc112be2ad2e79c56fa8236418b1cd" alt="" width="563"><figcaption></figcaption></figure>

Encontrarás el botón "Agregar clave API" en la sección "Integraciones":

<figure><img src="/files/c129ca62650fc6b42f899479a7b8fd91f09cbb7c" alt=""><figcaption></figcaption></figure>

Después de hacer clic en el botón, se abrirá una ventana modal con la configuración de acceso y las opciones de generación de la clave API:

<figure><img src="/files/5d139a7714145b15c3a6f3ae548776c018bb0a95" alt=""><figcaption></figcaption></figure>

A continuación, debes seleccionar los permisos de acceso para la clave API:

<figure><img src="/files/7a6c1f50c7a268790b3b68811ca5e6167c8e5098" alt=""><figcaption></figcaption></figure>

La función de la API funcionará según los permisos de acceso que selecciones.

{% hint style="warning" %}
¡Ten en cuenta!

La función de la API depende de los permisos de acceso que establezcas: si generas una clave API con acceso de solo lectura a la información del cliente y luego la usas para enviar un mensaje a un cliente o modificar sus variables, la solicitud de la API fallará.\
El permiso requerido para cada solicitud de API se especifica en la tarjeta de solicitud de API:

<img src="/files/d0a42587335180b8ed85995976d5066d377fd296" alt="" data-size="original">
{% endhint %}

A continuación, introduce un nombre para la clave API:

<figure><img src="/files/6c9b00b90e4b2eaa1a4376925135c4b6b5e07f0e" alt=""><figcaption></figcaption></figure>

Genera la clave API haciendo clic en el botón "Generar":

<figure><img src="/files/1f1c12aedbc4f3516707fcfc60ab0d03b1bb4e00" alt=""><figcaption></figcaption></figure>

Después de eso, haz clic en "Listo" y la clave api se añadirá a la sección:

<figure><img src="/files/539f5df15dbc380180a48d55980b6fa7e89c47de" alt=""><figcaption></figcaption></figure>

Puedes añadir tantas claves API como necesites, asignando diferentes permisos de acceso a cada una.

<figure><img src="/files/089d1639f952b91616c07444c034d7d8364d2a7f" alt=""><figcaption></figcaption></figure>

A continuación, debes establecer una clave principal del proyecto. Esto te permite usar la clave en una URL de solicitud con el marcador #{api\_key}.

Para ello, haz clic en el botón "{+}" a la derecha de la clave API deseada:

<figure><img src="/files/ecb2f6601a5deba7f4ef54a6f2233490001e5d84" alt=""><figcaption></figcaption></figure>

Luego aparecerá una etiqueta junto a la clave, indicando que es la clave principal del proyecto.

<figure><img src="/files/5e789a12cfd95a10fc2c597d7ea3fa5c54762816" alt=""><figcaption></figcaption></figure>

Puedes acceder a la clave principal del proyecto a través de api\_key: simplemente genera la clave requerida, configura sus permisos y asígnala como la clave principal del proyecto. Luego, en la Calculadora, usa la URL de solicitud con el marcador #{api\_key}, que contendrá el valor de la clave principal del proyecto.

<figure><img src="/files/bb9a7dc73122b738447fad72d493d07e79248da3" alt=""><figcaption><p>URL de la solicitud</p></figcaption></figure>

<figure><img src="/files/ee55ff1f126875afb1ee7863832e824ff0b4cbef" alt=""><figcaption></figcaption></figure>

Cualquier otra clave generada con configuración de acceso se considerará clave secundaria. En la URL de solicitud, puedes usar su valor en lugar de #{api\_key}. Para hacerlo, copia el valor de la clave secundaria:

<figure><img src="/files/db2cc3420c162904b197acef0d96b272f766e01c" alt=""><figcaption></figcaption></figure>

y pégalo en la URL de solicitud en lugar de #{api\_key}:

<figure><img src="/files/1ceb8f74d4c8abf749dc4154c631c61d2e0fd7ea" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Una clave API generada usando el método antiguo se establece como la clave principal del proyecto por defecto y tiene permisos completos.
{% endhint %}

{% hint style="danger" %}
¡Nota!&#x20;

Si eliminas la clave establecida como clave principal del proyecto, tendrás que designar manualmente una nueva clave como principal.
{% endhint %}

{% hint style="success" %}
¡Ten en cuenta!&#x20;

Si tienes claves API generadas usando el método antiguo, seguirán funcionando normalmente. No es posible generar nuevas claves API del tipo antiguo.
{% endhint %}

## Cómo recibir mensajes en la URL del Webhook especificada en la configuración del proyecto

![Configuración del proyecto](/files/2f16e39909cfb88161c3cf945ed5e3932567b509)

Cada mensaje entrante o saliente se enviará como la siguiente solicitud JSON POST:

```
{
    "id": "ID del mensaje en el sistema",
    "client": {
        "id": "ID del cliente en el sistema",
        "recepient": "ID del cliente en el mensajero",
        "client_type": "tipo de mensajero",
        "name": "nombre del cliente",
        "avatar": "avatar del cliente",
        "created_at": "fecha de creación del cliente",
        "tag": "clave de suscripción",
        "group": "bot al que está vinculado el cliente"
    },
    "message": "texto del mensaje",
    "attachments": "array que contiene enlaces de archivos o diccionarios de enlaces de archivos",
    "message_id": "ID del bloque desde el que se envió el mensaje",
    "project_id": "ID del proyecto",
    "is_input": "1 si el mensaje es del cliente, 0 si es del bot",
    "delivered": "1 si el mensaje se envió correctamente, 0 si hubo un error",
    "error_message": "texto del error de entrega del mensaje"
}
```

Si una solicitud devuelve un error, no se reintentará. Incluso si el servidor devuelve errores, las notificaciones seguirán enviándose.

### Cómo crear una solicitud JSON

Ve a la configuración del bloque donde se registrarán los datos en la tabla.&#x20;

<figure><img src="/files/751bce9f629c3919fcea8b36f95f473639092471" alt=""><figcaption></figcaption></figure>

1. Añade una sección Solicitud API.
2. Selecciona POST-JSON como tipo de solicitud.
3. Luego procede a completar los campos de la solicitud:

<figure><img src="/files/607c5b5c5732462f9a11dfbeaf7ffc37193f7282" alt=""><figcaption></figcaption></figure>

**URL de la solicitud** — la ruta a la función que se llamará. En la documentación, esto siempre se muestra en la primera línea junto al tipo de solicitud:

<figure><img src="/files/04d057cbd99788465f4ba462ca37dd6bdeeadef2" alt=""><figcaption></figcaption></figure>

**Valores guardados** — una lista de parámetros de respuesta con los nombres de las variables donde deben almacenarse los resultados, en el siguiente formato:

> **request\_parameter -> tu\_variable**
>
> Si la respuesta contiene parámetros con una estructura compleja, analízalos de la siguiente manera:
>
> * > "cell\_number":{"row":4,"col":2}\
>   > \
>   > \
>   > cell\_number|row ->String; \
>   > cell\_number|col -> Column<br>

**Encabezados de la solicitud** — complétalo si es necesario. Esto suele incluir el formato de datos y/o el token de acceso.

**Parámetros JSON** — el cuerpo de la solicitud, donde especificas los parámetros de datos en formato JSON. Ejemplo:

**{"client\_id": "#{recipient\_id\_in\_builder}", "message":"¡Hola!"}**

Para entender la estructura de la respuesta, escribe #{custom\_answer} en el campo Message para mostrar el valor de la variable.<br>

<figure><img src="/files/467e598e4dcc852e1ce50f86265867b20bfd87b7" alt=""><figcaption><p>Recepción del resultado de una solicitud API como mensaje</p></figcaption></figure>

A continuación, la documentación enumera los parámetros permitidos en la sección "Body":&#x20;

<figure><img src="/files/6317e0d7027032cbc4cb321ca57d68a38675a596" alt="" width="551"><figcaption></figcaption></figure>

## Cómo usar un webhook universal

Los métodos enumerados ahora se pueden ejecutar como solicitudes POST o GET.

* [callback](#zapusk-bota)
* [whatsapp\_callback](#zapusk-bota)
* [message](#otpravka-soobshenii)
* [whatsapp\_message](#otpravka-soobshenii)

Anteriormente, nuestros métodos tenían parámetros fijos (como **client\_id** y **fb\_id**) para activar acciones del suscriptor, lo que imponía ciertas limitaciones al integrarse con servicios de terceros.

Ahora puedes especificar qué parámetro de solicitud debe usar SaleBot para encontrar el ID del usuario. Usa un parámetro con el **prefijo value\_**, por ejemplo, **value\_user\_id** o **value\_group\_id**.

Además, el método de envío callback ahora también puede activarse usando el correo electrónico del cliente (**client\_email**) o el número de teléfono (**client\_phone**).

{% hint style="success" %}
El **callback**, **fb\_callback**, y **whatsapp\_callback** los métodos no están vinculados a nombres de parámetros específicos. Puedes especificar qué parámetro contiene el número de teléfono, el correo electrónico o el ID del cliente.
{% endhint %}

Esto es útil al configurar la recepción de webhooks desde un sitio web.

**Para especificar qué variable contiene client\_id**, usa el parámetro value\_client\_id y proporciona el nombre del parámetro que contiene este valor.

**Para especificar qué variable contiene el número de teléfono**, usa value\_phone.

**Para especificar qué variable contiene el correo electrónico,** usa value\_email.

**Para especificar qué variable contiene el user\_id**, usa value\_user\_id.

**Para especificar qué variable contiene el group\_id**, usa value\_group\_id.

**Para especificar la variable que contiene el propio mensaje en el webhook**, usa value\_message (se pasa de la misma manera que los demás parámetros).

Ejemplo:

En la dirección, especifica value\_client\_id = my\_client.

`https://chatter.mavibot.ai/api/d3f31dabef80ddeb73d43938b4ef8bb0/callback?value_client_id=my_client`\
`{"my_client":49177759, "message":"Hello world"}`

La solicitud será equivalente a la siguiente:

`https://chatter.mavibot.pro/api/d3f31dabef80ddeb73d43938b4ef8bb0/callback`\
`{"client_id":49177759, "message":"Hello world"}`

Como puedes ver, el nombre del parámetro que contiene el valor va precedido por **value\_**.

{% hint style="warning" %}
¡Ten en cuenta!&#x20;

Algunos eventos generan notificaciones del sistema dentro del proyecto.

Por ejemplo, hay notificaciones del sistema con un campo message que no está vacío pero que no contiene texto del cliente.

Al mismo tiempo, el proyecto también puede generar hooks de mensaje con contenido específico, como "message: new\_chat\_member".

Por lo tanto, es importante comprobar el contenido: será una notificación del sistema o un hook para un evento específico.
{% endhint %}

## Cómo iniciar el bot

### Iniciar el bot

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/callback</summary>

URL de la solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/callback><br>

Este método puede usarse para activar un embudo para un cliente o confirmar una acción en un recurso externo. El cliente no verá este mensaje.<br>

**Ten en cuenta: cualquier parámetro que pases adicionalmente se guardará en la variable**

El método callback ahora también puede activarse usando el correo electrónico del cliente (client\_email) o el número de teléfono (client\_phone).

Permiso de acceso al generar una clave: **"Permiso para modificar/eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

Ruta

api key\* - token de acceso

Cuerpo

client\_phone - número de teléfono usado para buscar al cliente

client\_email - correo electrónico usado para buscar al cliente

client\_id - ID del cliente en el generador

message - texto del mensaje

resume\_bot - True (parámetro opcional). Si el bot está pausado, esto se usa para reanudarlo.&#x20;

Ejemplo: resume\_bot = True

time\_shift - número. Si se especifica, el mensaje se enviará después del número dado de segundos desde el momento actual.

send\_time - fecha y hora en el formato "%Y-%m-%d %H:%M:%S" (por ejemplo, "2024-10-16 13:15:59"). Esto establece la fecha y hora de envío del mensaje. Si se especifican tanto time\_shift como send\_time, time\_shift tendrá prioridad.

```
import requests
import json

params = {"message": "some_text", "client_id": "25554"}
token = 'b551e18c8b8e86bea6f14f38de3f5cc3c31ba1edb4d8'
url = f'https://chatter.salebot.pro/api/{token}/callback'
requests.post(url, json=params)
```

</details>

### Iniciar el bot usando un número de WhatsApp

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/&#x3C;api_key>/whatsapp_callback</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/\\>\<api\_key>/whatsapp\_callback

Este método puede activar el bot de WhatsApp después de que un cliente se registre en el sitio web o envíe una solicitud con su número de teléfono.

**Ten en cuenta: cualquier parámetro que pases adicionalmente se guardará en la variable**

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

Ruta

api key\* - token de acceso

Cuerpo

name - nombre del cliente\
message - texto del mensaje\
phone - número de teléfono del cliente\
bot\_id - ID del bot\
resume\_bot - True (parámetro opcional). Si el bot está pausado, úsalo para reanudarlo. Ejemplo: resume\_bot = True

time\_shift - número. Si se especifica, el mensaje se enviará después del número dado de segundos desde el momento actual.

send\_time - fecha y hora en el formato "%Y-%m-%d %H:%M:%S" (por ejemplo, "2024-10-16 13:15:59"). Esto establece la fecha y hora de envío del mensaje. Si se especifican tanto time\_shift como send\_time, time\_shift tendrá prioridad.

</details>

### Iniciar el bot usando un ID de Telegram

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.pro/api/#{api_key}/tg_callback</summary>

URL de solicitud: <https://chatter.mavibot.pro/api/#{api\\_key}/tg\\_callback>

Este método se puede usar para activar un embudo para un cliente o confirmar una acción en un sitio web externo. El cliente no verá este mensaje.

**Ten en cuenta que cualquier parámetro que pases adicionalmente se guardará en variables.**

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

Ruta

api key\* - token de acceso

Cuerpo

message - texto del mensaje\
user\_id - ID de usuario de Telegram\
group\_id - nombre del bot (terminado en bot)\
resume\_bot - True (parámetro opcional). Si el bot está pausado, úsalo para reanudarlo. Ejemplo: resume\_bot = True

time\_shift - número. Si se especifica, el mensaje se enviará después del número dado de segundos desde el momento actual.

send\_time - fecha y hora en el formato "%Y-%m-%d %H:%M:%S" (por ejemplo, "2024-10-16 13:15:59"). Esto establece la fecha y hora de envío del mensaje. Si se especifican tanto time\_shift como send\_time, time\_shift tendrá prioridad.

</details>

### Enviar mensajes callback a una lista de clientes por platform\_id

<details>

<summary><mark style="color:verde;">POST</mark>  https://chatter.mavibot.ai/api/#{api_key}/send_callback_by_platform_id</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/send\\_callback\\_by\\_platform\\_id>

Cuando se encuentren en el proyecto clientes con un platform\_id de la lista, se enviará un callback con el texto del campo callback\_text.\
\ <mark style="color:rojo;">**Límite: 1 solicitud = máximo 300 envíos**</mark>&#x20;

Ejemplo de parámetros de solicitud:\
{"platform\_ids":\[407184121, "79609879898", "2rwewefw"], "callback\_text": "test\_callback"}

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

Ruta

api key\* - token de acceso

Cuerpo

platform\_ids - lista de IDs de clientes en el mensajero\
callback\_text - texto del callback\
group\_id - ID del bot

time\_shift - número. Si se especifica, el mensaje se enviará después del número dado de segundos desde el momento actual.

send\_time - fecha y hora en el formato "%Y-%m-%d %H:%M:%S" (por ejemplo, "2024-10-16 13:15:59"). Esto establece la fecha y hora de envío del mensaje. Si se especifican tanto time\_shift como send\_time, time\_shift tendrá prioridad.

</details>

### Enviar un mensaje callback a un cliente por correo electrónico

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/email_callback</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/email\\_callback>

Este método puede activar el bot de correo electrónico después de que un cliente se registre en el sitio web o envíe una solicitud con su correo electrónico. El método localizará el correo del cliente o lo creará si no se encuentra.

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

**Ten en cuenta: cualquier parámetro que pases adicionalmente se guardará en la variable**

Ruta

api key\* - token de acceso

Cuerpo

name - nombre del cliente\
message - texto del mensaje\
email - dirección de correo electrónico\
email\_id\_bot - dirección de correo del bot\
resume\_bot - True (parámetro opcional).&#x20;

Si el bot está pausado, úsalo para reanudarlo. Ejemplo: resume\_bot = True

time\_shift - número. Si se especifica, el mensaje se enviará después del número dado de segundos desde el momento actual.

send\_time - fecha y hora en el formato "%Y-%m-%d %H:%M:%S" (por ejemplo, "2024-10-16 13:15:59"). Esto establece la fecha y hora de envío del mensaje. Si se especifican tanto time\_shift como send\_time, time\_shift tendrá prioridad.

</details>

## Cómo trabajar con mensajes

### Parámetros de envío de mensajes

**attachment\_type** — puede ser: **imagen, video, enlace, archivo o audio**.\
Al enviar un archivo adjunto, el parámetro message es opcional.

**buttons** — define los botones que se adjuntarán al mensaje. El formato de los botones coincide con la configuración avanzada de botones.

Los botones pueden pasarse de dos maneras: con una pista para los mensajeros que no admiten botones, o sin ella.

Ejemplo del parámetro buttons:

```
"buttons": {
  "hint": "Este texto se mostrará en WhatsApp",
  "buttons": [
    {
      "type": "reply",
      "text": "Háblame de los servicios",
      "line": 0,
      "index_in_line": 0
    },
    {
      "type": "reply",
      "text": "Precios de los servicios",
      "line": 0,
      "index_in_line": 1
    },
    {
      "type": "reply",
      "text": "Contactos",
      "line": 1,
      "index_in_line": 0
    },
    {
      "type": "reply",
      "text": "Enviar una solicitud",
      "line": 1,
      "index_in_line": 1
    }
  ]
}
```

### Enviar un mensaje a un cliente

<details>

<summary><mark style="color:verde;">POST</mark>  https://chatter.mavibot.ai/api/#{api_key}/message</summary>

URL de la solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/message>

Este método puede usarse para enviar mensajes de notificación. El parámetro message es obligatorio, a menos que estés enviando un archivo. Si estás enviando un archivo, el texto es opcional.

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

Ruta

api key\* - token de acceso

Cuerpo

message\_id - número de bloque para el envío\
message - texto del mensaje\
client\_id - ID del cliente en el generador\
attachment\_type - tipo de visualización del archivo. Requerido si se proporciona attachment\_url.\
attachment\_url - URL del archivo\
buttons - botones

time\_shift - número. Si se especifica, el mensaje se enviará después del número dado de segundos desde el momento actual.

send\_time - fecha y hora en el formato "%Y-%m-%d %H:%M:%S" (por ejemplo, "2024-10-16 13:15:59"). Esto establece la fecha y hora de envío del mensaje. Si se especifican tanto time\_shift como send\_time, time\_shift tendrá prioridad.

```
import requests
import json

# Enviar un mensaje de texto
params = {"message": "some_text", "client_id": "25554"}
token = 'b551e18c8b8e86bea6f14f38de3f5cc3c31ba1edb4d8'
url = f'https://chatter.mavibot.ai/api/{token}/message'
requests.post(url, json=params)

# Enviar un archivo adjunto
params = {
    "message": "some message",
    "client_id": "1234565",
    "attachment_type": "video/image/file",
    "attachment_url": "https://qwreqw"
}
token = 'b551e18c8b8e86bea6f14f38de3f5cc3c31ba1edb4d8'
url = f'https://chatter.mavibot.ai/api/{token}/message'
requests.post(url, json=params)

# En 'attachment_type', especifica 'video', 'image' o 'file'
# según el tipo de archivo adjunto: video, imagen o documento.
```

</details>

### Enviar un mensaje en WhatsApp

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.salebot.pro/api/&#x3C;api_key>/whatsapp_message</summary>

URL de solicitud: <https://chatter.mavibot.pro/api/\\>\<api\_key>/whatsapp\_message

Te permite enviar un mensaje en nombre del bot conectado al número especificado. El whatsapp\_bot\_id debe tomarse de la sección "Mensajeros y chats". Cada cuenta de WhatsApp conectada recibe un identificador único por parte del generador.

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

Ruta

api key\* - token de acceso

Cuerpo

message\_id - número de bloque para el envío\
whatsapp\_bot\_id - ID del bot de WhatsApp desde el que debe enviarse el mensaje\
attachment\_url - URL del archivo\
attachment\_type - tipo de visualización del archivo. Requerido si se proporciona attachment\_url.\
message - texto del mensaje\
phone - número de teléfono del destinatario

time\_shift - número. Si se especifica, el mensaje se enviará después del número dado de segundos desde el momento actual.

send\_time - fecha y hora en el formato "%Y-%m-%d %H:%M:%S" (por ejemplo, "2024-10-16 13:15:59"). Esto establece la fecha y hora de envío del mensaje. Si se especifican tanto time\_shift como send\_time, time\_shift tendrá prioridad.

```
import requests
import json

params = {"message": "some_text", "phone": "79875146788"}
token = 'b551e18c8b8e86bea6f14f38de3f5cc3c31ba1edb4d8'
url = f'https://chatter.mavibot.ai/api/{token}/whatsapp_message'
requests.post(url, json=params)
```

</details>

### Envío masivo de mensajes

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/broadcast</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/broadcast>

Este método te permite iniciar una difusión.

Puedes usar <mark style="color:rojo;">**una de las siguientes opciones mutuamente excluyentes**</mark>:

1. parámetro list — la difusión se enviará a la lista especificada de clientes.
2. parámetro clients — la difusión se enviará a un array de IDs de clientes.
3. parámetros platform\_ids y group\_id — la difusión se enviará a un array de platform\_ids (IDs de mensajero) para el bot especificado (group\_id).
4. Si no se proporciona ninguno de los parámetros anteriores, la difusión no se enviará.

Parámetros requeridos: message (y/o attachment\_type y attachment\_url) o message\_id.

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

**list** - número de lista al que debe enviarse la difusión

clients - IDs de clientes en el generador

message - texto del mensaje

platform\_ids - IDs de destinatarios en el mensajero. Debe usarse junto con el parámetro required group\_id

group\_id - requerido solo al usar platform\_ids. Se ignora con otras opciones. Especifica el bot para enviar a los platform\_ids dados

attachment\_url - URL del archivo

attachment\_type - tipo de visualización del archivo. Requerido si se proporciona attachment\_url.

buttons - botones

message\_id - número de bloque para el envío

shift — número de segundos entre mensajes. El valor predeterminado es 0.2.

time\_shift - número. Si se especifica, el mensaje se enviará después del número dado de segundos desde el momento actual.

send\_time - fecha y hora en el formato "%Y-%m-%d %H:%M:%S" (por ejemplo, "2024-10-16 13:15:59"). Esto establece la fecha y hora de envío del mensaje. Si se especifican tanto time\_shift como send\_time, time\_shift tendrá prioridad.

```
import requests
import json

params = {"message": "some_text", "clients": ["5", "58", "110"]}
token = 'b551e18c8b8e86bea6f14f38de3f5cc3c31ba1edb4d8'
url = f'https://chatter.mavibot.ai/api/{token}/broadcast'
requests.post(url, json=params)
```

</details>

### Recuperar historial de mensajes

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/get_history?client_id=</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/get\\_history?client\\_id=>

El parámetro client\_id se puede obtener aquí. <mark style="color:rojo;">**ссылка**</mark>

Permiso de acceso al generar la clave: **"Permiso para leer la información del cliente"**.

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

limit - número de elementos en la respuesta. Predeterminado: 2000, máximo: 2000

start\_date - fecha de inicio del período de selección (requerido si se especifica stop\_date), formato: dd.mm.yyyy&#x20;

stop\_date - fecha de fin del período de selección (requerido si se especifica start\_date), formato: dd.mm.yyyy

```
{
  "status": "success",
  "result": [
    {
      "id": 104500,
      "answered": true,
      "client_replica": false,
      "message_id": 390,
      "message_from_outside": 0,
      "created_at": 1587895014,
      "text": "Meow meow",
      "attachments": {
        
      },
      "delivered": true,
      "error_message": "true",
      "manager_id": 12486,
      "manager_email": "example@mail.com"
    },
  ]
}
```

</details>

### Borrar historial de mensajes

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/clear_history?client_id=</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/clear\\_history?client\\_id=>

Elimina el historial del chat&#x20;

Permiso de acceso al generar una clave: **"Permiso para modificar/eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

```
import requests
import json


token = 'b551e18c8b8e86bea6f14f38de3f5cc3c31ba1edb4d8'
url = f'https://chatter.mavibot.ai/api/{token}/clear_history?client_id=85856'
requests.get(url)
```

</details>

## Cómo asignar clientes

### Asignar un cliente a un empleado

<details>

<summary><mark style="color:verde;">POST</mark>  https://chatter.mavibot.ai/api/#{api_key}/assign_to_user</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/assign\\_to\\_user>

Este método te permite asignar un cliente a un empleado. El parámetro email es opcional. Si no se proporciona ningún correo electrónico, el sistema asignará el cliente según su algoritmo.

Permiso de acceso al generar una clave: **"Permiso para modificar/eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente\
email - correo electrónico del empleado (opcional)

```
import requests
import json

params = {"client_id":"#{client_id}","email":"xxxxx@mail.ru"}
token = 'b551e18c8b8e86bea6f14f38de3f5cc3c31ba1edb4d8'
url = f'https://chatter.mavibot.ai/api/{token}/broadcast'
requests.post(url, json=params)
```

</details>

### Importar clientes al sistema

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/load_clients</summary>

URL de solicitud: <https://chatter.mavibot.pro/api/#{api\\_key}/load\\_clients>

Este método te permite importar clientes al sistema. Al cargar clientes de WhatsApp, puedes proporcionar el número en cualquier formato, con el final @s.whatsapp.net o sin él.

El ID del grupo (group\_id) se puede obtener AQUÍ a través de /api/\<api\_key>/connected\_channels. (Si client\_type = 13 (telefonía), entonces group\_id es una cadena vacía: ""). <mark style="color:rojo;">**ссылка**</mark>

El tipo de mensajero del que provino el cliente (client\_type) se puede encontrar AQUÍ. <mark style="color:rojo;">**ссылка**</mark>

Ejemplo: \[{"platform\_id":"79875555555","group\_id":34810,"client\_type":6}]

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

platform\_id - número de teléfono\
group\_id - ID del grupo\
client\_type - el tipo de mensajero del que provino un cliente

```
import requests
import json
token = 'b551e18c8b8e86bea6f14f38de3f5cc3c31ba1edb4d8'
url = f'https://chatter.mavibot.ai/api/{token}/load_clients'
params = [{ "platform_id": 274827917, "group_id": 169166236, "client_type":0},
{"platform_id":"79538550785@s.whatsapp.net", "group_id": "1hwF7lwEjv4SKYIGFhQnBw==", "client_type": 6}]
requests.post(url, json=params)
# si tiene éxito, la función devolverá un ID y un estado de adición para cada elemento
# ejemplo de respuesta
# {"status":"success","items":[{"platform_id":"700000000@s.whatsapp.net","group_id":"5kqchxwyvdvFZOsp80q2qw==","client_type":6,"status":"success","id":1469409}]}
```

</details>

### Añadir clientes a una lista

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/&#x3C;api_key>/add_to_list</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/\\>\<api\_key>/add\_to\_list

Añade clientes a una lista

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

list\_id - número de lista\
clients - array de IDs de clientes

Ejemplo:\
Parámetros JSON\
{"list\_id":1170282, "clients":\[411262772, 646410963]}

</details>

### Eliminar clientes de una lista

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/remove_from_list</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/remove\\_from\\_list>

Elimina clientes de una lista

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

list\_id - número de lista\
clients - array de números de clientes en el generador Mavibot (valores de client\_id)

</details>

### Obtener la lista de clientes

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/&#x3C;api_key>/get_clients</summary>

**URL de solicitud:** <https://chatter.mavibot.a/aipi/\\>\<api\_key>/get\_clients

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

offset – Desplazamiento desde el primer elemento

limit – Número de elementos en la respuesta / Predeterminado: 500, Máximo: 500

list – Número de lista

reverse – Indica ordenación inversa (del registro más antiguo al más nuevo). Este parámetro solo funciona si no se especifica la lista.

Devuelve el estado y un array de elementos.

```
{
"status":"success",
"clients":[{
    "id":44483,
    "platform_id":"146467928",
    "client_type":0,
    "name":null,
    "avatar":null,
    "message_id":null,
    "project_id":1,
    "created_at":1588248599,
    "updated_at":1588248599,
    "custom_answer":null,
    "tag":null,
    "group":"143414131",
    "operator_start_dialog":null
    }
]
}
```

</details>

### Obtener la lista de suscriptores del bot en cualquier mensajero

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/subscribers</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/subscribers>

Recupera información del cliente de un mensajero seleccionado.

*<mark style="color:rojo;">¡Nota!</mark>* Este método no devuelve variables.

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

page\
tag – Etiqueta especificada en la página de suscripción\
group – ID del grupo VK al que está vinculado el suscriptor\
date\_from – Suscrito después de esta fecha (timestamp)\
date\_to – Suscrito antes de esta fecha (timestamp)\
client\_type – ID del mensajero del que recuperar la lista de suscriptores. Si no se especifica, se devolverán todos los clientes

```
[  
  {
    "id": 44886,
    "tag": null,
    "created_at": 1609867984,
    "name": "John Smith",
    "vk_id": "146467928",
    "group": "155824294",
    "variables": null
  },
  {
    "id": 44889,
    "tag": null,
    "created_at": 1609867984,
    "name": "Anna Smith",
    "vk_id": "1609867984",
    "group": "155824294",
    "variables": {
      "utm_source": "some_value"
    }
  }
]
```

</details>

## Cómo trabajar con variables

### Asignar variables

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/save_variables</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/save\\_variables>

&#x20;<mark style="color:verde;">**!**</mark>**&#x20;**<mark style="color:$success;">**No se aplica ningún límite a esta solicitud.**</mark>&#x20;

Permite guardar variables tanto en el lead como en el cliente.&#x20;Por defecto, la solicitud de asignación de variables las agrega a las variables del trato.&#x20;Para actualizar las variables en el perfil del cliente, usa el prefijo client. Por ejemplo, para un teléfono: client.phone.

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Actualizar**: El parámetro clients permite asignar variables de forma masiva.\
Ejemplo: {"client\_id":49177759, "variables":{"client.phone":"88888888888"}}

**Ruta**

api key\* - token de acceso

**Cuerpo**

clients – Array de IDs de clientes para la asignación de variables

client\_id – ID del cliente

variables – Hash de variables (pares clave-valor)

```
import requests
import json

params = {"client_id": "25554", "variables": {"var_name": "var_value"}}
token = 'b551e18c8b8e86bea6f14f38de3f5cc3c31ba1edb4d8'
url = f'https://chatter.mavibot.ai/api/{token}/save_variables'
requests.post(url, json=params)
```

</details>

### Recuperar variables

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/get_variables?client_id=</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/get\\_variables?client\\_id=>

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

Ejemplo: <https://chatter.mavibot.ai/api/d3f31dabef80ddeb73d43938b4ef8bb0/get\\_variables?client\\_id=49177759>

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

```
import requests
import json


token = 'b551e18c8b8e86bea6f14f38de3f5cc3c31ba1edb4d8'
url = f'https://chatter.mavibot.ai/api/{token}/get_variables?client_id=85856'
requests.get(url)
```

</details>

## Cómo recuperar el ID del cliente (client\_id)

### Recuperar client\_id usando el valor platform\_id

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/find_client_id_by_platform_id</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/#{api\\_key}/find\\_client\\_id\\_by\\_platform\\_id>

Permiso de acceso al generar una clave: **"Permiso para modificar o eliminar la información del cliente"**.

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

platform\_ids - array de IDs en un mensajero\
group\_id - ID del bot

```
[{
"id":15099119,
"tag":null,
"created_at":1618815253,
"name":"ОЛЬГА БЕЛИК",
"avatar":"https:\\/\\/files.mavibot.ai\\/uploads\\/avatars\\/256865200.jpg",
"platform_id":"2568652",
"group":"Mavibotai_bot",
"variables":{"tg_username":"@belik"}},

{"id":21087377,
"tag":null,
"created_at":1626275893,
"name":"John Smith",
"avatar":"https:\\/\\/files.mavibot.ai\\/uploads\\/avatars\\/571830542.jpg",
"platform_id":"571830542",
"group":"Mavibotai_bot",
"variables":{"tg_username":"@jsmith61"}
}]
```

</details>

### Recuperar el ID del cliente del chat en línea

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/online_chat_client_id?recipient=</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/online\\_chat\\_client\\_id?recipient=>

Este método te permite integrar un sitio web con un chatbot. Por ejemplo, si un usuario visita una página de promoción, puedes enviar inmediatamente un mensaje en el chat con una oferta personalizada.

Permiso de acceso al generar una clave: "Permiso para modificar o eliminar la información del cliente".

<img src="/files/2e4cda7e7c3b98054280e4700a954f0f9d324006" alt="" data-size="original">

**Ruta**

api key\* - tique de acceso

**Cuerpo**

tag - etiqueta (etiqueta del cliente)\
name - nombre del cliente\
recipient - ID del diálogo en un sitio web

#### Dónde obtener el **recipient?**&#x20;

Puedes obtenerlo en el sitio web con el chat en línea de Mavibot.ai, usa JS para obtener la propiedad **MavibotAi.recipient\_id**.

<img src="/files/c7d9c3aa9e51b96fbf9e7c3fba3c52a6577e87b6" alt="" data-size="original">

```
{ "client_id": 36553 }
```

</details>

### Recuperar client\_id por número de WhatsApp

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/whatsapp_client_id?phone=</summary>

URL de solicitud: <https://chatter.mavibot.ai/api/#{api\\_key}/whatsapp\\_client\\_id?phone=>

Este método devuelve el ID del cliente para realizar solicitudes API si conoces el número de WhatsApp del cliente.\
Si no existe ningún cliente con ese número, el método devolverá un error 404.

Permiso de acceso al generar una clave: "Permiso para modificar o eliminar la información del cliente".

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

phone - número de teléfono\
group\_id - ID del bot

</details>

### Recuperar client\_id por número de teléfono

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/&#x3C;api_key>/find_client_id_by_phone?phone= </summary>

URL de solicitud: <https://chatter.mavibot.ai/api/\\>\<api\_key>/find\_client\_id\_by\_phone?phone=&#x20;

Este método devuelve el ID del cliente para realizar solicitudes API.

La búsqueda se realiza tanto entre clientes de WhatsApp como mediante variables.

Permiso de acceso al generar una clave: "Permiso para modificar o eliminar la información del cliente".

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

phone - número de teléfono

</details>

### Obtener client\_id por correo electrónico

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/find_client_id_by_email?email= </summary>

Solicitud URL: <https://chatter.mavibot.ai/api/#{api\\_key}/find\\_client\\_id\\_by\\_email?email=&#x20>;

Este método devuelve el ID del cliente para realizar solicitudes a la API.\
La búsqueda se realiza usando variables.

Permiso de acceso al generar una clave: "Permiso para modificar o eliminar la información del cliente".

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

email - correo electrónico para la búsqueda

</details>

### Obtener client\_id por valor de variable

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/find_client_id_by_var?var=&#x26;val=</summary>

Solicitud URL: <https://chatter.mavibot.ai/api/#{api\\_key}/find\\_client\\_id\\_by\\_var?var=\\&val=>

Este método devuelve el ID del cliente para realizar solicitudes API.

Permiso de acceso al generar la clave: "Permiso para leer la información del cliente"

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

**var -** nombre de la variable por la que buscar\
**val -** valor de la variable\
**group\_id -** ID del grupo\
**search\_in -** pasa el valor 'order' para buscar en variables de negocio; busca hasta tres variables para clientes de proyectos y devuelve una lista de clientes que tienen todas las variables especificadas.

</details>

### Obtener el ID del cliente creado más recientemente por valor de variable

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/find_latest_client_id_by_var?var=&#x26;val=</summary>

Solicitud URL: <https://chatter.mavibot.ai/api/#{api\\_key}/find\\_latest\\_client\\_id\\_by\\_var> ?var=\&val=

Este método devuelve el ID del cliente creado más recientemente para realizar solicitudes a la API. Busca tanto en variables del cliente como del negocio.

Permiso de acceso al generar la clave: "Permiso para leer la información del cliente"

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

**var -** nombre de la variable por la que buscar\
**val -** valor de la variable

</details>

### Obtener una lista de valores client\_id por valor de variable

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/find_all_client_id_by_var?var=&#x26;val=</summary>

Solicitud URL: <https://chatter.mavibot.ai/api/#{api\\_key}/find\\_all\\_client\\_id\\_by\\_var?var=\\&val=>

Este método devuelve una lista de IDs de cliente que tienen la variable especificada con el valor especificado.

Permiso de acceso al generar la clave: "Permiso para leer la información del cliente"

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

**var -** nombre de la variable por la que buscar\
**val -** valor de la variable

```
{
    // Respuesta
}
```

</details>

### Obtener una lista de valores client\_id basados en múltiples valores de variables

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/find_all_client_id_by_several_vars?var=val</summary>

Solicitud URL: <https://chatter.mavibot.ai/api/#{api\\_key}/find\\_all\\_client\\_id\\_by\\_several\\_vars?var=val>

Permiso de acceso al generar la clave: "Permiso para leer la información del cliente".

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

variable1 - Valor1

variable2 - Valor2

variable3 - Valor3

```
{
 "status":"success","client_ids":[93891114]
}
```

</details>

### Buscar por variables

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/find_clients</summary>

Solicitud URL: <https://chatter.mavibot.ai/api/#{api\\_key}/find\\_clients>

Este método busca por variables y devuelve una lista de IDs de cliente que cumplen las condiciones de la consulta.

De forma predeterminada, la búsqueda se realiza en variables del cliente (recomendado): {"q": {"result": "ok", "var": "home", "var": "60"}} – el cliente debe tener todas las variables especificadas

Buscar en variables de negocio; debe estar presente al menos una de las variables especificadas: {"q": {"result": "ok", "var": "home", "var": "60"}, "search\_in": "order", "include\_all": False}

El nombre de la variable del cliente es igual a uno de los valores de la lista: {"q": {"name": {"\_in": \["Joe", "Jane", "Donald"]}}}

El nombre de la variable del cliente NO es igual a ninguno de los valores de la lista: {"q": {"name": {"\_not\_in": \["Joe", "Jane", "Donald"]}}}

El nombre de la variable del cliente no es igual a "Joe": {"q": {"name": {"\_not": "Joe"}}}

**Nota: La comparación numérica solo funciona si todos los clientes tienen valores numéricos en la variable buscada. Si incluso un cliente tiene una cadena, la solicitud fallará.**

Permiso de acceso al generar la clave: "Permiso para leer la información del cliente"

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

Parámetros

**Ruta**

api key\* - token de acceso

**Cuerpo**

q – parámetro obligatorio, contiene las condiciones de la consulta para buscar variables

search\_in – especifica en las variables de qué entidad buscar; si no se proporciona, la búsqueda se realiza en las variables del cliente. Puede tomar el valor order.

include\_all – indica si todas las condiciones de q deben cumplirse;

False – si coincide al menos una condición, se selecciona la entidad

```
Éxito
{"status":"success","client_ids":[41203, 5622354, 785212]} 
{"status":"success","client_ids":[]} 
{"status": "fail", "message": "Se requiere el parámetro \"q\""} {"status": "fail", "message": "Error en el formato del parámetro"}
Error
{"status":"fail","message":"Algo salió mal"}
```

</details>

## Cómo trabajar con negocios

### Obtener el ID del negocio actual

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/get_current_order_id</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/#{api\\_key}/get\\_current\\_order\\_id>

Permiso de acceso al generar la clave: "Permiso para leer la información del CRM".

<img src="/files/22c33b5d701ad3cf537b6b16f7552773d6ce9611" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

```
Respuesta exitosa: {"status":"success","order_id":40632}, donde
order_id - ID del negocio actual
Respuesta de error: {"status":"client_not_found"}
```

</details>

### Obtener la lista de negocios

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/get_orders</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/#{api\\_key}/get\\_orders>

Permiso de acceso al generar la clave: "Permiso para leer la información del CRM"

<img src="/files/22c33b5d701ad3cf537b6b16f7552773d6ce9611" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

**order\_status** - etapa del negocio: \
0 - negocios activos\
1 - negocios exitosos\
2 - negocios no exitosos

```
Respuesta exitosa: {"status":"success","order_id":[40338,40340,40341]} 
Respuesta de error: {"status":"client_not_found"}
```

</details>

### Mover un negocio a la siguiente etapa en el embudo de Mavibot

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/move_order_to_next_state</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/#{api\\_key}/move\\_order\\_to\\_next\\_state>

Permiso de acceso al generar la clave: "Permiso para modificar/eliminar información del CRM"

<img src="/files/66d3aff16076551c3c8efa83ad652c938f965be1" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

**order\_id** - ID del negocio

```
Respuesta exitosa: 
{"status":"success","state_id":37}, donde 
state_id - ID de la etapa en MavibotCRM 
Respuesta de error: 
{"status":"client_not_found"}
```

</details>

### Obtener datos del negocio

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/get_order_vars</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/#{api\\_key}/get\\_order\\_vars>

Permiso de acceso al generar la clave: "Permiso para leer la información del CRM"

<img src="/files/22c33b5d701ad3cf537b6b16f7552773d6ce9611" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

**order\_id** - ID del negocio

variables - matriz de variables\
(formato:\["var\_name1", "var\_name2"])

```
Respuesta exitosa: 
{"status":"success","result":{"var_name1":"111","var_name2":"13.04.2023"}} 

Ejemplo de error: 
{"status":"client_not_found"}
```

</details>

### Añadir variables del negocio

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/set_order_vars</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/#{api\\_key}/set\\_order\\_vars>

Permiso de acceso al generar la clave: "Permiso para modificar/eliminar información del CRM"

<img src="/files/66d3aff16076551c3c8efa83ad652c938f965be1" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

**order\_id** - ID del negocio

variables - Un diccionario de variables (la clave es el nombre de la variable y el valor es lo que debe guardarse en esa variable)\
(formato:{"var\_name": "var\_velue"})

```
Respuesta exitosa: {"status":"success"} 
Respuesta de error: {"status":"order 12345 not found"}
```

</details>

### Crear un negocio

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/create_order</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/#{api\\_key}/create\\_order>

Permiso de acceso al generar la clave: "Permiso para modificar/eliminar información del CRM"

<img src="/files/66d3aff16076551c3c8efa83ad652c938f965be1" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

name - nombre del negocio

description - descripción del negocio

budget - monto del negocio

Debe especificar uno de los siguientes parámetros en la solicitud: client\_id, email o phone.\
Si se proporcionan varios parámetros, solo se usará uno. El orden de prioridad es: client\_id > phone > email.\
Si se proporciona phone o email y no existe ningún cliente con ese número de teléfono o correo electrónico, se creará un nuevo cliente.

```
Respuesta exitosa: {"status":"success","order_id":40654}, 
donde order_id es el ID del nuevo negocio activo.
Respuesta de error: {"status":"client_not_found"}
```

</details>

### Mover un negocio a una etapa en MavibotCRM

<details>

<summary><mark style="color:verde;">POST</mark> https://chatter.mavibot.ai/api/#{api_key}/set_order_state</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/#{api\\_key}/set\\_order\\_state>

Permiso de acceso al generar la clave: "Permiso para modificar/eliminar información del CRM"

<img src="/files/66d3aff16076551c3c8efa83ad652c938f965be1" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

state\_id - el número de etapa al que debe moverse el negocio del cliente

</details>

### Obtener el ID de la etapa del embudo en Mavibot CRM

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/get_order_state</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/#{api\\_key}/get\\_order\\_state>

Permiso de acceso al generar la clave: "Permiso para leer la información del CRM"

<img src="/files/22c33b5d701ad3cf537b6b16f7552773d6ce9611" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

**Cuerpo**

client\_id - ID del cliente

state\_id - ID del negocio (si no se especifica, el método devolverá el ID de la etapa del negocio actual)

```
Ejemplo de una respuesta exitosa:
{'status': 'success', 'state_id': 123456}

Ejemplo de una respuesta no exitosa:
{'status': 'order not found'}
```

</details>

## ¿Qué otras capacidades están disponibles?

### Verificar si un número de teléfono tiene WhatsApp

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/#{api_key}/check_whatsapp</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/#{api\\_key}/check\\_whatsapp>

**Para usar este método, WhatsApp debe estar conectado a Mavibot.**

Permiso de acceso al generar una clave: "Permiso para modificar o eliminar la información del cliente".

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

Se puede llamar usando GET o POST.\
El número de teléfono puede proporcionarse en cualquier formato.

**Ruta**

api key\* - token de acceso

**Cuerpo**

phone - número de teléfono a verificar

</details>

### Obtener la lista de mensajeros conectados al proyecto

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/&#x3C;api_key>/connected_channels</summary>

Solicitud URL: <https://chatter.mavibot.ai/api/\\>\<api\_key>/connected\_channels

Permiso de acceso al generar una clave: "Permiso para modificar o eliminar la información del cliente".

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

La función devuelve el parámetro group\_id para cada mensajero, que debe usarse al importar clientes.

Para WhatsApp, también devuelve un **status** campo, que puede tener los siguientes valores:<br>

**NOT\_STARTED = 0**\
**STARTED = 1**\
**ASLEEP = 2**\
**STOPPED = 3**

**Ruta**

api key\* - token de acceso

```
{'project_id': 1, 
'viber': [{
        'id': 14, 
        'uri': 'mavibotstage', 
        'name': 'mavibotstage', 
        'enabled': true,
        'group_id': 11}], 
'facebook': [], 
'telegram': [{
        'id': 23, 
        'short_name': 'bulls_vs_bears_bot', 
        'name': 'bulls_vs_bears_bot', 
        'enabled': true,
        'group_id': 'bulls_vs_bears_bot'}], 
'whatsapp': [], 
'avito': [], 
'ok': [], 
'vkontakte': [{
        'id': 33, 
        'group': '143414131',
        'group_id': '143414131'}]
}
```

</details>

### Obtener la lista de bloques del flujo del bot

<details>

<summary><mark style="color:azul;">GET</mark> https://chatter.mavibot.ai/api/&#x3C;api_key>/get_messages</summary>

**URL de solicitud:** <https://chatter.mavibot.ai/api/\\>\<api\_key>/get\_messages

Permiso de acceso al generar una clave: "Permiso para modificar o eliminar la información del cliente".

<img src="/files/696d0f1c393e697da2d0ca7c71b36291fd0e2acb" alt="" data-size="original">

**Ruta**

api key\* - token de acceso

</details>

### Obtener datos anidados del cliente

<details>

<summary>delimiter</summary>

Para obtener client\_id y/o el número de teléfono del cliente a partir de diccionarios anidados (no en el primer nivel), use el parámetro delimiter.

Añada lo siguiente a la URL de su solicitud:

?delimiter=1\&delimiter\_value\_client\_id={key1}1{key2}\&delimiter\_value\_phone={key1}1{key2}&#x20;

donde:

?delimiter=1 – el valor del delimitador que separa las claves {key1}1{key2}1{key3}

delimiter\_value\_client\_id={key1}1{key2} – para obtener el ID del cliente

delimiter\_value\_phone={key1}1{key2} – para obtener el número de teléfono del cliente

{key1}, {key2}, … – claves que contienen los valores (pueden incluir cualquier carácter excepto el delimitador). Puede tener un número ilimitado de claves:\
?delimiter=1\&delimiter\_value\_client\_id={key1}1{key2}1{key3}1{key4}1{key5}1{key6}. \
**Las claves se pasan sin llaves.**

Use el delimitador entre las claves. Por ejemplo, si delimiter=2, entonces {key1}2{key2}2{key3}; si delimiter=5, entonces {key1}5{key2}5{key3}. Asegúrese de que la clave no contenga el carácter delimitador.

Ejemplo:

<https://chatter.mavibot.a/aipi/\\>\<api\_key>/callback<mark style="color:amarillo;">**?delimiter=1\&delimiter\_value\_client\_id={key1}1{key2}\&delimiter\_value\_phone={key1}1{key2}**</mark>&#x20;

También puede obtener solo el ID o solo el número de teléfono:&#x20;

<https://chatter.salebot.pro/api/\\>\<api\_key>/callback<mark style="color:verde;">**?delimiter=1\&delimiter\_value\_client\_id={key1}1{key2} -**</mark> solo ID del cliente;

<https://chatter.salebot.pro/api/\\>\<api\_key>/callback<mark style="color:verde;">**?delimiter=1delimiter\_value\_phone={key1}1{key2}**</mark> - solo número de teléfono;

Métodos de la API:

1. Iniciar bot: <https://chatter.mavibotbot.ai/api/\\>\<api\_key>/callback
2. Iniciar bot por número de WhatsApp: <https://chatter.mavibotbot.ai/api/\\>\<api\_key>/whatsapp\_callback
3. Iniciar bot por ID de Telegram: <https://chatter.mavibotbot.ai/api/\\>\<api\_key>/tg\_callback
4. Enviar mensaje de callback al cliente por correo electrónico: <https://chatter.mavibotbot.ai/api/\\>\<api\_key>/email\_callback
5. Enviar mensaje al cliente: <https://chatter.mavibotbot.ai/api/\\>\<api\_key>/message
6. Enviar mensaje de WhatsApp: <https://chatter.mavibotbot.ai/api/\\>\<api\_key>/whatsapp\_message
7. Mensajería masiva: <https://chatter.mavibotbot.ai/api/\\>\<api\_key>/broadcast
8. Asignar variables: <https://chatter.mavibotbot.ai/api/\\>\<api\_key>/save\_variables   \\

</details>

{% hint style="success" %}
Si necesita métodos adicionales, póngase en contacto con el soporte.
{% 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/trabajar-con-la-api/constructor-de-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.
