# Функции (API) в калькуляторе

{% hint style="warning" %}
API-функции доступны только на тарифах "Business" и "MaviBot AI".
{% endhint %}

## API MaviBot

<mark style="color:красный;">**ЛЕГЕНДА:**</mark>\ <mark style="color:красный;">**!**</mark> -Обязательные параметры

### Как отправить callback

#### **callback()**

{% hint style="danger" %}
Вы можете отправить callback только ДРУГОМУ клиенту.

НЕЛЬЗЯ отправить callback СЕБЕ!
{% endhint %}

<details>

<summary>Описание</summary>

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

Параметры:

<mark style="color:красный;">**!**</mark>**&#x20;client\_id** - идентификатор клиента

<mark style="color:красный;">**!**</mark>**&#x20;callback\_message** - текст callback-сообщения

</details>

<details>

<summary>Пример</summary>

Callback — это специальное системное сообщение, которое бот распознаёт как команду для запуска определённого действия. Это сообщение невидимо для пользователя и сохраняется только в профиле клиента для внутренней обработки.

Давайте отправим callback клиенту с client\_id=73704021

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

Далее мы задаём ответ на этот callback в блоке с условием.

</details>

<details>

<summary>Пример кода для копирования</summary>

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

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

</details>

### Как отправить callback в Telegram

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

<details>

<summary>Описание</summary>

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

Параметры:

<mark style="color:красный;">**!**</mark>**&#x20;platform\_id** -  идентификатор клиента Telegram

<mark style="color:красный;">**!**</mark>**&#x20;callback\_message** - текст callback-сообщения

&#x20;**group\_id** -  идентификатор Telegram-бота

**tg\_business -** для работы с бизнес-клиентами передаётся значение "1".

</details>

<details>

<summary>Пример</summary>

Это пример с обязательными параметрами:

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

Это пример с необязательными параметрами

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

</details>

<details>

<summary>Пример кода для копирования</summary>

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

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

</details>

### Как добавить редирект бота с тегом в ответ на кнопку callback?

<details>

<summary>Описание</summary>

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

Параметры: \ <mark style="color:красный;">**!**</mark>**&#x20;callback\_query\_id** - этот id позволяет определить человека, который нажал кнопку, и показать ему Alert-уведомление,\ <mark style="color:красный;">**!**</mark>**&#x20;url** - URL — указывается бот и параметр (выглядит так: t.me/your\_bot?start=XXXX, вместо your\_bot — имя бота)

</details>

### **Как отправить сообщение клиенту**

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

{% hint style="info" %}
Чтобы сохранить текст с переносами строк в переменную, задайте значение следующим образом:

`text = "Текст первой строки" + "\n" + "Текст второй строки" + "\n" +"Текст третьей строки"`
{% endhint %}

<details>

<summary>Описание</summary>

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

Параметры:\ <mark style="color:красный;">**!**</mark>**&#x20;client\_id** - идентификатор клиента\ <mark style="color:красный;">**!**</mark>**&#x20;text** - текст сообщения\
**message\_id** - ID блока. Если оставить поле текста пустым ("") и заполнить этот параметр, клиенту будет отправлен текст из указанного блока.

*Примечание: если вы передадите параметр message\_id в функцию message, блок всё равно будет полностью выполнен, а клиент, указанный в параметре client\_id, будет перемещён в блок, переданный в message\_id.*

\
**timeout** - задержка сообщения или время отложенной отправки. Вы можете использовать параметр timeout, чтобы задержать отправку сообщения:\
a) Задержка в секундах (до 3600 секунд). Если значение больше 3600, сообщение будет отправлено через час. Если значение отрицательное, сообщение будет отправлено немедленно. Пример: timeout = 50                                                                                                                 &#x20;

b) Конкретная дата и время в формате dd.mm.yyyy hh:mm, пример: timeout = '03.04.2022 15:00' . Если указана прошедшая дата, сообщение будет отправлено немедленно.

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

