Робота з клієнтами та CRM
Робота з клієнтами
ЛЕГЕНДА:
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) перевіряє, чи був клієнт у вибраному стані (блоці). Номер блоку можна отримати в редакторі.

days_from_last_message() визначає кількість днів від останнього повідомлення клієнта. Створено для перевірки, чи потрапляє воно у 24-годинне вікно.
Приклад:
d = days_from_last_message()
Якщо з моменту останнього повідомлення клієнта минуло понад 30 днів, функція поверне значення 9999.
free_client() знімає відповідального оператора. Приклад: free_client()
assign_to_user(email, only_active) призначає діалог оператору, де:
email - рядковий параметр (необов’язковий). Якщо вказано лише email, діалог буде призначено вказаному оператору незалежно від його поточного статусу.
only_active - True або False (необов’язковий параметр). Якщо встановлено True, діалог буде призначено вказаному оператору лише якщо він зараз на зміні.
Приклади:
assign_to_user() - призначає діалог випадковому оператору, який зараз на зміні
assign_to_user('email оператора') - призначає діалог оператору незалежно від його статусу
assign_to_user('email оператора', True) - призначає діалог вказаному оператору лише якщо він зараз на зміні
distribute_client()
призначає діалог оператору відповідно до налаштувань авторозподілу.
Приклад: distribute_client()
get_operator() отримує email відповідального оператора
Приклад: get_operator()
Може використовуватися для призначення завдань відповідальному оператору або для перевірки, чи він існує. Якщо відповідального оператора немає, поверне None.
get_operator_name() отримує ім’я відповідального оператора
Приклад: get_operator_name()
Може використовуватися для відображення інформації клієнту. Якщо відповідального оператора немає, поверне None. Якщо в оператора не вказано ім’я, поверне його email.
delete_pended_messages() видаляє всі заплановані повідомлення для поточного клієнта. За замовчуванням також видаляє повідомлення, створені стрілками "Не скасовувати" Щоб зберегти повідомлення зі стрілок "Не скасовувати" передайте параметр False: delete_pended_messages(False).
set_note(comment) додає коментар до діалогу.
Приклад: set_note('Переробити')
add_unread(count) позначає діалог із клієнтом як непрочитаний
Параметр count можна не вказувати або встановити в 1; у цьому випадку в діалозі з клієнтом буде показано індикатор +1 непрочитане повідомлення.


Якщо передано будь-яке інше число, воно буде відображене в розділі "Клієнти" як кількість непрочитаних повідомлень від клієнта.

clear_unread() позначає діалог як прочитаний
unsubscribe() Функція для відписки від повідомлень бота. Приклад наведено у цій статті. Для відписаного клієнта з’явиться символ — червоне повідомлення з хрестиком.


Важливо!
Поле Калькулятор виконується першим, і лише потім надсилається повідомлення.
Тому, якщо вам потрібно надіслати фінальне повідомлення на кшталт "Вас відписано від бота" або "Вас заблоковано", потрібно використати двоетапний процес:
Спочатку надішліть блок що містить фінальне повідомлення.
Потім надішліть порожній блок що містить функцію unsubscribe/block.
Якщо спробувати зробити обидві дії в одному блоці, повідомлення не буде надіслано.

Якщо ви розмістите функцію unsubscribe() у калькуляторі того ж блоку, що й ваше повідомлення, повідомлення не буде надіслано, і система відобразить помилку.

block_client() блокує клієнту можливість надсилати повідомлення боту. Раніше заплановані повідомлення від бота також буде скасовано. Однак все ще буде можливо написати клієнту безпосередньо з діалогу в розділі "Клієнти" розділ

Заблокований клієнт матиме позначку — червону іконку замка.

