Programa de referidos
Un programa de referidos es un sistema que recompensa a los clientes o socios de la empresa ofreciendo incentivos o bonificaciones por atraer nuevos participantes.
Desde una perspectiva técnica, un programa de referidos incluye varios componentes clave:
Un enlace de invitación—un identificador único que permite a los usuarios o clientes invitar a otros a participar en el programa. El invitador puede compartir este enlace a través de varios canales (por ejemplo, este artículo cubrirá la generación de enlaces mediante un bot de WhatsApp, pero los enlaces del programa de referidos pueden compartirse a través de cualquier mensajero que prefieras).
Un base de datos de participantes, implementada mediante la integración de MaviBot y la funcionalidad de Google Sheets, donde se registra información tanto de los usuarios invitados como de los que invitan.
Un sistema de seguimiento de referidos que supervisa las acciones relacionadas con la incorporación de nuevos participantes mediante enlaces de referido. El sistema almacena datos de todos los referidos, lo que te permite comprobar si un referido dado ya existe en el sistema como un usuario previamente invitado.
Recomendamos encarecidamente revisar las secciones “Conceptos básicos de construcción de bots en Mavibot.ai” ссылка y “Google Sheets” ссылка antes de crear el flujo de tu chatbot.
Sistema de referidos en WhatsApp
La funcionalidad del bot que se creará incluirá bloques compuestos por los siguientes componentes:
generación de un enlace de referido (afiliado); ссылка
comprobación de si el nuevo usuario ya está en la base de datos; ссылка
notificación al usuario que invita sobre un nuevo referido; ссылка
registro de usuarios en la base de datos; ссылка
solicitud de una lista de referidos. ссылка
Generación de enlace de referido
Vamos a crear un bloque con un enlace incrustado que el bot enviará al usuario al recibir el comando “link”. Para hacerlo, crea un nuevo bloque en el flujo usando uno de estos dos métodos:
Haz doble clic en un área vacía del lienzo del constructor:

Usando el botón "Guardar" en la parte inferior de la pantalla y seleccionando el tipo de bloque:

Después de eso, en la condición del bloque, introduce la palabra “Link” y establece el tipo de coincidencia en “Ignorar erratas e inexactitudes” (esto es útil en caso de errores tipográficos del usuario u otros errores del mensaje):

Para identificar quién refirió al usuario, el bot crea un enlace usando la siguiente plantilla: https://wa.me/(tu número de teléfono vinculado al bot)text=Fuiste%20recomendado%20por%20#{phone}%20😌Hola

Veamos más de cerca la plantilla del enlace: https://wa.me/(tu número de teléfono vinculado al bot)?text=Fuiste%20recomendado%20por%20#{phone}%20😌Hola, donde:
Reemplaza los paréntesis "(tu número de teléfono vinculado al bot)" con el número de teléfono correspondiente;
#{phone} se reemplaza automáticamente con el número de teléfono del usuario que solicitó su enlace de socio.
Enviamos el enlace generado no como texto del bloque, sino como un adjunto: un enlace clicable con una notificación (ver Fig. 2 y Fig. 3):
elige insertar un adjunto
selecciona el tipo — Enlace, y pégalo en el campo 'URL del adjunto':

En este caso, el enlace aparecerá visualmente acortado:
Probemos la funcionalidad del enlace usando la función "Probar bot" .

Aquí está el resultado: el enlace dirige al usuario al chat correspondiente del mensajero con tu número de teléfono:

De este modo, has generado con éxito un enlace de invitación que los usuarios potenciales pueden usar para acceder al chatbot. Además, al hacer clic en este enlace, el usuario es redirigido a la ventana de chat con un mensaje prellenado. (Ver Fig. 6)
Verificación del usuario
Uso de funciones y expresiones regulares en un bloque
El comando de verificación y entrada en la base de datos solo funcionará si el bot encuentra un número de teléfono en el mensaje del usuario. Por lo tanto, es necesario dividir la frase recibida en partes.
Para ello, se usa la función splitter() .
splitter(str, s, n) - divide una cadena en partes. La función devuelve una matriz de elementos.
Parámetros:
! str - la cadena original
! s - el delimitador de la cadena
n - el número máximo de elementos
Función de división de cadenas:

A continuación, el bot necesita verificar si la secuencia de dígitos en la cadena es realmente un número de teléfono. Para ello, usamos las siguientes expresiones regulares:
Número de teléfono general:
^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$¡Cambiar el número ruso! Solo número de teléfono ruso:
^((\+7|7|8)+([0-9]){10})$

