Trabajando con clientes

LEYENDA:

was_in_state() | days_from_last_message() | free_client() | assign_to_user() | distribute_client()| get_operator() | get_operator_name() | delete_pended_messages() | set_note() | add_unread() | clear_unread() | unsubscribe()|block_client() | unblock_client() | set_client_name() | get_bind_clients() | get_current_pipline_id()

was_in_state(message_id)
comprueba si un cliente estuvo en el estado (bloque) seleccionado. Puedes obtener el número de bloque desde el editor.

days_from_last_message()
determina el número de días desde el último mensaje del cliente. Creado para verificar si cae dentro de la ventana de 24 horas.

Ejemplo:
d = days_from_last_message()

Si han pasado más de 30 días desde el último mensaje del cliente, la función devolverá el valor 9999.


free***_***client()
desasigna al operador responsable.
Ejemplo: free_client()

assign_to_user(email, only_active)
asigna un diálogo a un operador, donde:

  1. email - un parámetro de cadena (opcional). Si solo se proporciona el email, se asignará un diálogo al operador especificado independientemente de su estado actual.
  2. only_active - Verdadero o Falso (parámetro opcional). Si se establece en Verdadero, se asignará un diálogo al operador especificado solo si está actualmente en turno.

Ejemplos:

assign_to_user() - asigna un diálogo a un operador aleatorio que esté actualmente en turno

assign_to_user('email del operador') - asigna un diálogo al operador independientemente de su estado

assign_to_user('email del operador', True) - asigna un diálogo al operador especificado solo si está actualmente en turno

distribute_client()
asigna un diálogo al operador según la configuración de distribución automática.
Ejemplo: distribute_client()

get_operator()
recupera el email del operador responsable

Ejemplo: get_operator()

Se puede usar para asignar tareas a un operador responsable o para verificar si existe. Si no hay operador responsable, devolverá None.

get_operator_name()
recupera el nombre del operador responsable

Ejemplo: get_operator_name()

Se puede usar para mostrar información al cliente. Si no hay operador responsable, devolverá None. Si el operador no tiene un nombre asignado, devolverá su email.

delete_pended_messages()
elimina todos los mensajes programados para el cliente actual. Por defecto, también elimina los mensajes creados por las flechas "No cancelar". Para conservar los mensajes de las flechas "No cancelar", pasa el parámetro Falso: delete_pended_messages(False).

set_note(comment)
añade un comentario a un diálogo.

Ejemplo: set_note('Rehacer')

add_unread(count)
marca un diálogo con un cliente como no leído

El parámetro count se puede omitir o establecer en 1; en este caso, el diálogo con el cliente mostrará un indicador de +1 mensaje no leído.

Si se pasa cualquier otro número, se mostrará en la sección "Clientes" como el número de mensajes no leídos de un cliente.

clear_unread()
marca un diálogo como leído

unsubscribe()
Función para darse de baja de los mensajes del bot. Se proporciona un ejemplo en este artículo.
Para el cliente dado de baja, aparecerá un símbolo: un mensaje rojo con una cruz.

¡Importante!

La Calculadora se ejecuta primero, y solo entonces se envía el mensaje.

Por lo tanto, si necesitas enviar un mensaje final como "Te has dado de baja del bot" o "Has sido bloqueado", debes usar un proceso de dos pasos:

  1. Primero, envía un bloque que contenga el mensaje final.
  2. Luego, envía un bloque vacío que contenga la función de darse de baja/bloquear.

Si intentas hacer ambas cosas en un solo bloque, el mensaje no se enviará.

Si colocas la función unsubscribe() en la calculadora del mismo bloque que tu mensaje, el mensaje no se enviará y el sistema mostrará un error.

block_client()
bloquea a un cliente para que no envíe mensajes al bot. Los mensajes previamente programados del bot también se cancelarán. Sin embargo, aún será posible enviar mensajes al cliente directamente desde el diálogo en la sección "Clientes"

Un cliente bloqueado tendrá una marca: un icono de candado rojo.

unblock_client()
desbloquea al cliente. El cliente podrá interactuar nuevamente con el bot y continuar a través de las cadenas de mensajes.

set_client_name(name)
cambia el nombre del cliente. Pasa el nombre del cliente como una cadena entre comillas dobles. También puedes usar una variable que contenga el nombre del cliente, por ejemplo: set_client_name("John Smith")

get_bind_clients()
una función sin parámetros que devuelve un array de IDs de clientes vinculados al cliente actual.

get_current_pipline_id()
una función sin parámetros que devuelve el ID del embudo en el que se encuentra actualmente el cliente.

Si el trato del cliente está en la etapa "sin procesar", devuelve None.

Trabajando con tareas

Las funciones que trabajan con tareas devuelven el estado de la operación como Verdadero o el ID de la tarea en caso de éxito. En caso de fallo, devuelven Falso o None.

MaviBot utiliza el formato de fecha "dd.mm.aaaa" y el formato de hora "HH:MM".

