# Функции калькулятора для курсов

## Регистрация на курс

register\_customer\_on\_course(tariff\_id, email, email\_notification, period, reregistration)

<table><thead><tr><th width="239.15234375">Параметры</th><th></th></tr></thead><tbody><tr><td><strong>!</strong> <strong>tariff_id</strong></td><td>обязательный параметр, ID тарифного плана. Вы можете скопировать его в строке браузера в настройках тарифного плана.</td></tr><tr><td><strong>! email</strong></td><td>обязательный параметр, адрес электронной почты клиента. Вы можете указать конкретное значение или переменную, в которой записан email клиента.</td></tr><tr><td><strong>email_notification</strong></td><td>необязательный параметр, отправляет студенту email-сообщение о его регистрации на курс, если он включен.</td></tr><tr><td><strong>period</strong> </td><td><p>необязательный параметр, ограничение по времени действия тарифного плана. Поддерживаются следующие форматы даты: %d.%m.%Y %H:%M или %d.%m.%Y Пример:</p><p><code>period = '15.08.2023 11:00'</code></p></td></tr><tr><td>reregistration</td><td>необязательный параметр, со значениями True или False. Этот параметр необязателен и указывается, если нужно повторно зарегистрировать студентов на тот же курс и тарифный план.</td></tr><tr><td>purchase_price</td><td>необязательный параметр. Позволяет указать стоимость курса, если клиент оплатил доступ к нему через бота. Если вы не укажете его, будет использована стоимость указанного тарифного плана. Это будет полезно, если клиент оплачивает доступ к курсу через бота по цене, отличающейся от стоимости указанного тарифного плана.</td></tr></tbody></table>

Пример: register\_customer\_on\_course(123, email, 1, "", True)

{% hint style="info" %}
Чтобы клиенты получали письма, передайте 1 в параметр **email\_notification.**

**Если вы не передадите 1, письма клиента не будут получены!**
{% endhint %}

## Как предоставить доступ к курсу через Telegram Web App?

Для этого укажите функцию в Блоке Калькулятор

**`access_course_from_webapp(text, button_label)`**\
Во время использования функции студент авторизуется в Telegram и получает доступ к курсу. Для дальнейшего обучения студенту не нужно вводить логин и пароль, так как авторизация уже выполнена.

Параметры функции:

**`text`** - это текст сообщения, которое получит клиент. Параметр можно указать в переменной, записав его в поле Калькулятора до вызова функции, либо указать в самой функции в кавычках.

**`button_label`** - это текст на кнопке Web App. Вы можете указать параметр либо в переменной, либо в самой функции. Во втором случае параметр записывается в кавычках.

{% hint style="warning" %} <mark style="color:красный;">Актуально ТОЛЬКО для работы с Telegram-ботом.</mark>
{% endhint %}

На скриншоте ниже показан пример использования функции.\
На первом шаге мы регистрируем клиента на курс, затем используем функцию access\_course\_com\_webapp, чтобы предоставить доступ к онлайн-продукту. &#x20;

Результат выполнения функции:

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

Эта кнопка открывает страницу с курсами/тарифами, которые есть у студента.

> Если клиент не связан с аккаунтом студента, функция возвращает 'client not attached to customer'.
>
> Чтобы создать такую связь, нужно просто записаться на курс через бота.

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

## Как выдать доступ к курсу через бота

### register\_customer\_on\_course()

Для этого укажите функцию в Блоке Калькулятор

**register\_customer\_on\_course(tariff\_id, email, email\_notification, period)**

| Обязательные параметры                                                                                                                                                             | Необязательные параметры                                                                                                                                                                                         |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:красный;">**!**</mark> **tariff\_id** - ID тарифного плана. Вы можете скопировать его в строке браузера в настройках тарифного плана.                           | **email\_notification** - Этот параметр отправляет студенту email-сообщение о его регистрации на курс, если он включен.                                                                                          |
| <mark style="color:красный;">**!**</mark>**&#x20;email** - адрес электронной почты клиента. Вы можете указать конкретное значение или переменную, в которой записан email клиента. | <p><strong>period</strong> - ограничение по времени действия тарифного плана. Поддерживаются следующие форматы даты: %d.%m.%Y %H:%M или %d.%m.%Y <br>Пример:</p><p> <code>period = '15.08.2023 11:00'</code></p> |

{% hint style="danger" %}
Чтобы клиенты получали письма, нужно передать 1 в параметр **email\_notification.**&#x20;

**Если вы** <mark style="color:красный;">не передадите 1,</mark> **то письма клиента&#x20;**<mark style="color:красный;">**не будут получены!**</mark>
{% endhint %}

Присвойте функцию переменной.&#x20;

После выполнения в переменную будет записан один из ответов:

**клиент уже на тарифе** - если тарифный план уже есть или доступ закрыт вручную

**wrong\_tariff\_id** - указан неверный id

**tariff\_added** - тарифный план был добавлен студенту

Пример:

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

## Как проверить наличие доступа к курсу

### has\_customer\_tariff(tariff\_id)

Для этого укажите функцию в Блоке Калькулятор **has\_customer\_tariff(tariff\_id, email)**<br>

| Обязательные параметры                                                                                                                                                                | Необязательные параметры                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:красный;">**!**</mark> **tariff\_id** - ID тарифного плана. Вы можете скопировать его в строке браузера в настройках тарифного плана или в разделе Тарифные планы. | **email** - необязательный параметр. Передайте этот параметр, чтобы проверить, записан ли клиент на курс с указанным адресом электронной почты. |

После выполнения функция возвращает True или False.

{% hint style="danger" %}
Возможные ответы функции в случае ошибок:

**wrong tariff\_id** - передано неверное значение **tariff\_id**

**customer not found** - пользователь не зарегистрирован как студент.
{% endhint %}

## Как зарегистрировать клиента на платформе БЕЗ предоставления доступа к курсу

### register\_customer(email)

Для этого укажите функцию в Блоке Калькулятор **register\_customer(email)**&#x20;

| Параметры функции                                   | Описание                         |
| --------------------------------------------------- | -------------------------------- |
| <mark style="color:красный;">**!**</mark> **email** | адрес электронной почты клиента. |

Вы можете указать переменную в функции или значения параметров. Чтобы указать переменную, напишите ее имя без кавычек и синтаксических символов, решеток и фигурных скобок. Чтобы указать конкретное значение, укажите адрес электронной почты клиента в кавычках.

> Рекомендуется присвоить функции переменную, чтобы вы могли видеть результат выполнения функции и работать с ним. Пример на скриншоте ниже: имя переменной задается перед знаком равно, далее идут функция и параметр в скобках.

После успешного выполнения функции в переменную будет записан ответ:\
**customer created**

## Как проверить доступ к курсу и временные ограничения?

Для этого укажите функцию в Блоке Калькулятор **has\_customer\_tariff\_with\_date(tariff\_id, email),** чтобы проверить наличие доступа к курсу по email (возвращает подробный ответ о наличии доступа и временных ограничениях).

&#x20;Параметры функции:

| Обязательный параметр                                                                                                                                                                 | Необязательный параметр              |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| <mark style="color:красный;">**!**</mark> **tariff\_id** - ID тарифного плана. Вы можете скопировать его в строке браузера в настройках тарифного плана или в разделе Тарифные планы. | **email** - необязательный параметр. |

Ответ будет:

* студент записан и есть ограничение по времени доступа: Доступ есть до 2023-09-28 22:00:00&#x20;
* студент записан, ограничений нет: Доступ без ограничений по времени&#x20;
* студент не записан: Нет доступа к этому тарифу

{% hint style="danger" %}
**Возможные ответы функции в случае ошибок:**

**wrong tariff\_id** - передано неверное значение **tariff\_id**

**customer not found** -пользователь не зарегистрирован как студент.
{% endhint %}

## Как удалить доступ к курсу студента через бота&#x20;

### del\_customer\_from\_course(**course\_id, email**)

Для этого укажите функцию в Блоке Калькулятор  **del\_customer\_from\_course(course\_id, email)**

| Параметры                                                     | Описание                        |
| ------------------------------------------------------------- | ------------------------------- |
| <mark style="color:красный;">**!**</mark>**&#x20;tariff\_id** | ID тарифного плана              |
| <mark style="color:красный;">**!**</mark>**&#x20;email**      | адрес электронной почты клиента |

## Как проверить, посетил ли студент вебинар&#x20;

### customer\_was\_on\_translation()

Доступ к курсу нужно предоставить в боте.

Для этого есть функция [register\_customer\_on\_course()](https://docs.salebot.pro/onlain-kursy/sozdanie-kursov/chat-bot-dlya-onlain-kursa#kak-vydat-dostup-k-kursu-cherez-bot-register_customer_on_course) и [access\_course\_from\_webapp()](https://docs.salebot.pro/onlain-kursy/sozdanie-kursov/chat-bot-dlya-onlain-kursa#kak-vydat-dostup-k-kursu-cherez-web-app-telegramm)

Чтобы проверить, посещал студент вебинар или нет, укажите функцию в Блоке Калькулятор customer\_was\_on\_translation(translation\_guid, email, after\_start\_time)

| Обязательные параметры                                                                                                                                                                    | Необязательный параметр                                                        |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| <p><mark style="color:красный;"><strong>!</strong></mark> translation\_guid - ID трансляции. Скопируйте значение поля </p><p><em>Название находится в ссылке настроек трансляции</em></p> | after\_start\_time - время начала трансляции в формате: '2023-04-18 13:30:00'. |
| <mark style="color:красный;">**!**</mark> email - адрес электронной почты студента                                                                                                        |                                                                                |

{% hint style="warning" %}
**Обратите внимание!** Имя переменной может быть любым, удобным и понятным вам. В случае ошибки в написании параметров функции в переменную будет записано сообщение: wrong translation\_guid

В этом случае рекомендуем проверить параметры функции и протестировать их еще раз. Чтобы получить значение длительности пребывания на вебинаре из переменной в Калькуляторе, можно воспользоваться функцией работы с массивами и словарями. ссылка/ссылка [массивами](https://docs.salebot.pro/peremennye-1/rabota-s-massivami-i-slovaryami/rabota-s-massivami#kak-poluchit-element-massiva) и [словарями](https://docs.salebot.pro/peremennye-1/rabota-s-massivami-i-slovaryami/rabota-so-slovaryami#kak-poluchit-znachenie-slovarya-po-klyuchu).

Пример настроек в Блоке Калькулятор:

time\_spent1 = answer2\[0]\['time\_spent']
{% endhint %}

## Как найти имя студента, привязанное к боту?

Бывают случаи, когда студенты могут быть привязаны к онлайн-чату личного кабинета студента, а также те, кто привязан к мессенджеру и пишет вашим менеджерам через бота. Чтобы корректно выдавать именные сертификаты о прохождении курса в боте и не искать имя студента в списке, есть функция:

get\_customer\_name() - возвращает имя студента, связанного с клиентом.

Функция без параметров.

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

Возвращает имя студента, которое студент указал при регистрации на курс, или имя студента из его личного кабинета.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/ru/lms/kak-prodavat-kursy/prodazha-kursov-v-chat-bote/funkcii-kalkulyatora-dlya-kursov.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.
