Trabalhando com clientes
LEGENDA:
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)
verifica se um cliente estava no estado selecionado (bloco). Você pode obter o número do bloco no editor.

days_from_last_message()
determina o número de dias desde a última mensagem do cliente. Criado para verificar se está dentro da janela de 24 horas.
Exemplo:
d = days_from_last_message()
Se mais de 30 dias se passaram desde a última mensagem do cliente, a função retornará o valor 9999.
free***_***client()
desatribui o operador responsável.
Exemplo: free_client()
assign_to_user(email, only_active)
atribui um diálogo a um operador, onde:
- email - um parâmetro de string (opcional). Se apenas o email for fornecido, um diálogo será atribuído ao operador especificado, independentemente do seu status atual.
- only_active - True ou False (parâmetro opcional). Se definido como True, um diálogo será atribuído ao operador especificado apenas se ele estiver atualmente em turno.
Exemplos:
assign_to_user() - atribui um diálogo a um operador aleatório que está atualmente em turno
assign_to_user('email do operador') - atribui um diálogo ao operador independentemente do seu status
assign_to_user('email do operador', True) - atribui um diálogo ao operador especificado apenas se ele estiver atualmente em turno
distribute_client()
atribui um diálogo ao operador de acordo com as configurações de distribuição automática.
Exemplo: distribute_client()
get_operator()
recupera o email do operador responsável
Exemplo: get_operator()
Pode ser usado para atribuir tarefas a um operador responsável ou para verificar se ele existe. Se não houver operador responsável, retornará None.
get_operator_name()
recupera o nome do operador responsável
Exemplo: get_operator_name()
Pode ser usado para exibir informações ao cliente. Se não houver operador responsável, retornará None. Se o operador não tiver um nome atribuído, retornará seu email.
delete_pended_messages()
exclui todas as mensagens agendadas para o cliente atual. Por padrão, também exclui mensagens criadas pelas setas "Não cancelar" . Para manter as mensagens das setas "Não cancelar" , passe o parâmetro False: delete_pended_messages(False).
set_note(comment)
adiciona um comentário a um diálogo.
Exemplo: set_note('Refazer')
add_unread(count)
marca um diálogo com um cliente como não lido
O parâmetro count pode ser omitido ou definido como 1; neste caso, o diálogo com o cliente mostrará um indicador de +1 mensagem não lida.


Se qualquer outro número for passado, ele será exibido na seção "Clientes" como o número de mensagens não lidas de um cliente.

clear_unread()
marca um diálogo como lido
unsubscribe()
Função para cancelar a inscrição de mensagens do bot. Um exemplo é fornecido neste artigo.
Para o cliente que cancelou a inscrição, um símbolo aparecerá — uma mensagem vermelha com um X.


Importante!
A Calculadora é executada primeiro, e só então a mensagem é enviada.
Portanto, se você precisar enviar uma mensagem final como "Você cancelou a inscrição do bot" ou "Você foi bloqueado" , você deve usar um processo de duas etapas:
- Primeiro, envie um bloco contendo a mensagem final.
- Em seguida, envie um bloco vazio contendo a função de cancelamento de inscrição/bloqueio.
Se você tentar fazer ambos em um único bloco, a mensagem não será enviada.

Se você colocar a função unsubscribe() na calculadora do mesmo bloco que sua mensagem, a mensagem não será enviada e o sistema exibirá um erro.

block_client()
bloqueia um cliente de enviar mensagens para o bot. Mensagens previamente agendadas do bot também serão canceladas. No entanto, ainda será possível enviar mensagens diretamente para o cliente a partir do diálogo na seção "Clientes"

Um cliente bloqueado terá uma marca — um ícone de cadeado vermelho.