create_task() | update_task() | done_task() | delete_task()

create_task(email, name, date_srok, description, time_srok) – crea una tarea

Parámetros:\ ! email - email de la persona responsable\ ! name - nombre de la tarea\ ! date_srok - fecha de vencimiento, fecha\ ! description - descripción de la tarea
time_srok - hora de vencimiento, hora

update_task(task_id,email, name, date_srok, description, time_srok) - actualiza una tarea

Parámetros:\ ! task_id- ID de la tarea\ ! email - email de la persona responsable\ ! name - nombre de la tarea\ ! date_srok - fecha de vencimiento, fecha\ ! description - descripción de la tarea
time_srok - hora de vencimiento, hora

done_task(task_id)- marca una tarea como completada

Parámetros:\ ! task_id- ID de la tarea

delete_task(task_id) – elimina una tarea

Parámetros:\ ! task_id- ID de la tarea

Asignar un usuario responsable&#x20

assign_order_to_user(email, order_id) — asigna un usuario responsable a un trato

  • email — email del empleado que se asignará como responsable. Obligatorio.
  • order_id — ID del trato al que asignar el empleado. Si no se especifica, se utiliza el trato actual. Opcional.

Obtener el email del usuario responsable&#x20

get_order_operator(order_id) — obtener el email del usuario responsable de un trato

  • order_id — ID del trato del que recuperar el usuario responsable. Si no se especifica, se utiliza el trato actual. Opcional.

Vamos a crear una tarea para el operador:

Actualizar la fecha de vencimiento y la descripción.

Marcar la tarea como completada.

Eliminación de tarea

task_id=create_task('[email protected]', 'Test', '22.01.2023', 'test task', '08:00') status=delete_task(task_id)

Trabajando con tratos

get_order_id() | create_order() | set_order_name() | set_order_budget() | get_active_orders_ids() | get_success_orders_ids() | get_fail_orders_ids() | get_order_var() | get_order_vars() | set_order_var() | set_order_vars() | move_order_to_next_state() | set_order_status_success() | set_order_status_fail(order_id)| get_state_id() | change_state() | get_order_id_by_var_value() | latest_order_datetime() | count_client_orders(), get_count_orders() | delete_order(order_id) |

Obteniendo el ID del trato actual

get_order_id() - devuelve el estado del trato.

Creando un nuevo trato

create_order(name, budget, description, client_name, phone, email, state_id)
El trato actualmente activo en el pipeline, junto con sus variables, estará disponible solo en las funciones relacionadas con tratos y en el CRM.

Parámetros de la función: \ ! name - (opcional), el nombre del trato. Si no se proporciona, la función se aplica al trato activo actual del cliente.

! budget - (opcional) el valor del trato. Si no se proporciona, se aplica al trato activo actual.
Si budget no es un número, la función devolverá: budget must be a number

description - (opcional), la descripción del trato.

Parámetros adicionales para la creación del cliente:

client_name - (opcional) cadena, nombre de un nuevo cliente

phone - (opcional) cadena, número de teléfono de un nuevo cliente.

email - (opcional) cadena, dirección de correo electrónico de un nuevo cliente.

Para crear un cliente, se debe proporcionar al menos el teléfono o el correo electrónico. Si se proporciona el teléfono y no existe un cliente con este teléfono en el proyecto, se creará uno nuevo.

Si se proporciona el correo electrónico sin teléfono y no existe un cliente con este correo electrónico, se creará uno nuevo.

Parámetro adicional:

state_id - número, permite establecer el estado inicial del trato al crearlo

Establecer o actualizar el nombre del trato

set_order_name(name, order_id)

name - ❗obligatorio, cadena; el nombre del trato

order_id - (opcional) ID del trato. Si no se proporciona, el cambio se aplica al trato activo actual del cliente.

Establecer o actualizar el presupuesto del trato

set_order_budget(budget, order_id)

budget -❗obligatorio, número; el valor del trato

order_id - (opcional) ID del trato. Si no se proporciona, se aplica al trato activo actual del cliente.

Para usar order_id correctamente:

  1. Puedes especificarlo manualmente: obtén el ID del trato y pásalo como parámetro de la función si deseas apuntar a un trato específico.

  1. Recupéralo usando la función get_order_id(), porque la variable order_id incorporada devuelve el valor en el formato {client_id}-{order_id}, lo que puede causar un comportamiento incorrecto.

Obteniendo listas de tratos
((excluyendo tratos archivados, exitosos o fallidos))

get_active_orders_ids()

Obtener una lista de IDs de tratos exitosos

get_success_orders_ids()

Obtener una lista de IDs de tratos fallidos

get_fail_orders_ids()

Obteniendo el valor de una variable del trato

get_order_var(order_id, variable)

Parámetros:

! order_id - ID del trato

! variable - nombre de la variable cuyo valor deseas recuperar

Obteniendo datos del trato

get_order_vars(order_id, names)

Parámetros:

! order_id - ID del trato

names - un array de nombres de variables a recuperar. Si se omite, la función devuelve todas las variables para el trato especificado

