Реферальная программа

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

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

С технической точки зрения, реферальная программа включают в себя несколько ключевых компонентов:

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

  2. База данных участников, реализованная с помощью интеграции Salebot и функционала Google-таблиц, куда вносится информация о приглашенных и приглашающих пользователях.

  3. Система учета рефералов, которая отслеживает действия, связанные с привлечением новых участников через реферальные ссылки. Система хранит данные обо всех рефералах: вы можете просмотреть, существует ли данный реферал в системе, как ранее приглашенный пользователь.

Настоятельно рекомендуем перед созданием схемы Чат-бота изучить раздел "Основы ботостроения на Salebot.pro", "Google-таблицы"

Реферальная система в Whatsapp

В функционал создаваемого бота будут входить блоки, состоящие из следующих компонентов:

Генерация реферальной ссылки

Создадим блок со вложенной ссылкой, которую бот будет направлять пользователю по запросу "ссылка". Для этого создайте блок схемы одним из двух способов:

  1. Двойным кликом по полю схемы конструктора:

  1. С помощью кнопки сохранить внизу экрана и выбором типа блока:

После чего в условии блока пропишите слово "Ссылка" с выбором соответствия "Игнорируя ошибки и неточности" (необходимо в случаях опечаток или иных ошибок в сообщении от пользователя):

Чтобы понимать от кого пришел пользователь, бот создаёт ссылку по шаблону: https://wa.me/(ваш номер телефона на котором подключен бот)?text=Вас%20порекомендовал%20#{phone}%20😌Здравствуйте

Рассмотрим подробнее шаблонную ссылку: https://wa.me/(ваш номер телефона, на котором подключен бот)?text=Вас%20порекомендовал%20#{phone}%20😌Здравствуйте, где

  1. Вместо скобок "(ваш номер телефона, на котором подключен бот)" -> соответствующий номер телефона;

  2. Вместо #{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