unblock_client()
desbloqueia o cliente. O cliente poderá interagir novamente com o bot e prosseguir pelas cadeias de mensagens.
set_client_name(name)
altera o nome do cliente. Passe o nome do cliente como uma string entre aspas duplas. Você também pode usar uma variável contendo o nome do cliente, por exemplo: set_client_name("João Silva")
get_bind_clients()
uma função sem parâmetros que retorna um array de IDs de clientes vinculados ao cliente atual.
get_current_pipline_id()
uma função sem parâmetros que retorna o ID do funil em que o cliente está atualmente.
Se o negócio do cliente estiver no estágio "não processado", retorna None.
Trabalhando com tarefas
As funções que trabalham com tarefas retornam o status da operação como True ou o ID da tarefa em caso de sucesso. Em caso de falha, retornam False ou None.
MaviBot usa o formato de data "dd.mm.aaaa" e o formato de hora "HH:MM".
create_task() | update_task() | done_task() | delete_task()
create_task(email, name, date_srok, description, time_srok) – cria uma tarefa
Parâmetros:\ ! email - email do responsável\ ! name - nome da tarefa\ ! date_srok - data de vencimento, data\ ! description - descrição da tarefa
time_srok - hora de vencimento, hora
update_task(task_id,email, name, date_srok, description, time_srok) - atualiza uma tarefa
Parâmetros:\ ! task_id- ID da tarefa\ ! email - email do responsável\ ! name - nome da tarefa\ ! date_srok - data de vencimento, data\ ! description - descrição da tarefa
time_srok - hora de vencimento, hora
done_task(task_id)- marca uma tarefa como concluída
Parâmetros:\ ! task_id- ID da tarefa
delete_task(task_id) – exclui uma tarefa
Parâmetros:\ ! task_id- ID da tarefa
Atribuir um usuário responsável 
assign_order_to_user(email, order_id) — atribuir um usuário responsável a um negócio
-
email— email do funcionário a ser atribuído como responsável. Obrigatório. -
order_id— ID do negócio ao qual atribuir o funcionário. Se não especificado, o negócio atual é usado. Opcional.
Obter o email do usuário responsável 
get_order_operator(order_id) — obter o email do usuário responsável por um negócio
-
order_id— ID do negócio para recuperar o usuário responsável. Se não especificado, o negócio atual é usado. Opcional.
Vamos criar uma tarefa para o operador:

Atualizar a data de vencimento e a descrição.

Marcar a tarefa como concluída.

Exclusão de tarefa

task_id=create_task('[email protected]', 'Teste', '22.01.2023', 'tarefa de teste', '08:00') status=delete_task(task_id)
Trabalhando com negócios
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) |
Recuperando o ID do negócio atual
get_order_id() - retorna o estado do negócio.
Criando um novo negócio
create_order(name, budget, description, client_name, phone, email, state_id)
O negócio atualmente ativo no funil, juntamente com suas variáveis, estará disponível apenas em funções relacionadas a negócios e no CRM.
Parâmetros da função: \ ! name - (opcional), o nome do negócio. Se não fornecido, a função se aplica ao negócio ativo atual do cliente.
! budget - (opcional) o valor do negócio. Se não fornecido, aplica-se ao negócio ativo atual.
Se budget não for um número, a função retornará: budget must be a number
description - (opcional), a descrição do negócio.
Parâmetros adicionais para criação de cliente:
client_name - (opcional) string, nome de um novo cliente
phone - (opcional) string, número de telefone de um novo cliente.
email - (opcional) string, endereço de email de um novo cliente.
Para criar um cliente, pelo menos telefone ou email devem ser fornecidos. Se o telefone for fornecido e nenhum cliente com este telefone existir no projeto, um novo será criado.
Se o email for fornecido sem telefone e nenhum cliente com este email existir, um novo será criado.
Parâmetro adicional:
state_id - número, permite definir o estado inicial do negócio na criação
Definir ou atualizar o nome do negócio
set_order_name(name, order_id)
name - ❗obrigatório, string; o nome do negócio
order_id - (opcional) ID do negócio. Se não fornecido, a alteração se aplica ao negócio ativo atual do cliente.
Definir ou atualizar o orçamento do negócio
set_order_budget(budget, order_id)
budget -❗obrigatório, número; o valor do negócio
order_id - (opcional) ID do negócio. Se não fornecido, aplica-se ao negócio ativo atual do cliente.
Para usar order_id corretamente:
- Você pode especificá-lo manualmente — obtenha o ID do negócio e passe-o como parâmetro da função se quiser direcionar um negócio específico.


