# Инструкция по настройке

Для использования ботжета необходимо добавить в сценарий блок **HTTP-запрос**&#x20;

<div data-with-frame="true"><figure><img src="https://content.gitbook.com/content/cCcX8wIGBNYzX0rzbJuo/blobs/eRunnaTk7TkrzN2PhvmM/image.png" alt=""><figcaption></figcaption></figure></div>

и настроить его.

{% hint style="info" %}
Копируйте фрагменты ниже и вставляйте в настройках своего блока HTTP-запрос.
{% endhint %}

### URL запроса

```
https://maxonline.ru/botjet/listview/v1/
```

### Метод

Выберите метод **POST**.

### Заголовки

Заголовки указываеть не нужно.

***

### Фрагмент внутреннего списка Leadtex

<div data-with-frame="true"><figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2FSplZHneKo1EFrxxneZ39%2F%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0.png?alt=media&#x26;token=cd59899a-8bd3-4750-ae81-d57447850821" alt=""><figcaption></figcaption></figure></div>

Имена полей списка: *'date', 'time', 'name', 'phone' и другие* используются для параметров запроса: **'pat', 'order\_by', 'filters'.**

***

### Body

Выбрать в списке: "x-www-form-urlencoded".

Вам необходимо передать следующие обязательные и опциональные параметры.

<div data-with-frame="true"><figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2Fu8sOCawByXqXfsFfIiHs%2F%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%BE%D0%B2.png?alt=media&#x26;token=8147abce-0341-462e-8169-e6302a9c0041" alt="" width="419"><figcaption></figcaption></figure></div>

### Обязательные параметры:

<table data-full-width="true"><thead><tr><th width="139.20001220703125">key</th><th width="206.4000244140625">value</th><th>Описание</th></tr></thead><tbody><tr><td><code>token</code></td><td><code>token</code> из BotFather</td><td>Удобнее сохранить токен бота в глобальную переменную, например "token", и подставить в поле value имя переменной вместо самого токена.</td></tr><tr><td><code>api_token</code></td><td><em>Например:</em> <code>uE4QuGKfEbg0PCRboX3...</code></td><td>Ключ API вашего аккаунта из настроек Leadtex. Также удобнее предварительно сохранить его в глобальной переменной.</td></tr><tr><td><code>schema_id</code></td><td><em>Например:</em><br><code>65da06530c1ded47120e64b2</code><br></td><td>ID списка в Leadtex, откуда брать данные.<br><a href="../chastye-voprosy#list_id-leadtex">Где взять ID списка Leadtex</a></td></tr><tr><td><code>chat_id</code></td><td><code>{{ telegram_id }}</code></td><td>ID чата пользователя (обычно используется константа <code>{{telegram_id}}</code>).</td></tr><tr><td><code>cmd</code></td><td><code>{{ $cmd }}</code>  </td><td>Передает действие пользователя при навигации по списку, например: листание списка. Действие пользователя сохраняется в локальную переменную <code>$cmd</code> . См. раздел <a href="#dopolnitelno">Дополнительно</a>.</td></tr></tbody></table>

### Опциональные параметры (настройки отображения):

<table data-full-width="true"><thead><tr><th width="195.4000244140625">key</th><th>value</th><th>Описание</th></tr></thead><tbody><tr><td><code>text</code></td><td>Например:<br>Выберите запись 👇<br>Выберите товар:</td><td>Текст, который будет отображаться над списком. Поддерживает HTML.</td></tr><tr><td><code>rows_num</code></td><td><em>На выбор:</em> 1, 2, 5, 10</td><td>Количество записей на одной странице (по умолчанию 10).<br><em>Другие значения этого параметра могут работать некорректно.</em></td></tr><tr><td><code>pat</code></td><td><p>{date} - {time}</p><p>{date} - {time} | тел. +{phone}</p></td><td>Шаблон вывода одной записи. Названия полей из списка Leadtex указываются в фигурных скобках <code>{}</code>.</td></tr><tr><td><code>order_by</code></td><td><p>dateu</p><p>dateu,desc</p></td><td>Сортировка записей по полю <code>имя поля</code>.<br>Если после запятой указать <code>,desc</code>  - сортировка от большего к меньшему.<br>(согласно документации API Leadtex)<br><br></td></tr><tr><td><code>filters</code></td><td>'dateu>=01.01.2025' <br>'dateu>=01.01.2025,phone=79505533008'</td><td><p>Строка фильтрации записей. <br>Подробнее: <a href="chastye-voprosy">Правила формирования параметра </a></p><p><a href="chastye-voprosy"><code>filters</code> </a>.</p></td></tr></tbody></table>