Параметры:\ <mark style="color:красный;">**!**</mark>**&#x20;platform\_id** -  идентификатор клиента в мессенджере\ <mark style="color:красный;">**!**</mark>**&#x20;text** - текст сообщения\
**client\_type -** тип мессенджера, необязательный параметр. Если он не указан, клиент будет найден в том же мессенджере, из которого бот отправляет сообщение. Если он указан, клиент будет найден среди базы данных указанного мессенджера. Вы можете найти типы мессенджеров [здесь.](/doc/ru/chatbot/functions/peremennye.md#how-to-work-with-variables)\
**message\_id** - ID блока. Если он указан, клиент получит сообщение из указанного блока, а не значение из параметра text.\
**timeout** - время отправки или задержка. Это аналогично одноимённому параметру функции message().\
**group\_id** - идентификатор бота

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

Параметры:\ <mark style="color:красный;">**!**</mark>**&#x20;phone**- номер телефона клиента, на котором зарегистрирован Whatsapp\ <mark style="color:красный;">**!**</mark>**&#x20;text** - текст сообщения\
**message\_id** - это ID блока. Если поле текста оставить пустым (''), и этот параметр задан, клиент получит содержимое сообщения из указанного блока.

{% hint style="info" %}
WhatsApp-бот нужно подключить к проекту.
{% endhint %}

</details>

<details>

<summary>Пример</summary>

Простой пример отправки сообщения по client\_id:

<div data-with-frame="true"><figure><img src="/files/7a4a2084ea2f7d624b67856267a06d86b421b840" alt="" width="563"><figcaption><p>Отправка сообщения по client_id</p></figcaption></figure></div>

Разные варианты отправки сообщения по client\_id:

<div data-with-frame="true"><figure><img src="/files/ac4847a80abeaa2c53fb14ce7d628cf10b268246" alt="" width="563"><figcaption><p>Разные варианты отправки сообщения </p></figcaption></figure></div>

Пример отправки сообщения через platform\_message():

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

</details>

<details>

<summary>Пример кода для копирования</summary>

```
/*Отправка сообщения по client_id*/
message(73704021, 'Текст сообщения для клиента')
/*Отправка сообщения по client_id с задержкой 30 секунд*/
message(73704021, 'Привет! Спасибо за сообщение..','',30)
/*Отправка сообщения из блока 3190 по client_id 03.04.2022 в 15:00*/
message(73704021, '',3190, '03.04.2022 3pm')

/*Отправка сообщения в Whatsapp*/
whatsapp_message('79999999999', 'Текст сообщения для клиента')
```

</details>

### Получение client\_id по значению platform\_id

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

<details>

<summary>Описание</summary>

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

После выполнения функция вернёт client\_id, если найден клиент, соответствующий указанным условиям; в противном случае она вернёт None.

<mark style="color:красный;">**!**</mark> **client\_type** - мессенджер. Для значения client\_type читайте [эту статью](/doc/ru/chatbot/functions/peremennye.md).&#x20;

<mark style="color:красный;">**!**</mark> **platform\_id** - ID клиента в указанном мессенджере.

**group**  - обязательный параметр, если подключено более одного бота-мессенджера.

{% hint style="warning" %}
Если в проекте подключено несколько мессенджеров одного типа, поиск будет выполняться по всем подключённым мессенджерам этого типа.

В этом случае мы рекомендуем передавать параметр group.
{% endhint %}

</details>

### Функция для get-запросов: requests\_get(url, answer\_type, headers, params, auth, proxy)&#x20;

<details>

<summary>Описание</summary>

<mark style="color:красный;">**!**</mark>**&#x20;url** - это ссылка, по которой выполняется запрос

**answer\_type**  — необязательный параметр, который определяет, что будет возвращено из ответа сервера: ('status' – возвращает код статуса ответа; 'json' – возвращает тело ответа в формате json; 'text' – возвращает необработанный текст ответа; любое другое значение (включая значение по умолчанию) возвращает ответ в формате: '{"status": status\_code, "data": data}')

**headers** - это необязательный параметр для передачи заголовков запроса,&#x20;

**params** - это *get* параметры запроса (могут также быть включены непосредственно в URL),

**auth** - это необязательный параметр, полезный для аутентификации API. Если вы не хотите использовать ни один необязательный параметр, но нужен следующий, передайте здесь 0.

**proxy** - это необязательный параметр; принимает одно значение: "de", которое направляет запрос через европейский IP-адрес.

</details>

### Функции для pos-запросов

<details>

<summary>Описание</summary>

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

<mark style="color:красный;">**!**</mark>**&#x20;url** - это ссылка, по которой выполняется запрос,

**answer\_type** — необязательный параметр, который определяет, что будет возвращено из ответа сервера: ('status' – возвращает код статуса ответа; 'json' – возвращает тело ответа в формате json; 'text' – возвращает необработанный текст ответа; любое другое значение (включая значение по умолчанию) возвращает ответ в формате: '{"status": status\_code, "data": data}')

**headers** - это необязательный параметр для передачи заголовков запроса

**data** - это необязательный параметр; представляет тело запроса, когда API не работает с json.

&#x20;**json\_data** - это необязательный параметр; также представляет тело запроса. Следует использовать только один из этих параметров за раз.

{% hint style="warning" %}
Обратите внимание: некоторые настройки заголовков могут блокировать отправку запроса с определённым типом тела.
{% endhint %}

**auth** - это необязательный параметр, полезный для аутентификации API. Если вы не хотите использовать ни один необязательный параметр, но нужен следующий, передайте здесь 0

**proxy** - это необязательный параметр; принимает одно значение: "de", которое направляет запрос через европейский IP-адрес.

</details>

### Функции для put-запросов

<details>

<summary>Описание</summary>

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

<mark style="color:красный;">**!**</mark>**&#x20;url** - это ссылка, по которой выполняется запрос

**answer\_type** — необязательный параметр, который определяет, что будет возвращено из ответа сервера: ('status' – возвращает код статуса ответа; 'json' – возвращает тело ответа в формате json; 'text' – возвращает необработанный текст ответа; любое другое значение (включая значение по умолчанию) возвращает ответ в формате: '{"status": status\_code, "data": data}')

**headers** - это необязательный параметр для передачи заголовков запроса

**data** - это необязательный параметр; представляет тело запроса, когда API не работает с json.

**auth** - это необязательный параметр, полезный для аутентификации API. Если вы не хотите использовать ни один необязательный параметр, но нужен следующий, передайте здесь 0

proxy - это необязательный параметр; принимает одно значение: "de", которое направляет запрос через европейский IP-адрес.

**data\_is\_json** это необязательный параметр.\
Если он задан, данные, переданные в `data` будут отправлены в формате JSON.\
Чтобы включить это, передайте `'1'`.

</details>

### Функции для patch-запросов

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

<details>

<summary>Описание</summary>

<mark style="color:красный;">**!**</mark>**&#x20;url** - это ссылка, по которой выполняется запрос

**answer\_type** — необязательный параметр, который определяет, что будет возвращено из ответа сервера: ('status' – возвращает код статуса ответа; 'json' – возвращает тело ответа в формате json; 'text' – возвращает необработанный текст ответа; любое другое значение (включая значение по умолчанию) возвращает ответ в формате: '{"status": status\_code, "data": data}')

**headers** - это необязательный параметр для передачи заголовков запроса

**data** - это необязательный параметр; представляет тело запроса, когда API не работает с json.

**auth** - это необязательный параметр, полезный для аутентификации API. Если вы не хотите использовать ни один необязательный параметр, но нужен следующий, передайте здесь 0

proxy - это необязательный параметр; принимает одно значение: "de", которое направляет запрос через европейский IP-адрес.

</details>

### Функции для delete-запросов

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

<details>

<summary>Описание</summary>

<mark style="color:красный;">**!**</mark>**&#x20;url** - это ссылка, по которой выполняется запрос

**answer\_type** — необязательный параметр, который определяет, что будет возвращено из ответа сервера: ('status' – возвращает код статуса ответа; 'json' – возвращает тело ответа в формате json; 'text' – возвращает необработанный текст ответа; любое другое значение (включая значение по умолчанию) возвращает ответ в формате: '{"status": status\_code, "data": data}')

**headers** - это необязательный параметр для передачи заголовков запроса

data - это необязательный параметр; представляет тело запроса, когда API не работает с json.

json\_data - это необязательный параметр и также может использоваться как тело запроса. Однако за один раз следует использовать только один вариант

auth - это необязательный параметр, полезный для аутентификации API. Если вы не хотите использовать ни один необязательный параметр, но нужен следующий, передайте здесь 0

proxy - это необязательный параметр; принимает одно значение: "de", которое направляет запрос через европейский IP-адрес.

</details>

### Функция для получения названия блока по его ID

<details>

<summary>Описание</summary>

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

<mark style="color:красный;">**!**</mark>**&#x20;block\_id** — идентификатор блока (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/ru/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.
