> For the complete documentation index, see [llms.txt](https://help.maxonline.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.maxonline.ru/instrukcii-dlya-leadtex/botdzhety/kalendar/manual.md).

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

## Добавить в сценарий блок HTTP-запрос

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

## **Настройки блока HTTP-запрос**

<figure><img src="/files/xubhtDvN9rETbyJ4VWH4" alt="" width="534"><figcaption><p>Блок HTTP-запрос</p></figcaption></figure>

Копируйте фрагменты ниже и вставляйте в настройках своего блока HTTP-запрос.

### **URL**

```url
https://maxonline.ru/botjet/Calendar/v5.1/
```

Вы можете встретить в инструкциях ссылки с окончанием v1÷v4. Это старые  версии. \
[Чем отличаются версии ботжета "Календарь"](/instrukcii-dlya-leadtex/botdzhety/kalendar/versii-botdzheta-kalendar.md)

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

#### **Метод :** "POST".

#### **Заголовки** : нет

### **Body**

*x-www-form-urlencoded*

#### **Параметры запроса**

<figure><img src="/files/1mbhsF4PoYks7vB9BJcA" alt="" width="423"><figcaption></figcaption></figure>

{% hint style="info" %}
Важно точно прописать имена параметров запроса (левая колонка) и имена переменных - значений параметров (правая колонка).
{% endhint %}

<table data-full-width="true"><thead><tr><th width="160">key</th><th width="233">value</th><th width="96" align="center">Обязат.</th><th>Описание </th></tr></thead><tbody><tr><td><strong>token</strong></td><td>token из BotFather в Telegram<br><br>или <br><br>Токен для бота в MAX из <a href="https://business.max.ru/self/#/chat-bots">https://business.max.ru/self/#/chat-bots</a> </td><td align="center"><mark style="color:red;">да</mark></td><td><strong>Telegram:</strong><br><em>API token из BotFather</em>. <br><strong>MAX:</strong><br>Токен для чат-бота с платформы MAX для партнеров.<br><em>На картинке ниже указана глобальная переменная {{ token }}, в которой сохраняется API</em> <em>token из BotFather или Токен с платформы MAX в зависимости от того, где используете.</em></td></tr><tr><td><strong>chat_id</strong></td><td><strong>{{ telegram_id }}</strong> для Telegram,<br><strong>{{ max_id }}</strong> для MAX</td><td align="center"><mark style="color:red;">да</mark></td><td>ID <em>контакта в</em> Telegram или MAX (пользователя чат-бота). Используется глобальная константа <br>{{ telegram_id }} или <br>{{ max_id }}</td></tr><tr><td><strong>command</strong></td><td>{{$calendar_command}}</td><td align="center"><mark style="color:red;">да</mark></td><td><em>Управляющая команда</em>. Используется локальная переменная {{$calendar_command}}. Переменная получает свое значение в графе "Записать ответ в пользовательскую переменную". Удаляется после каждого запроса.</td></tr><tr><td><strong>messid</strong></td><td>{{$calendar_message_id}}</td><td align="center"><mark style="color:red;">да</mark></td><td><em>ID сообщения</em>. Используется локальная переменная {{$calendar_message_id}}. Переменная получает свое значение в графе "Записать ответ json в переменные". Удаляется после выбора конкретной даты в календаре.</td></tr><tr><td><strong>hidepast</strong></td><td>1</td><td align="center"><mark style="color:green;">нет</mark></td><td><em>Скрыть прошлое</em>. Если добавлен и равен 1, запрещает показ прошедших дней, месяцев и годов. Кнопки прошедших дней будут пустыми и нажатие не приведет к действию.</td></tr><tr><td><strong>hidres</strong></td><td>1</td><td align="center"><mark style="color:green;">нет</mark></td><td><em>Скрыть результат</em>. Если добавлен и равен 1, отключает вывод сообщения о выбранной дате после нажатия на кнопку дня. Сообщение с календарем исчезнет и произойдет переход в блок сценария, ID которого указан в JavaScript-коде</td></tr><tr><td><strong>text</strong></td><td>&#x3C;текстовое сообщение><br><em><mark style="color:orange;">Например: "Выбери дату брони"</mark></em></td><td align="center"><mark style="color:green;">нет</mark></td><td><em>Свое сообщение перед календарем</em>. Если параметр не добавлен, то перед календарем будет показано стандартное сообщение: "2025 г. - выбери день:"</td></tr><tr><td><strong>setdate</strong></td><td>31.12.2023</td><td align="center"><mark style="color:green;">нет</mark></td><td><p><em>Задать дату, на которой должен открыться Календарь</em>. <br>Дата должна быть в формате ДД.ММ.ГГГГ, например 31.12.2025. Можно подставить переменную, в которой сохранена дата.</p><p>Календарь покажет месяц, в котором находится заданная дата.</p></td></tr><tr><td><strong>lang</strong></td><td>en | ru</td><td align="center"><mark style="color:green;">нет</mark></td><td><em>Вывести календарь на английском.</em><br>Если lang не указан или его значение "ru", календарь будет на русском.<br>Другие языки не поддерживаются.</td></tr><tr><td><strong>opendates</strong></td><td>json-строка со списком дат</td><td align="center"><mark style="color:green;">нет</mark></td><td><em>Поставить метку ":" рядом с датами, указанными в json-строке.</em><br><a href="#vid-json-stroki-dlya-parametra-opendates"><em>Вид json-строки для пометки дат</em></a></td></tr><tr><td><strong>messenger</strong></td><td>telegram | max</td><td align="center"><mark style="color:green;">нет |</mark> <mark style="color:red;">да</mark> </td><td><em>Из какого мессенджера вызывается ботжет "Календарь"</em>: Telegram или MAX. Для Telegram параметр можно пропустить. Для MAX указывать обязательно.</td></tr></tbody></table>

#### Вид JSON-строки для параметра "**opendates**"&#x20;

Json-строка должна содержать ключ "date" и значение даты в формате "ДД.ММ.ГГГГ", которую нужно пометить.&#x20;

```json
[
    {
      "date": "10.12.2024"
    },
    {
      "date": "11.12.2024"
    }
]
```

Json-строка может содержать другие элементы "ключ": "значение" внутри объектов { }. Это не влияет на работу ботжета. **Важно:** **обязательно должно быть поле с ключом "date" и значением в виде даты.**

Одинаковые значения поля "date" могут встречаться в нескольких объектах { }. Это не влияет на работу ботжета. Если определенная дата встречается в одном объекте { }, или в нескольких, она будет помечена в календаре.

### **Timeout**

по-умолчанию

### Отправлять в запросе данные контакта

❌ выключить

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

{% hint style="warning" %}
Настраивать только для версий **v1 ÷ v5**. \
ВАЖНО! Начиная с версии v5.1 ВЫключить и соотношение переменных не настраивать❗
{% endhint %}

✅ включить / ❌ выключить (для v5.1)

### Соотношение переменных&#x20;

```
result.message_id ➡ calendar_message_id
```

<figure><img src="/files/ZoVGCe5yi0A0Nl8rjleS" alt="" width="424"><figcaption></figcaption></figure>

### **Обработать ответ с помощь JavaScript** &#x20;

✅ включить

#### Скопировать и вставить код:

{% code overflow="wrap" fullWidth="false" %}

```javascript
var nextBlock=0,jsCommand=getContactVariable("calendar_command");jsCommand&&jsCommand.match(/^\d{2}\.\d{2}\.\d{4}$/)&&(setContactVariable("calendar_Date",jsCommand),goToBlock(nextBlock),deleteContactVariable("calendar_command"),deleteContactVariable("calendar_message_id"),deleteContactVariable("opendates"));var r=response.data.result;r&&void 0!==r.message_id&&setContactVariable("calendar_message_id",r.message_id);r&&r.body&&void 0!==r.body.mid&&setContactVariable("calendar_message_id",r.body.mid);deleteContactVariable("calendar_command");
```

{% endcode %}

<figure><img src="/files/sk8GShRQZkqa5KImSi4C" alt="" width="410"><figcaption><p>JavaScript</p></figcaption></figure>

{% hint style="info" %}
После вставки код будет в одну строку - это нормально.
{% endhint %}

### **Записать ответ в пользовательскую переменную**&#x20;

✅ включить

**Имя переменной** :&#x20;

```
calendar_command
```

{% hint style="info" %}
☝ должно совпадать с именем переменной в параметре "command" раздела "Body".
{% endhint %}

### **Повторный вопрос**&#x20;

✅ включить

<figure><img src="/files/C9nWMT4WgyBp49R3EDC0" alt="" width="425"><figcaption></figcaption></figure>

## **Переход на блок сценария после выбора даты**

<figure><img src="/files/m3d5Z8oc7hxVXiLtuwWW" alt="" width="563"><figcaption><p>Переход на следующий блок сценария</p></figcaption></figure>

1. Открой настройки блока сценария, которому должно быть передано управление после выбора даты в Календаре.
2. В самом низу панели настроек блока есть "ID ....". (смотри картинку ☝)
3. Скопируй цифры после ID. **Только цифры!**
4. В коде JavaScript найди в первой фразе "`var nextBlock=0`" вместо `0` вставь скопированный ID блока.

<figure><img src="/files/sk8GShRQZkqa5KImSi4C" alt="" width="410"><figcaption><p>Вставь в JavaScript ID блока сценария, который должен отработать после выбора даты</p></figcaption></figure>

> ❗ **Важно. От блока HTTP-запрос не должно идти связей к следующим по сценарию блокам.**

***Настройка ботджета "Календарь" завершена.***

{% content-ref url="/pages/1JBP8UT05jkeYMV4mzqC" %}
[Поддержка](/support.md)
{% endcontent-ref %}
