Реферальная программа
В этой статье расскажем, как генерировать ссылку на реферальную программу, добавлять приглашенных пользователей в список рефералов и затем просматривать существующую базу
Реферальная программа - это механизм поощрения клиентов или партнеров компании, основанный на предложении вознаграждения или бонусов за привлечение новых участников.
С технической точки зрения, реферальная программа включают в себя несколько ключевых компонентов:
Приглашающая ссылка, то есть уникальный идентификатор, который позволяет пригласить других пользователей или клиентов для участия в программе. Пригласивший может распространять ссылку через различные каналы (например, в данной статье будет рассмотрена генерация ссылок через бота в WhatsApp, однако ссылки реферальных программ можно осуществлять с любого удобного вам мессенджера).
База данных участников, реализованная с помощью интеграции Salebot и функционала Google-таблиц, куда вносится информация о приглашенных и приглашающих пользователях.
Система учета рефералов, которая отслеживает действия, связанные с привлечением новых участников через реферальные ссылки. Система хранит данные обо всех рефералах: вы можете просмотреть, существует ли данный реферал в системе, как ранее приглашенный пользователь.
Настоятельно рекомендуем перед созданием схемы Чат-бота изучить раздел "Основы ботостроения на Salebot.pro", "Google-таблицы"
Реферальная система в Whatsapp
В функционал создаваемого бота будут входить блоки, состоящие из следующих компонентов:
Генерация реферальной ссылки
Создадим блок со вложенной ссылкой, которую бот будет направлять пользователю по запросу "ссылка". Для этого создайте блок схемы одним из двух способов:
Двойным кликом по полю схемы конструктора:
С помощью кнопки сохранить внизу экрана и выбором типа блока:
После чего в условии блока пропишите слово "Ссылка" с выбором соответствия "Игнорируя ошибки и неточности" (необходимо в случаях опечаток или иных ошибок в сообщении от пользователя):
Чтобы понимать от кого пришел пользователь, бот создаёт ссылку по шаблону: https://wa.me/(ваш номер телефона на котором подключен бот)?text=Вас%20порекомендовал%20#{phone}%20😌Здравствуйте
Рассмотрим подробнее шаблонную ссылку: https://wa.me/(ваш номер телефона, на котором подключен бот)?text=Вас%20порекомендовал%20#{phone}%20😌Здравствуйте, где
Вместо скобок "(ваш номер телефона, на котором подключен бот)" -> соответствующий номер телефона;
Вместо #{phone} автоматически подставляется номер телефона пользователя, который запросил свою партнерскую ссылку.
Сгенерированную ссылку мы отправляем не в тексте блока, а вложением -> ссылкой с уведомлением о клике (см. рис. 2 и рис. 3):
выберите вставку вложения
тип - ссылка и вставьте ее в поле 'URL вложения':
В таком случае визуально ссылка выглядит короткой:
Протестируем работоспособность ссылки через функцию "Протестировать бота":
Получаем результат: ссылка перенаправляет пользователя в необходимый месседжер в чат по вашему номеру телефона:
Таким образом, у вас получилось сгенерировать ссылку-приглашение, по которой потенциальные пользователи попадают в чат-бота. Помимо этого, при клике на данную ссылку, пользователь перенаправляется к окну чата с предварительно заполненным сообщением. (см. рис. 6)
Проверка пользователя
Использование функций и регулярных выражений в блоке
Команда проверки и записи в базу сработает только в том случае, если бот найдет номер телефона в полученном сообщении от пользователя. Поэтому необходимо разделить полученную фразу на составляющие.
Для этого существует функция splitter().
splitter(str, s, n) - для разделения строки на части. Функция возвращает массив элементов.
Параметры:
! str - исходная строка
! s - разделитель строки
n - максимальное количество элементов
Следующим шагом бот должен проверить, действительно ли набор цифр в строке представляет собой номер телефона. Для этого воспользуемся регулярным выражением следующего вида:
Либо: ^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$ -> номер телефона (любой)
Либо: ^((\+7|7|8)+([0-9]){10})$ -> номер телефона (только Россия)
Как работать с регулярными выражениями читайте в одноименной статье.
После того, как бот проверил, что набор цифр является именно номером телефона, сохраняем его из сообщения как переменную (например, #{reff}).
Проверка номера телефона пользователя, как реферала, в базе
Теперь необходимо проверить номер телефона пользователя, перешедшего по ссылке, не является ли он уже чьим-то рефералом (ранее приглашенным кем-то и записанным в нашу базу). Для этого в схеме создадим блок с функцией поиска по колонке.
Воспользуемся функцией поиска по колонке. Для этого в блоке нажмите на "Api-запрос", где необходимо выставить значения по параметру:
! URL-функции: https://store.salebot.pro/function/findcell
! JSON-параметры запроса:
{"id": "ид таблицы", "find": "текст для поиска", "col": номер колонки, "return": номер колонки,"creds_path": "путь к вашему файлу с данными для авторизации"}
Параметры ответа:
"status":"1" означает, что найдено значение, а "status":"0" - не найдено.
data - найденное значение;
cell_number - найденная ячейка.
Параметр return необходимо передать со значением 0. {"id": "ид таблицы", "find": "текст для поиска", "col": 2, "return": 0} Ответ: {"status":"1","data":{"0":"\u0441\u043e\u043b\u043d\u0446\u0435","1":"\u0440\u0430\u0441\u0441\u0432\u0435\u0442","2":"\u043a\u0440\u044b\u0448\u0430","3":"","4":"\u043d\u0435\u0431\u043e"},"cell_number":{"row":4,"col":1, "col_letter":"A"}} Разбор ответа:
data -> Ответ;
data|0 -> Ячейка1;
data|1 -> Ячейка2;
data|2 -> Ячейка3;
data|3 -> Ячейка4;
cell_number|row -> Строка;
cell_number|col -> Столбец
Какие функции еще доступны для таблиц читайте в статье "Google-таблицы".
Блок с уведомлением
Для уведомления пользователя, который направил соответствующую ссылку рефералу, о том, что клиент успешно прошел по этой ссылке, мы создадим специальный блок.
Для уведомления о создании нового реферала воспользуйтесь параметрами запроса (тип POST-json):
Запросы выполняются методом POST на URL: https://chatter.salebot.pro/api/{api_key}/{action}
Где: api_key - ключ доступа к API, который получается в настройках проекта (см. рис. 11).
При этом получить ключ доступа можно с использованием переменной #{api_key}. В ней хранится актуальный сгенерированный ключ доступа. Не забудьте перед использованием сгенерировать токен.
! URL запроса: https://chatter.salebot.pro/api/#{api_key}/whatsapp_message
Подробнее о функциях API-запросов написано здесь.
Внесение приглашенного и пригласившего пользователей в базу
Для этого воспользуемся построчной записью в определенные столбцы. Осуществляется с помощью функции mapping.
В таблице должна быть заполнена шапка (хотя бы одна ячейка в первой строке)
! URL функции: https://store.salebot.pro/function/gsheets
! JSON-Параметры запроса:
{"id": "ид таблицы", "mapping":{"a":"#{переменная}", "b": "#{еще}", "d":"просто текст"}}
Если вы хотите записывать строки не на первом листе, то надо добавить в запрос параметр list_name:
{"id": "ид таблицы", "mapping":{"a":"просто текст", "b": "#{переменная}"}, "list_name": "Название листа"}
Параметры:
id - идентификатор таблицы* a, b, c, d - это как раз имена столбцов list_name - название вашего листа (например, "Лист2")
Пример ответа: {"number_row":8}
Если проблем при выполнении запроса не возникло, то в ответ приходит номер строки, который можно сохранить и использовать для дальнейшей работы.
Просмотр списка рефералов
Добавим в бота дополнительную команду, позволяющую смотреть список своих рефералов.
Для нахождения всех заданных значений в колонке используйте функцию findcell с параметром 'find_all', при этом она найдет все значения параметра 'find_all' в колонке 'col' и выведет строкой список уникальных значений из колонки 'return'.
! URL функции: https://store.salebot.pro/function/findcell
! JSON-Параметры запроса:
{"id": "id таблицы", "find_all": "что ищем", "list_name": "название листа", "col": "номер колонки в которой ищем", "return": "номер колонки из которой возвращаем" , "find": "!"}
В сохраняемых значениях указываем:
spisok -> Список;
quantity -> количество
Для пользователя выводим: "От тебя пришло #{Список}, твои рефералы #{Количество}"
В остальных мессенджерах сделать такую реферальную систему еще проще, так как данные о пригласившем пользователе передаются скрытым параметром при переходе, и новому пользователю не нужно отправлять текст в виде “меня пригласил такой-то номер”.
Last updated