December 21, 2022

Реализация купонной системы в боте

Промокод на 10 бесплатных дней в проекте salebot: asxaba1

Мой чат-бот вакансий - https://t.me/infobizaa_bot

Эта статься основана из комбинации 3 статьей в документации salebot

Жду в своем телеграм канале, там много подобной полезной инфы https://t.me/asxabal

и логика купонной системы состоит из двух шагов

  1. Выдача купона
  2. Проверка купона, который скинул пользователь чат-боту

Начнем с выдачи купона (шаг 1)

Для начала нам нужно создать обычный qr-код (Генерация QR-кода
- https://docs.salebot.pro/osobye-vozmozhnosti/generaciya-qr-koda\)

можно прочитать по ссылке выше или тут

Для начала нам нужно сперва сгенерировать api ключ сейлбота

в настройках проекта

Дальше создаем блок

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

URL запроса - https://store.salebot.pro/function/qrcode_generator

Сохраняемые значения:

status->status;
qr_image_url->qr_image_url

сама картинка qr-кода сохраняется тут в переменную qr_image_url и эту переменную(картинку) будем использовать для генерации купона

JSON параметры:

{"text_for_qr":"#{Промокод}","api_key":"ваш апи ключ сейлбота"}

И в поле "Калькулятор" вводим такое значение:

Промокод = 'promo' + '#{client_id}' + random(100,10000)

тут client_id используется, чтобы промокод был максимально уникальным

если вы считаете, что он недостаточно будет уникальным, можно спокойно добавлять свои какие-то данные

Дальше создаем блок и стрелку 0 секунд

и чуть не забыл, нам нужно еще подготовить гугл таблицы для приема нужных данных

Создаем таблицы и вводим такие данные

Купон
Статус
% скидки
Срок годности
Как тут

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

И все, таблицы есть - продолжаем 👌

Настраиваем уже саму выдачу купона

если информации из этой статьи не хватит - можно дополнительно посмотреть про выдачу картинок тут (Персонализированные изображение
- https://docs.salebot.pro/kak-sdelat/personalizirovannye-izobrazheniya )

Шаг 1. Регистрируем на сервисе niftyimages

Когда зарегистрировались, вас встретит такая картина

Тут нужно выбрать "Personalized Image"

Дальше будет примерно такая картина

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

Выбираем раздел "Marketing" и там выбираем "кавбойский" шаблон

У вас все будет выглядеть вот так:

Тут у нас есть самое важное - аватарка

и именно в эту аватарку мы будем передавать картинку qr-код

Справа есть слои и нужно убрать лишнее

Нажимаем на ... (три точки) и нажимаем на корзинку

После

Нажимаем на "Image Settings" слева сверху

и потом там нажимаем на "Change Background Image"

Change Background Image

ну и закидываем свой фон

Теперь все выглядит примерно так

Теперь нужно убрать закругление для фото

Нажимаем на картинку и двигаем ползунок к 0

Дальше по идее нам нужен какой-то красивый текст, который дает понять, что это КУПОН, а не какая-та стрёмная картинка с qr-кодом

Нажав сюда, можно добавлять текст

Еще будет круто, если сделать так, чтобы выводилось имя пользователя

Нажимаем вот сюда "Merge Tag Layer"

Выбираем [name]

И уже редактируем отображаемый текст

Если вы введете свое имя в пункте Design Value, то там тестово будет отображаться ваше имя

И все! Шаблонная картинка готова, что теперь?

Нажимаем на "Save", называем как-то

и после этого, платформа показывает нам примерно такое

Нам нужна именно та часть, которая находится в ковычках ""

и сохраняем это значение, можно для начала в заметках записать, чтобы заново не проходить путь с этой картинкой

Возвращаемся в сейлбот

В созданном втором блоке настраиваем POST-json запрос в гугл таблицы где будут храниться данные промокодов

URL запроса:

https://store.salebot.pro/function/gsheets

JSON параметры:

{"id": "id_гугл_таблиц", "mapping":{"a":"#{Промокод}", "b":"Не активирован", "d":"#{current_date + 30}", "c":"5"}}

Здесь мы сохраняем данные выданного купона

и в гугл таблицах данные будут отображаться примерно так

И дальше вспоминаем нашу ссылку, которую достали из сервиса niftyimages

и эту ссылку ставим в том же блоке во вложении

НО, не забываем в ссылку ставить свои переменные

Пример:

https://img1.niftyimages.com/cudh/1n7r/8w8i?name=#{имя}&profile=#{qr_image_url}

обязательно должна быть в ссылке переменная для qr-кода

profile=#{qr_image_url} (как в ссылке примера)

и сохраняем блок :D

Проверяем то что настроили

Все работает! Если что-то не работает, одна из причин возможно, что подписка премиум закончилась

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

Настраиваем чтение купона

Примерно так будет выглядеть структура в сейлботе

Дополнительно можно почитать тут - Распознавания штрихкода на фотографии - https://docs.salebot.pro/osobye-vozmozhnosti/funkciya-dlya-raspoznavaniya-shtrikhkoda-na-fotografii

Для начала, просим пользователя скинуть фотку промокода

Настройки в стрелки пустые

дальше в следующем блоке будут такие настройки

Тип зароса -

POST-json

URL запроса

https://store.salebot.pro/function/cv2barcode

JSON параметры

{"photo":"#{attachments}","api_key":"апи_ключ_проекта_сейлбот"}

Сохраняемые значения

barcode -> barcode;
status -> status

в этом блоке, бот будет считывать qr-код с картинки

и если есть qr-код то status будет 1 (если статус будет 0, то это означает, что человек скинул какую-то левую картинку, а не нужную нам с qr-кодом)

и данные с qr-кода сохранятся в переменную barcode

Дальше создаем блок и в настройках стрелки ставить 0 или -1 секунд задержку

Теперь насчет настроек во втором блоке

Тип запроса

POST-json

URL запроса

https://store.salebot.pro/function/findcell

Сохраняемые значения:

data -> Ответ;
data|0 -> Ячейка1;
data|1 -> Ячейка2;
data|2 -> Ячейка3;
data|3 -> Ячейка4;
cell_number|row -> Строка;
cell_number|col -> Столбец;
status -> status

JSON параметры

{"id": "id_гугл_таблиц", "find": "#{barcode}", "col": 1, "return": 0}

в этом блоке идет поиск самого промокода в гугл таблице и если есть, то выводятся все данные, связанные с этим промокодом

А если нет такого промокода, то status будет 0 и с помощью этого можно проверять скинули нам фигну или реальный промокод

Вот тут эта проверка и осуществляется, если промокод существует, то проверки идут дальше, а если не существует, то сразу пользователю говорим, что такой код не рабочий

Вот настройка в этой стрелке, когда status будет равен 0

Настройки в стрелке когда status равен 1

Дальше идет проверка, активирован или не активирован промокод

Ставим тут обычный пустой блок

и разветвление

Рассмотрим случай если промокод уже был активирован

Ставим такие настройки в стрелке и отправляем в блок, где говорим пользователю, что промокод уже активирован

А теперь рассмотрим случай, когда промокод еще не был активирован

Настройки стрелки выглядят вот так

и отправляем в блок, чтобы проверить, не истёк ли срок годности промокода

И в блоке находится такой код

interval = if("#{current_date}" <= "#{Ячейка4}", "True", "False")

Тут мы проверяем с помощью if

меньше или равно заданной дате купона

если наша дата меньше чем дата купона, то это означает, что купон еще рабочий и можно активировать

Если срок годности истек. То есть текущая дата будет больше указанной даты для промокода, то в interval сохраняется значение "False"

И тут как раз идет проверка, что сохранилось в переменную interval

"#{interval}" != "True"

Если срок годности истек, то у interval будет значение "False" и соответственно "False" не равен "True" и эта стрелка успешно активируется

и пользователю выводится, что срок годности истек

А когда купон еще действителен и можно активировать, то активируется стрелка "#{interval}" == "True"

и в блоке находятся такие настройки

Пишем пользователю такое сообщение:

Код активирован!
Ваша скидка - #{sale}% на весь заказ ✅

Тип запроса-

POST-json

URL запроса

https://store.salebot.pro/function/gsheets

JSON параметры

{"id": "id_гугл_таблиц", "write":{"b#{Строка}":"Активирован"}}

и в калькуляторе сохраняем скидку

sale = #{Ячейка3}

с помощью такого запроса, в гугл таблице статус купона поменяется на "Активирован"

Поздравляю! Вы успешно все настроили

Жду в своем телеграм канале, там много подобной полезной инфы https://t.me/asxabal