unblock_client() розблоковує клієнта. Клієнт знову зможе взаємодіяти з ботом і проходити ланцюжки повідомлень.
set_client_name(name) змінює ім’я клієнта. Передайте ім’я клієнта як рядок у подвійних лапках. Також можна використовувати змінну, що містить ім’я клієнта, наприклад: set_client_name("John Smith")
get_bind_clients() функція без параметрів, яка повертає масив ID клієнтів, пов’язаних із поточним клієнтом.
get_current_pipline_id() функція без параметрів, яка повертає ID воронки, у якій клієнт перебуває зараз.
Якщо угода клієнта перебуває на етапі "необроблено", вона повертає None.
Робота із завданнями
Функції, що працюють із завданнями, повертають статус операції як True або ID завдання у разі успіху. У разі невдачі вони повертають False або None.
MaviBot використовує формат дати "dd.mm.yyyy" і формат часу "HH:MM".
create_task() | update_task() | done_task() | delete_task()
Опис
create_task(email, name, date_srok, description, time_srok) – створює завдання
Параметри: ! email - email відповідальної особи ! name - назва завдання ! date_srok - кінцева дата, дата ! description - опис завдання time_srok - кінцевий час, час
update_task(task_id,email, name, date_srok, description, time_srok) - оновлює завдання
Параметри: ! task_id- ID завдання ! email - email відповідальної особи ! name - назва завдання ! date_srok - кінцева дата, дата ! description - опис завдання time_srok - кінцевий час, час
done_task(task_id)- позначає завдання як виконане
Параметри: ! task_id- ID завдання
delete_task(task_id) – видаляє завдання
Параметри: ! task_id- ID завдання
Приклади
Давайте створимо завдання для оператора:

Оновіть кінцеву дату та опис.

Позначте завдання як виконане.

Видалення завдання