### Отправка параметров через JSON-строку (Body) для POST-запроса

Параметры запроса к ботжету можно отправить единой json-строкой. Для этого режим нужно переключить на "json".

<div data-with-frame="true"><figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2FuDJW49t2oWNNWo5OgBW8%2Fjson-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0%20%D1%81%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0%D0%BC%D0%B8.png?alt=media&#x26;token=85e2f1a7-e7f3-41d7-aac9-a8b1cd5976db" alt="json-строка с параметрами запроса" width="419"><figcaption></figcaption></figure></div>

Пример json-строки (копируйте, вставляйте и заполняйте своими данными):

```json
{
  "token": "token вашего бота",
  "api_token": "ваш_api_token_leadtex",
  "schema_id": "идентификатор_списка",
  "chat_id": "{{telegram_id}}",
  "cmd": "{{ $cmd }}",
  "text": "📅 <b>Доступные записи:</b>",
  "rows_num": "5",
  "pat": "Дата: {date} | Время: {time}",
  "order_by": "dateu",
  "filters": "dateu>=01.12.2025"
}
```

***

<div data-with-frame="true"><figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2FHmr7sL0UGCypfIeJYGoE%2F%D0%9F%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D1%82%D0%B5%D0%BB%D0%B8%201.png?alt=media&#x26;token=84e67ff1-7e91-4e21-b64f-f4db626b79a1" alt="" width="414"><figcaption></figcaption></figure></div>

<table><thead><tr><th width="200.199951171875">Переключатель</th><th width="133">Статус</th><th>Примечан</th></tr></thead><tbody><tr><td>Отправлять в запросе данные контакта</td><td><mark style="color:red;">Выключить</mark></td><td>Обязательно выключить</td></tr><tr><td>Выводить тело ответа в чат</td><td><mark style="color:red;">Выключить</mark></td><td>Можно включить во время отладки</td></tr><tr><td>Записать код ответа в переменную</td><td><mark style="color:red;">Выключить</mark></td><td></td></tr></tbody></table>

***

### Записать ответ json в переменные

<div data-with-frame="true"><figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2FYyny8O6rDBVkizGZBZ8t%2F%D0%9E%D1%82%D0%B2%D0%B5%D1%82%20%D0%B2%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5.png?alt=media&#x26;token=eb742219-2d47-42c6-acc2-3bf17432e6b4" alt=""><figcaption></figcaption></figure></div>

<mark style="color:green;">Включить</mark>

Этот блок используется на конечном этапе работы ботжета когда пользователь **выбрал конкретную запись** (нажал на кнопку с данными). На этом этапе возвращается JSON-строка с данными одной выбранной записи Списка.

<div data-with-frame="true"><figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2FU7MWuGfWDPy3gl6qG5to%2Fjson%20%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8.png?alt=media&#x26;token=7fbad18b-56e2-4269-9790-996964ed1fac" alt="json-строка выбранной записи" width="472"><figcaption></figcaption></figure></div>

В разделе `data.0`  есть значения всех полей Списка для выбранной записи. Сохраняем значения нужных нам полей в локальные переменные: `date → date_order` , `time → time_order`.

{% hint style="info" %}
В процессе листания страниц списка в переменные ничего не сохранится, так как ботжет не возвращает ни одной записи.
{% endhint %}

***

### Обработать ответ с помощью JavaScript

