Реферальная программа
A реферальная программа — это система, которая вознаграждает клиентов или партнеров компании, предлагая стимулы или бонусы за привлечение новых участников.
С технической точки зрения реферальная программа включает несколько ключевых компонентов:
Пригласительную ссылку— уникальный идентификатор, который позволяет пользователям или клиентам приглашать других к участию в программе. Приглашающий может делиться этой ссылкой через различные каналы (например, в этой статье будет рассмотрено создание ссылок через бот WhatsApp, но ссылки реферальной программы можно распространять через любой мессенджер, который вы предпочитаете).
A базу данных участников, реализованную через интеграцию MaviBot и функциональности Google Sheets, где записывается информация как о приглашенных, так и о приглашающих пользователях.
A систему отслеживания рефералов которая отслеживает действия, связанные с привлечением новых участников по реферальным ссылкам. Система хранит данные обо всех рефералах, позволяя проверить, существует ли уже данный реферал в системе как ранее приглашенный пользователь.
Мы настоятельно рекомендуем ознакомиться с разделами «Основы построения ботов на Mavibot.ai» ссылка и «Google Sheets» ссылка перед созданием сценария вашего чат-бота.
Реферальная система в WhatsApp
Функциональность создаваемого бота будет включать блоки, состоящие из следующих компонентов:
генерация реферальной (партнерской) ссылки; ссылка
проверка, находится ли новый пользователь уже в базе данных; ссылка
уведомление приглашающего пользователя о новом реферале; ссылка
запись пользователей в базу данных; ссылка
запрос списка рефералов. ссылка
Генерация реферальной ссылки
Давайте создадим блок со встроенной ссылкой, которую бот отправит пользователю по команде «link». Для этого создайте новый блок в сценарии одним из двух способов:
Дважды щелкните по пустой области на холсте конструктора:

С помощью кнопки «Save» внизу экрана и выбрав тип блока:

После этого в условии блока введите слово «Link» и установите тип совпадения «Игнорировать опечатки и неточности» (это полезно в случае опечаток пользователя или других ошибок в сообщении):

Чтобы определить, кто пригласил пользователя, бот создает ссылку по следующему шаблону: https://wa.me/(ваш номер телефона, привязанный к боту)text=You%20were%20recommended%20by%20#{phone}%20😌Hello

Давайте подробнее рассмотрим шаблон ссылки: https://wa.me/(ваш номер телефона, привязанный к боту)?text=You%20were%20recommended%20by%20#{phone}%20😌Hello, где:
Замените скобки "(ваш номер телефона, привязанный к боту)" на соответствующий номер телефона;
#{phone} автоматически заменяется на номер телефона пользователя, который запросил свою партнерскую ссылку.
Мы отправляем сгенерированную ссылку не как текст блока, а как вложение — кликабельную ссылку с уведомлением (см. рис. 2 и рис. 3):
выберите вставку вложения
выберите тип — Link и вставьте его в поле 'Attachment URL':

В этом случае ссылка визуально будет отображаться сокращенной:
Давайте протестируем работу ссылки с помощью функции «Test Bot» .

Вот результат: ссылка перенаправляет пользователя в соответствующий чат мессенджера с вашим номером телефона:

Таким образом, вы успешно сгенерировали пригласительную ссылку, которую потенциальные пользователи могут использовать для доступа к чат-боту. Кроме того, при переходе по этой ссылке пользователь перенаправляется в окно чата с уже заполненным сообщением. (См. рис. 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 Request» в блоке, где нужно задать следующие значения параметров:

! URL функции: https://store.salebot.pro/function/findcell ссылка
! JSON параметры запроса:
{ "id": "your_table_id", "find": "text_to_search", "col": column_number_to_search_in, "return": column_number_to_return, "creds_path": "path_to_your_auth_credentials_file" }
Параметры ответа:
"status": "1" — значение найдено
"status": "0" — значение не найдено
"data" — найденное значение
"cell_number" — найденное расположение ячейки
Параметр return нужно установить в 0. { "id": "your_table_id", "find": "text_to_search", "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 Sheets». ссылка
Блок уведомления
Чтобы уведомить пользователя, который поделился реферальной ссылкой, о том, что новый клиент успешно перешел по ней, мы создадим отдельный блок. Для отправки уведомления о создании нового реферала используйте следующие параметры запроса (тип: 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": "your_table_id", "mapping": { "a": "#{variable}", "b": "#{another_variable}", "d": "plain text" } }
Если вы хотите записывать строки не на первый лист, добавьте параметр list_name в запрос:
{ "id": "your_table_id", "mapping": { "a": "plain text", "b": "#{variable}" }, "list_name": "SheetName" }
Параметры:
id — идентификатор таблицы*
a, b, c, d — названия столбцов
list_name — имя вашего листа (например, "Sheet2")
*Обязательно замените на фактический ID вашей таблицы.
Пример ответа: {"number_row":8}
Если запрос выполнится успешно, в ответе будет указан номер строки, который вы можете сохранить и использовать для дальнейших операций.
Просмотр списка рефералов
Давайте добавим в бота дополнительную команду, позволяющую пользователям просматривать список своих рефералов.
Чтобы найти все указанные значения в столбце, используйте функцию findcell с параметром "find_all". Это позволит найти все вхождения "find_all" значения в указанном столбце "col" и вернуть список уникальных значений из "return" столбца в виде строки.
! URL функции: https://store.salebot.pro/function/findcell ссылка
! Параметры JSON-запроса:
{ "id": "table_id", "find_all": "search_value", "list_name": "sheet_name", "col": "column_number_to_search_in", "return": "column_number_to_return_values_from", "find": "!" }

В сохраненных значениях укажите:
list → Список
quantity → Количество
Для пользователя отображайте сообщение: "Вы пригласили #{spisok}, всего ваших рефералов: #{quantity}"
В других мессенджерах реализовать такую реферальную систему еще проще, потому что данные приглашающего передаются как скрытый параметр при переходе по ссылке, поэтому новому пользователю не нужно отправлять сообщение вроде «Меня пригласил этот номер.»
Последнее обновление