La función devuelve un diccionario que contiene las variables listadas en el array names para el trato identificado por order_id. Si no se proporciona names, devuelve un diccionario con todas las variables del trato especificado.

Añadiendo una variable del trato

set_order_var(order_id, variable, value)

Parámetros:

! order_id - ID del trato

! variable - el nombre de la variable a añadir o actualizar en un trato

Si deseas cambiar los parámetros del trato "name" o "description", usa los nombres de variable "name" o "description" respectivamente.

! value - valor de la variable

Añadiendo múltiples variables del trato

set_order_vars(order_id, variables_dict)

Parámetros:

! order_id - ID del trato.

! variables_dict - un diccionario de variables

Moviendo al siguiente estado del embudo

move_order_to_next_state(order_id)

Parámetros:
order_id - ID del trato. Si no se especifica, se moverá el trato activo actual.
El orden de los estados del trato se define según la secuencia establecida en MavibotCRM.

Obteniendo la etapa del embudo en MavibotCRM

get_state_id(client_id, order_id)
También puedes copiar el ID del estado del pipeline directamente desde la "Configuración de estado".

Parámetros:

order_id - ID del trato del cliente

Puedes llamar a la función con o sin el parámetro order_id. Si se omite order_id, la función devolverá el ID del estado del pipeline para el trato activo actual.

Para un uso correcto de order_id:

  1. Puedes especificarlo manualmente obteniendo el ID del trato y pasándolo como parámetro de la función cuando desees apuntar a un trato específico.
  2. Recupéralo usando la función get_order_id(), porque la variable order_id incorporada devuelve un valor en el formato {client_id}-{order_id}, lo que puede causar un comportamiento incorrecto.

Moviendo un lead a través del embudo de MavibotCRM por ID de estado

change_state(state_id, order_id)

Parámetros:\ ! state_id - ID del estado del embudo
order_id ( opcional) - el ID del trato a mover a través del pipeline. Si se omite, se moverá el trato activo actual.

Obteniendo el ID del trato por nombre y valor de variable

get_order_id_by_var_value(var_name, var_value, client_id)

Parámetros:\ ! var_name - nombre de la variable\ ! var_value - valor de la variable;
client_id - (opcional) ID del trato del cliente; por defecto es el ID del cliente en el bot

Obteniendo fecha y hora del último trato

latest_order_datetime(client_id, dt_fmt)

Parámetros:
client_id - (opcional) el ID del trato del cliente; por defecto es el ID del cliente en el bot;
df_fmt - (opcional) formato para la fecha y hora devueltas; por defecto es "%d.%m.%y %H:%M"

Obteniendo el número de tratos del cliente

count_client_orders(client_id, state_id, get_all, active)

Parámetros:
client_id - (opcional) el ID del trato del cliente; por defecto es el ID del cliente en el bot;
state_id - (opcional) el ID del estado del trato en el pipeline;
get_all - (opcional) bandera de filtro para el parámetro active; por defecto es 1 (el filtrado por active está deshabilitado);
active - se usa solo cuando get_all es 0; filtra tratos activos; por defecto es 1 (devuelve solo tratos activos);

Obtener el recuento de tratos en un estado de trato específico

get_count_orders(id) - devuelve el número de tratos actualmente en un estado de pipeline específico por ID de estado.

La función toma un solo parámetro:

! id - el ID del estado del trato.

Ejemplo de uso de la función:

El ID de la etapa se puede encontrar en la configuración.

A continuación, debes ingresar la función en la calculadora de la siguiente manera:

Al probar el bot, la respuesta del bot consistirá en el número de tratos en el estado especificado por el valor pasado a la función.

Eliminando un trato

delete_order(order_id) — elimina un trato en MaviBotCRM.

order_id - (opcional) el ID del trato a eliminar. Si se omite, se eliminará el trato más reciente.

Todas las funciones son simples de usar.

Por ejemplo, vamos a crear un nuevo trato y enviar su número al cliente:

Puedes obtener el ID del trato activo actual del cliente usando la función get_order_id(), o recuperar la lista completa de tratos del cliente usando get_active_orders_ids().

Estableciendo una etiqueta de trato exitoso

set_order_status_success()

Descripción

set_order_status_success(order_id)

Parámetros:

order_id - el ID del trato. Si no se especifica el parámetro, la etiqueta se establecerá para el trato activo actual.

Estableciendo una etiqueta de trato fallido

set_order_status_fail()

Descripción

set_order_status_fail(order_id)

Parámetros:

order_id - el ID del trato. Si no se especifica el parámetro, la etiqueta se establecerá para el trato activo actual.

Estableciendo una etiqueta de trato archivado

set_order_status_archive()

Descripción

set_order_status_archive(order_id)

Parámetros:

order_id - el ID del trato. Si no se especifica el parámetro, la etiqueta se establecerá para el trato activo actual.

Ejemplos

/*Archivar el trato activo actual*/

res_arh = set_order_status_archive()