Para obtener información sobre cómo trabajar con expresiones regulares, consulta el artículo titulado "Expresiones regulares". ссылка
Después de que el bot verifique que la secuencia de dígitos es realmente un número de teléfono, guárdalo del mensaje como una variable (por ejemplo, #{reff}).
Comprobación del número de teléfono del usuario como referido en la base de datos
Ahora es necesario comprobar si el número de teléfono del usuario que siguió el enlace ya es un referido (previamente invitado por alguien y registrado en nuestra base de datos). Para ello, crea un bloque en el flujo con una función de búsqueda de columna.
Usa la función de búsqueda de columna haciendo clic en "Solicitud API" en el bloque, donde debes establecer los siguientes valores de parámetros:

! URL de la función: https://store.salebot.pro/function/findcell ссылка
! JSON parámetros de la solicitud:
{ "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" }
Parámetros de respuesta:
"status": "1" — valor encontrado
"status": "0" — valor no encontrado
"data" — el valor encontrado
"cell_number" — la ubicación de la celda encontrada
El parámetro return debe establecerse en 0. { "id": "your_table_id", "find": "text_to_search", "col": 2, "return": 0 } Respuesta: {"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"}} Desglose de la respuesta:
data — respuesta
data|0 — Celda 1
data|1 — Celda 2
data|2 — Celda 3
data|3 — Celda 4
cell_number|row — fila
cell_number|col — columna
Para obtener más información sobre las funciones disponibles para trabajar con tablas, consulta el artículo titulado "Google Sheets". ссылка
Bloque de notificación
Para notificar al usuario que compartió el enlace de referido que un nuevo cliente lo ha seguido con éxito, crearemos un bloque dedicado. Para enviar una notificación sobre la creación de un nuevo referido, usa los siguientes parámetros de solicitud (tipo: POST - JSON):

Las solicitudes se realizan usando el POST método a la URL: https://chatter.salebot.pro/api/{api_key}/{action} Dónde:
api_keyes la clave de acceso API de tu proyecto, que puede obtenerse en la configuración del proyecto (ver Fig. 11).

Puedes recuperar la clave de acceso usando la variable #{api_key}, que almacena el token de acceso generado actualmente. No olvides generar el token antes de usarlo.
! URL de la solicitud: https://chatter.salebot.pro/api/#{api_key}/whatsapp_message ссылка

ПPuedes encontrar más detalles sobre las funciones de solicitud de API aquí. ссылка
Añadir los usuarios invitados y los que invitan a la base de datos
Para ello, usaremos la entrada fila por fila en columnas específicas, lo cual se realiza usando el mapeo función.
La tabla debe tener un encabezado completado (al menos una celda en la primera fila).
! URL de la función https://store.salebot.pro/function/gsheets ссылка
! JSON parámetros de la solicitud:
{ "id": "your_table_id", "mapping": { "a": "#{variable}", "b": "#{another_variable}", "d": "plain text" } }
Si quieres escribir filas no en la primera hoja, añade el parámetro list_name a la solicitud:
{ "id": "your_table_id", "mapping": { "a": "plain text", "b": "#{variable}" }, "list_name": "SheetName" }
Parámetros:
id — identificador de la tabla*
a, b, c, d — nombres de columna
list_name — nombre de tu hoja (por ejemplo, "Sheet2")
*Asegúrate de reemplazarlo con el ID real de tu tabla.
Ejemplo de respuesta: {"number_row":8}
Si la solicitud se ejecuta correctamente, la respuesta incluirá el número de fila, que puedes guardar y usar para operaciones posteriores.
Ver la lista de referidos
Vamos a añadir un comando adicional al bot que permita a los usuarios ver su lista de referidos.
Para encontrar todos los valores especificados en una columna, usa la findcell función con el parámetro "find_all". Esto localizará todas las apariciones del "find_all" valor en la columna "col" especificada y devolverá una lista de valores únicos de la columna "return" como una cadena.
! URL de la función: https://store.salebot.pro/function/findcell ссылка
! Parámetros de la solicitud 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": "!" }

En los valores guardados, especifica:
lista → Lista
cantidad → Cantidad
Para el usuario, muestra el mensaje: "Has referido a #{spisok}, tu total de referidos: #{quantity}"
En otros mensajeros, implementar un sistema de referidos así es aún más fácil porque los datos del invitador se pasan como un parámetro oculto durante la transición del enlace, por lo que el nuevo usuario no necesita enviar un mensaje como “Fui invitado por este número.”
Última actualización