# Работа с промокодами

Вы можете передать промокод клиенту одним из двух способов:

1. Подготовьте список промокодов в Google Sheet, обучите Mavibot находить доступный код, передавать его клиенту, а затем отмечать его как выданный в таблице.&#x20;
2. Обучите Mavibot генерировать промокоды по определённым правилам, передайте код клиенту, а затем запишите его в таблицу.

Проверять действительность кодов можно с помощью Google Sheets и его API-запросов.

Подробнее об этих процессах читайте ниже:

* [Как проверить промокод из Google Sheets](#how-to-check-the-promo-code-from-google-sheets)&#x20;
* [Как выдать промокод из Google Sheets](#how-to-give-a-promo-code-from-google-sheets)&#x20;
* [Как сгенерировать промокод с помощью Salebot](#how-to-generate-a-promo-code-with-the-help-of-salebot)

## Как проверить промокод из Google Sheets

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

Подготовьте Google Sheet, в котором в одном столбце будет список ваших промокодов. Установите настройку доступа «Любой, у кого есть эта ссылка, может редактировать». Как это сделать, читайте в [эту статью](https://docs.salebot.ai/integrations/google-sheets)

Вот как работает функция: клиент вводит свой промокод в бота. Затем функция проверяет, существует ли код в указанном вами столбце. Если код найден, в соседнюю ячейку добавляется фраза «Promo code was used», и функция возвращает этот ответ:

`{“status”: ‘’0’’}`

Адрес функции: <https://store.mavibot.ai/function/check-promocode&#x20>;

Для проверки кода вам нужно отправить из блока следующие параметры:

`{"id":"1HfnHDbJYTGz68-3KWIcRISncTmdEn8v7Vf_OKvDMrOI", "promocode": "#{question}", "col_number": "1"}`

**id** — это ID вашей Google Sheet с промокодами. Вы можете найти его в URL вашего документа. Убедитесь, что настройки доступа к документу позволяют любому пользователю по ссылке редактировать его.

![](https://lh6.googleusercontent.com/cvcU-bsobIQ-uD5iqEzNsEbnTep8loKIyZrIlfPKkqUF7qTLewOTk8-L6RwUkXBlTGM8K_yQCn-jujDlBBuzH-_bIwhKvtOgRB-pkQnd5VpA108jCx75_UKlEV5mphSWkEsSwR5_7zrBwS9Sag)

Если промокоды находятся *на отдельном листе*, тогда нужно использовать параметр **list\_name**, в который нужно указать его название, например:

`{"id":"1HfnHDbJYTGz68-3KWIcRISncTmdEn8v7Vf_OKvDMrOI", "promocode": "#{question}", "col_number": "1", "list_name": "Sheet name"}`

Следующий параметр — это промокод, который использует клиент.

**col\_number** — номер столбца, в котором находятся коды

`{“status”: ‘’1’’}`— после этого использовать код во второй раз уже нельзя

Если функция не найдёт промокод в таблице или он уже был использован, она ответит

`{“status”: ‘’0’’}`

Если вы хотите понять, как это использовать и куда это вставить, посмотрите на скриншот ниже.

![](https://lh5.googleusercontent.com/WqtuqryusiRuwOBWKF80lAl2Q4HC5EfWZoSxDMw367AzRceNWRf01XyDVO6mfvIxAXan1-Ejzvg8iYl36yDUzfmdqP62nMNe1xqNAuZ-BjON9_F1oC7gsFBb2Ta_GZZyoWZy3tFKtmQzUv3OSA)

**#{custom\_answer}** — ответ сервера, указанный во вкладке "URL request".

Используйте эту переменную во вкладке ответа, чтобы увидеть её содержимое. Если всё настроено правильно, сохраните status->status, затем в стрелках под вкладкой «Variable for comparison» установите условия **"status == 0"** (сообщая пользователю, что код уже был использован) или **"status == 1"** (позволяя пользователю продолжить).

Пример показан ниже.

![](https://lh3.googleusercontent.com/IBr66uuikrvi9s4hR82FHYxdxVpsRqtNVysc8obCZQzjFxMThrTz0jsbHWdgMCrv6iP0fU_9axov9EhL9CMeiUtZVFqNUK8Hk22grZ_x3Tr4JPVqI5oAxQmca_da1D2fta03u3e7Qy9tAwig3g)

## Как выдать промокод из Google Sheets

Подготовьте таблицу, как показано на изображении ниже: промокоды в первом столбце, а слово "Available" — во втором. Настройте доступ на «Anyone on the Internet with this link can edit». Как это сделать, читайте в [эту статью](https://docs.salebot.ai/integrations/google-sheets)

![](https://lh5.googleusercontent.com/XkxdMscLWR-5FE8V2c53KehWDsbt7XP6TAxVuVRsHrxSKlFPeM8xEAgvIENjRxWS_Z2bU8KtxEIQkz6NgExRYSr6qWu207cGuybkb_kAwDg_J0RotfpPSKRCQ4z8w3lFVLClEW9oYNFPnikWww)

Вы получите ссылку, похожую на эту: <https://docs.google.com/spreadsheets/d/**1HfnHDbJYTGz68-3KWIcRISncTmdEn8v7Vf\\_OKvDMrOI**/edit?usp=sharing>

Жирный текст здесь — это ID вашей страницы. Он понадобится вам позже.

Создайте блок в Mavibot и вставьте в его настройки эти параметры:

Тип запроса: `POST-json`

URL request: `https://store.salebot.ai/function/findcell`

Stored values:

`data->Promo code;` \
`cell_number|row ->line;`

JSON parameters:

`{"id": "1HfnHDbJYTGz68-3KWIcRISncTmdEn8v7Vf_OKvDMrOI", "find": "Available", "col": 2, "return": 1}`

где вместо 1HfnHDbJYTGz68-3KWIcRISncTmdEn8v7Vf\_OKvDMrOI нужно указать свой ID страницы

![](https://lh5.googleusercontent.com/hr0fmr7F_klICs6FDm8ay1majH0R_GQ3EDsxvzFq-IWYJhP_DhvaoSKfGhr7O5aZSY0xUzC6YLb8pzcryhs7IK9J_4ACyjfeEAT_0PApcS27OXKP3QPfeSmcq_rTNLw9EIFA99NADl5QipPWLg)

Создайте блок ниже и нажмите на "Time settings" в настройках соединения. В открывшемся разделе, во вкладке **"Delay before answer"** введите -1, чтобы переход произошёл как можно быстрее.

В новом блоке задайте параметры, указанные ниже.

Чтобы показать клиенту его код, введите **#{Promo\_code}**

Тип запроса: `POST-json`

URL request: `https://store.mavibot.ai/function/gsheets`

JSON parameters:

`{"id": "1HfnHDbJYTGz68-3KWIcRISncTmdEn8v7Vf_OKvDMrOI", "write":{"b#{line}":"Used"}}` \
где вместо 1HfnHDbJYTGz68-3KWIcRISncTmdEn8v7Vf\_OKvDMrOI нужно указать свой ID страницы

![](https://lh3.googleusercontent.com/PtlosYtM_SMivssLQ1toFXIoerd7SenhhPtw_Doy-KDgB6G4Ycp3P02IO4LQyYqK8wiLbP_q7zL81wcguaIeHDSBQGVSk-HpXPMnmgnRvbs7thEsarKGaT5xIt3n4T979FEaHz52pvEikeCyfA)

## Как сгенерировать промокод с помощью Mavibot

Если промокод можно создать по определённым правилам, то вы можете сгенерировать его прямо в Mavibot и записать в Google Sheets для последующей проверки.

Для этого вам понадобятся переменные. Например, чтобы сгенерировать уникальный промокод, можно использовать переменную **#{client\_id}**— это переменная в Mavibot, которая показывает номер вашего клиента в системе.

В настройках блока Advanced -> Calculator пропишите: \
`Promocode = promo#{client_id}`&#x20;

Вставьте **#{Promo\_code}** в поле "Answer" \
У вас получится промокод promo1330882.

Если вы хотите добавить в свой код ещё больше *случайности* , тогда добавьте вызов функции **random()** \
`Promocode = 'promo' + '#{client_id}' + random(0,10)` \
В этом случае в конце добавляется 1 случайное число

Теперь давайте вставим его в нашу таблицу с кодами.

Сначала создайте новую пустую Google Sheet. Установите настройки доступа на "Anyone with the link can edit."\
Затем в ячейку A1 впишите Promo codes.

{% hint style="warning" %}
Если первая ячейка пустая, функция не будет работать. Нужно обязательно заполнить её!
{% endhint %}

Вы получите ссылку, похожую на эту:

<https://docs.google.com/spreadsheets/d/**1HfnHDbJYTGz68-3KWIcRISncTmdEn8v7Vf\\_OKvDMrOI**/edit?usp=sharing>

Жирный текст здесь — это ID вашей страницы. Он понадобится вам позже.

Теперь вернёмся в Mavibot и продолжим работу над вашим блоком с промокодом

Тип запроса: `POST-json`

URL request: `https://store.mavibot.ai/function/gsheets`

JSON parameters:

`{"id": "1sl15vKFjo5TFD98GnVjF3AlLtdhr85-AkEjoeJkgDxE", "mapping":{"a":"#{Promo_code}"}}`\
где вместо 1HfnHDbJYTGz68-3KWIcRISncTmdEn8v7Vf\_OKvDMrOI нужно указать свой ID страницы

У вас должно получиться что-то вроде этого:

![](https://lh4.googleusercontent.com/Eivmw4kvkhay9Mt7Lc8pZiby50doKFXS8QDuFR75JJwP2UKLAs3EDUuB4IoWG0h8nl3f9xXk4TtEzfqNhxNhtAF6DQVg7QHCDy9bZRrAi9N2HAnWVv6gByBr46p0IzKg0338chEt1cWplmhvKg)


---

# 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/osobye-vozmozhnosti/rabota-s-promokodami.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.