- Recupere-o usando a função get_order_id(), porque a variável order_id embutida retorna o valor no formato {client_id}-{order_id}, o que pode causar comportamento incorreto.
Recuperando listas de negócios
((excluindo negócios arquivados, bem-sucedidos ou com falha))
get_active_orders_ids()
Obter uma lista de IDs de negócios bem-sucedidos
get_success_orders_ids()
Obter uma lista de IDs de negócios com falha
get_fail_orders_ids()
Recuperando o valor de uma variável de negócio
get_order_var(order_id, variable)
Parâmetros:
! order_id - ID do negócio
! variable - nome da variável cujo valor você deseja recuperar
Recuperando dados do negócio
get_order_vars(order_id, names)
Parâmetros:
! order_id - ID do negócio
names - um array de nomes de variáveis a serem recuperadas. Se omitido, a função retorna todas as variáveis para o negócio especificado
A função retorna um dicionário contendo as variáveis listadas no array names para o negócio identificado por order_id. Se names não for fornecido, retorna um dicionário com todas as variáveis do negócio especificado.
Adicionando uma variável de negócio
set_order_var(order_id, variable, value)
Parâmetros:
! order_id - ID do negócio
! variable - o nome da variável a ser adicionada ou atualizada em um negócio
Se você quiser alterar os parâmetros "name" ou "description" do negócio, use os nomes de variáveis "name" ou "description" respectivamente.
! value - valor da variável
Adicionando múltiplas variáveis de negócio
set_order_vars(order_id, variables_dict)
Parâmetros:
! order_id - ID do negócio.
! variables_dict - um dicionário de variáveis
Movendo para o próximo estado do funil
move_order_to_next_state(order_id)
Parâmetros:
order_id - ID do negócio. Se não especificado, o negócio ativo atual será movido.
A ordem dos estados do negócio é definida de acordo com a sequência definida no MavibotCRM.
Recuperando o estágio do funil no MavibotCRM
get_state_id(client_id, order_id)
Você também pode copiar o ID do estado do funil diretamente das "Configurações de estado" .
Parâmetros:
order_id - ID do negócio do cliente
Você pode chamar a função com ou sem o parâmetro order_id. Se order_id for omitido, a função retornará o ID do estado do funil para o negócio ativo atual.
Para uso correto de order_id:
- Você pode especificá-lo manualmente obtendo o ID do negócio e passando-o como parâmetro da função quando quiser direcionar um negócio específico.
- Recupere-o usando a função get_order_id(), porque a variável order_id embutida retorna um valor no formato {client_id}-{order_id}, o que pode causar comportamento incorreto.
Movendo um lead através do funil do MavibotCRM por ID de estado
change_state(state_id, order_id)
Parâmetros:\ ! state_id - ID do estado do funil
order_id ( opcional) - o ID do negócio a ser movido através do funil. Se omitido, o negócio ativo atual será movido.
Obtendo ID do negócio por nome e valor da variável
get_order_id_by_var_value(var_name, var_value, client_id)
Parâmetros:\ ! var_name - nome da variável\ ! var_value - valor da variável;
client_id - (opcional) ID do negócio do cliente; o padrão é o ID do cliente no bot
Obtendo data e hora do negócio mais recente
latest_order_datetime(client_id, dt_fmt)
Parâmetros:
client_id - (opcional) o ID do negócio do cliente; o padrão é o ID do cliente no bot;
df_fmt - (opcional) formato para a data e hora retornadas; o padrão é "%d.%m.%y %H:%M"
Obtendo número de negócios do cliente
count_client_orders(client_id, state_id, get_all, active)
Parâmetros:
client_id - (opcional) o ID do negócio do cliente; o padrão é o ID do cliente no bot;
state_id - (opcional) o ID do estado do negócio no funil;
get_all - (opcional) sinalizador de filtro para o parâmetro active; o padrão é 1 (a filtragem por active está desabilitada);
active - usado apenas quando get_all é 0; filtra negócios ativos; o padrão é 1 (retorna apenas negócios ativos);
Obter contagem de negócios em um estado de negócio específico
get_count_orders(id) - retorna o número de negócios atualmente em um estado de funil específico pelo ID do estado.
A função recebe um único parâmetro:
! id - o ID do estado do negócio.
Exemplo de uso da função:


O ID do estágio pode ser encontrado nas configurações.
Em seguida, você precisa inserir a função na calculadora da seguinte forma:

Ao testar o bot, a resposta do bot consistirá no número de negócios no estado especificado pelo valor passado para a função.
Excluindo um negócio
delete_order(order_id) — exclui um negócio no MaviBotCRM.
order_id - (opcional) o ID do negócio a ser excluído. Se omitido, o negócio mais recente será excluído.
Todas as funções são simples de usar.
Por exemplo, vamos criar um novo negócio e enviar seu número para o cliente:


Você pode obter o ID do negócio ativo atual do cliente usando a função get_order_id(), ou recuperar a lista completa de negócios do cliente usando get_active_orders_ids().




Definindo uma tag de negócio bem-sucedido
set_order_status_success()
Descrição
set_order_status_success(order_id)
Parâmetros:
order_id - o ID do negócio. Se o parâmetro não for especificado, a tag será definida para o negócio ativo atual.
Definindo uma tag de negócio com falha
set_order_status_fail()
Descrição
set_order_status_fail(order_id)
Parâmetros:
order_id - o ID do negócio. Se o parâmetro não for especificado, a tag será definida para o negócio ativo atual.
Definindo uma tag de negócio arquivado
set_order_status_archive()
Descrição
set_order_status_archive(order_id)
Parâmetros:
order_id - o ID do negócio. Se o parâmetro não for especificado, a tag será definida para o negócio ativo atual.
Exemplos
/*Arquivar o negócio ativo atual*/
res_arh = set_order_status_archive()