<div data-with-frame="true"><figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2FfZmHB0f6nq80G8CLi6sJ%2F%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C%20%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20JavaScript.png?alt=media&#x26;token=9ef803e6-01e5-4b4c-a82c-9892affd4262" alt="Обработать ответ с помощью JavaScript" width="416"><figcaption></figcaption></figure></div>

<mark style="color:green;">Включить</mark>

Код JavaScript обрабатывает ответ ботжета, и в случае завершения его работы, передает управление следующему по сценарию блоку после HTTP-запрос. Также в локальной переменной `lv_status`  сохраняется причина завершения. См. раздел [Завершение работы ботжета "Списки"](#zavershenie-raboty-botzheta-spiski)

#### Код JavaScript (копируй и вставляй)

```javascript
// Получить переданную ранее команду из ответа сервера
var cmd_sent = response.data.meta.listview.cmd;

// передать команду для принятия решения о дальнеших действиях
switch (cmd_sent) {
  case 'cmd_finish':
    // удалить переменную для передачи команд пользователя
    deleteContactVariable("cmd");
    setContactVariable("lv_status", "finish");
    break;
  case 'cmd_cancel':
    deleteContactVariable("cmd");
    setContactVariable("lv_status", "cancel");
    break;
  case 'cmd_empty':
    deleteContactVariable("cmd");
    setContactVariable("lv_status", "empty");
    break;
  default:
    deleteContactVariable("cmd");
    disableContinue();
}
```

***

### Дополнительно

<div data-with-frame="true"><figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2Fn31d3fEgjkUUDvxbxor9%2F%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B0%20%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE.png?alt=media&#x26;token=05bd87c0-d730-42c8-a059-604480b60097" alt="" width="563"><figcaption></figcaption></figure></div>

<table><thead><tr><th width="201.7999267578125">Переключатель</th><th width="129.800048828125">Статус</th><th>Примечание</th></tr></thead><tbody><tr><td>Запись ответа в пользовательскую переменную</td><td><mark style="color:green;">Включить</mark></td><td>Задать имя локальной переменной, в которой в ботжет передается действие пользователя: листание страниц, выбор количества записей на странице.<br>Например: <code>cmd</code> . Имя переменной может быть любым, важно правильно указать его в параметре запроса  <code>cmd</code>.</td></tr><tr><td>Повторный вопрос</td><td><mark style="color:green;">Включить</mark></td><td>Если выключен, список не реагирует на действия пользователя</td></tr></tbody></table>

***

### Завершение работы ботжета "Списки"

Когда ботжет возвращает одну из команд завершения, работа блока HTTP-запрос прерывается и управление передается следующему по сценарию блоку.

<div data-with-frame="true"><figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2F0JwK4DOaPpXKwSpDyQdD%2F%D0%9D%D0%B0%D0%B1%D0%BE%D1%80%20%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2%20%D0%B1%D0%BE%D1%82%D0%B6%D0%B5%D1%82%D0%B0%20%D0%A1%D0%BF%D0%B8%D1%81%D0%BA%D0%B8.png?alt=media&#x26;token=cfcab4d8-5b27-4e46-92d5-f93ddeb64dab" alt="Набор блоков ботжета Списки" width="563"><figcaption></figcaption></figure></div>

В момент завершения в переменной `lv_status`  сохраняется причина завершения. По значению этой переменной можно пустить сценарий по разным веткам при помощи блока "Переключатель".

1. Нажата кнопка "Отмена" - `$lv_status = "cancel"`,
2. Полученная выборка не содержит ни одной записи -  `$lv_status = "empty"`,
3. Нажата одна из кнопок списка -  `$lv_status = "finish"` .

***

### Примечания

* Для корректной работы убедитесь, что в переменных `token` и `api_token` нет лишних пробелов.
* Параметр `pat` очень мощен: он позволяет вам сверстать внешний вид кнопки с записью Списка, подставляя в шаблон имена полей. \
  \&#xNAN;*Не злоупотребляйте длинными шаблонами, строка может не уместиться полностью по ширине кнопки. Проверьте отображение кнопок на смартфоне.*

[Поддержка](https://help.maxonline.ru/support)