Приклад коду для копіювання
task_id=create_task('[email protected]', 'Тест', '22.01.2023', 'тестове завдання', '08:00') status=delete_task(task_id)
Робота з угодами
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)
Опис
Отримання ID поточної угоди
get_order_id() - повертає стан угоди.
Створення нової угоди
create_order(name, budget, description, client_name, phone, email, state_id) Поточна активна угода у воронці разом зі своїми змінними буде доступна лише у функціях, пов’язаних з угодами, і в CRM. Параметри функції: ! name - (необов’язково), назва угоди. Якщо не вказано, функція застосовується до поточної активної угоди клієнта.
! Призначте назву змінної (наприклад, - (необов’язково) вартість угоди. Якщо не вказано, застосовується до поточної активної угоди. Якщо Призначте назву змінної (наприклад, не є числом, функція поверне: budget має бути числом
description - (необов’язково), опис угоди.
Додаткові параметри для створення клієнта:
client_name - (необов’язково) рядок, ім’я нового клієнта
phone - (необов’язково) рядок, номер телефону нового клієнта.
email - (необов’язково) рядок, email-адреса нового клієнта.
Щоб створити клієнта, потрібно вказати принаймні телефон або email. Якщо вказано телефон і в проєкті немає клієнта з таким телефоном, буде створено нового.
Якщо вказано email без телефону і клієнта з таким email не існує, буде створено нового.
Додатковий параметр:
state_id - число, дозволяє встановити початковий стан угоди під час створення
Встановити або оновити назву угоди
set_order_name(name, order_id)
name - ❗обов’язково, рядок; назва угоди
order_id - (необов’язково) ID угоди. Якщо не вказано, зміна застосовується до поточної активної угоди клієнта.
Встановити або оновити бюджет угоди
set_order_budget(budget, order_id)
Призначте назву змінної (наприклад, -❗обов’язково, число; вартість угоди
order_id - (необов’язково) ID угоди. Якщо не вказано, застосовується до поточної активної угоди клієнта.
Щоб правильно використовувати order_id:
Ви можете вказати його вручну — отримайте ID угоди та передайте його як параметр функції, якщо хочете звернутися до конкретної угоди.


Отримуйте його за допомогою функції get_order_id(), оскільки вбудована змінна order_id повертає значення у форматі {client_id}-{order_id}, що може спричинити некоректну поведінку.
Отримання списків угод ((за винятком архівних, успішних або невдалих угод))
get_active_orders_ids()
Отримати список ID успішних угод
get_success_orders_ids()
Отримати список ID невдалих угод
get_fail_orders_ids()
Отримання значення змінної угоди
get_order_var(order_id, variable)
Параметри:
! order_id - ID угоди
! variable - назва змінної, значення якої ви хочете отримати
Отримання даних угоди
get_order_vars(order_id, names)
Параметри:
! order_id - ID угоди
names - масив назв змінних для отримання. Якщо не вказано, функція повертає всі змінні для зазначеної угоди
Функція повертає словник, що містить змінні, перелічені в масиві names для угоди, визначеної за order_id. Якщо names не вказано, вона повертає словник з усіма змінними зазначеної угоди.
Додавання змінної угоди
set_order_var(order_id, variable, value)
Параметри:
! order_id - ID угоди
! variable - назва змінної, яку потрібно додати або оновити в угоді
Якщо ви хочете змінити параметри угоди "name" або "description", використовуйте назви змінних "name" або "description" відповідно.
! value - значення змінної
Додавання кількох змінних угоди
set_order_vars(order_id, variables_dict)
Параметри:
! order_id - ID угоди.
! variables_dict - словник змінних
Перехід до наступного стану воронки
move_order_to_next_state(order_id)
Параметри: order_id - ID угоди. Якщо не вказано, буде переміщено поточну активну угоду. Порядок станів угоди визначається відповідно до послідовності, встановленої в MavibotCRM.
Отримання етапу воронки в MavibotCRM
get_state_id(client_id, order_id) Ви також можете скопіювати ID стану воронки безпосередньо з "Налаштування стану".
Параметри:
order_id - ID угоди клієнта
Ви можете викликати функцію з параметром order_id або без нього. Якщо order_id не вказано, функція поверне ID стану воронки для поточної активної угоди.
Для коректного використання order_id:
Ви можете вказати його вручну, отримавши ID угоди та передавши його як параметр функції, коли хочете звернутися до конкретної угоди.
Отримуйте його за допомогою функції get_order_id(), оскільки вбудована змінна order_id повертає значення у форматі {client_id}-{order_id}, що може спричинити некоректну поведінку.
Переміщення ліда по воронці MavibotCRM за ID стану
change_state(state_id, order_id)
Параметри: ! state_id - ID стану воронки order_id ( необов’язково) - ID угоди для переміщення по воронці. Якщо не вказано, буде переміщено поточну активну угоду.
Отримання ID угоди за назвою змінної та значенням
get_order_id_by_var_value(var_name, var_value, client_id)
Параметри: ! var_name - назва змінної ! var_value - значення змінної; client_id - (необов’язково) ID угоди клієнта; за замовчуванням використовується ID клієнта в боті
Отримання дати й часу останньої угоди
latest_order_datetime(client_id, dt_fmt)
Параметри: client_id - (необов’язково) ID угоди клієнта; за замовчуванням використовується ID клієнта в боті; df_fmt - (необов’язково) формат для повернених дати й часу; за замовчуванням "%d.%m.%y %H:%M"
Отримання кількості угод клієнта
count_client_orders(client_id, state_id, get_all, active)
Параметри: client_id - (необов’язково) ID клієнта угоди; за замовчуванням використовується ID клієнта в боті; state_id - (необов’язково) ID стану угоди у воронці; get_all - (необов’язково) прапорець фільтра для параметра active; за замовчуванням 1 (фільтрацію за active вимкнено); active - використовується лише коли get_all дорівнює 0; фільтрує активні угоди; за замовчуванням 1 (повертає лише активні угоди);
Отримати кількість угод у певному стані угоди
get_count_orders(id) - повертає кількість угод, які зараз перебувають у певному стані воронки за ID стану.
Функція приймає один параметр:
! id - ID стану угоди.
Приклад використання функції:


ID етапу можна знайти в налаштуваннях.
Далі потрібно ввести функцію в калькулятор таким чином:

Під час тестування бота відповідь бота складатиметься з кількості угод у стані, вказаному значенням, переданим у функцію.
Видалення угоди
delete_order(order_id) — видаляє угоду в MaviBotCRM.
order_id - (необов’язково) ID угоди для видалення. Якщо не вказано, буде видалено останню угоду.
Приклади
Усі функції прості у використанні. Наприклад, давайте створимо нову угоду та надішлемо її номер клієнту:


Ви можете отримати ID поточної активної угоди клієнта за допомогою функції get_order_id(), або отримати повний список угод клієнта за допомогою get_active_orders_ids().




Встановлення мітки успішної угоди
set_order_status_success()
set_order_status_success(order_id)
Параметри:
order_id - ID угоди. Якщо параметр не вказано, мітку буде встановлено для поточної активної угоди.
Встановлення мітки невдалої угоди
set_order_status_fail()
set_order_status_fail(order_id)
Параметри:
order_id - ID угоди. Якщо параметр не вказано, мітку буде встановлено для поточної активної угоди.
Встановлення мітки архівної угоди
set_order_status_archive()
set_order_status_archive(order_id)
Параметри:
order_id - ID угоди. Якщо параметр не вказано, мітку буде встановлено для поточної активної угоди.
/*Архівувати поточну активну угоду*/
res_arh = set_order_status_archive()
Last updated