# Trabalhando com clientes e CRM

## Trabalhando com clientes

<mark style="color:vermelho;">**LEGENDA:**</mark>

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()

<details>

<summary>Descrição</summary>

**was\_in\_state(message\_id)**\
verifica se um cliente estava no estado selecionado (bloco). Você pode obter o número do bloco no editor.

<figure><img src="/files/1ee0313388dcb1a658ab5ca25b02a2f1665b7b9b" alt=""><figcaption><p>A linha superior do editor de blocos exibe o número do bloco.</p></figcaption></figure>

**days\_from\_last\_message()**\
determina o número de dias desde a última mensagem do cliente. Criada para verificar se está dentro da janela de 24 horas.

Exemplo: \
`d = days_from_last_message()`

{% hint style="info" %}
Se tiverem se passado mais de 30 dias desde a última mensagem do cliente, a função retornará o valor 9999.
{% endhint %}

\
**livre*****\_*****cliente()**\
desatribui o operador responsável.\r Exemplo: free\_client()

**assign\_to\_user(email, only\_active)**\
atribui um diálogo a um operador, onde:

1. email - um parâmetro string (opcional). Se apenas o e-mail for fornecido, um diálogo será atribuído ao operador especificado независимо de seu status atual.&#x20;
2. only\_active - True ou False (parâmetro opcional). Se definido como True, um diálogo será atribuído ao operador especificado somente se ele estiver em turno no momento.

Exemplos:

`assign_to_user()` - atribui um diálogo a um operador aleatório que está em turno no momento&#x20;

`assign_to_user('e-mail do operador')` - atribui um diálogo ao operador независимо de seu status

`assign_to_user('e-mail do operador', True)` - atribui um diálogo ao operador especificado somente se ele estiver em turno no momento

**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 e-mail de um operador responsável

Exemplo: `get_operator()`&#x20;

Pode ser usada 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()`&#x20;

Pode ser usada 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á o e-mail dele.

**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"** setas. Para manter mensagens das **"setas Não cancelar"** setas, passe o parâmetro False: delete\_pended\_messages(False).

**set\_note(comment)**\
adiciona um comentário a um diálogo.

Exemplo: **`set_note`**`('Redo')`

**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; nesse caso, o diálogo com o cliente mostrará um indicador de +1 mensagem não lida.

<div data-with-frame="true"><figure><img src="/files/141ef74ec885a95c4c07d1483aa3d4dedcf600b3" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/bc91a90de163c78ec594e4058496dbc0e0b765c7" alt="" width="375"><figcaption></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/28ad5acee0fa0619987bfdef1982d09fbefc01dc" alt="" width="563"><figcaption></figcaption></figure></div>

**clear\_unread()**\
marca um diálogo como lido

**unsubscribe()**\
Função para cancelar a inscrição em mensagens do bot. Um exemplo é fornecido [neste artigo.](/doc/pt/envios-empresariais/descadastrando-se-do-bot.md)&#x20; Para o cliente desinscrito, aparecerá um símbolo — uma mensagem vermelha com um X.

<div data-with-frame="true"><figure><img src="/files/0270e70ed5b73a4d55c5d669248d09613bd546e3" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/ae7ca9e64e0d61552a53f54a4efd7e774537c4f3" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="info" %}
**Importante!**

O **O Calculador é executado primeiro**, e somente depois a mensagem é enviada.

Portanto, se você precisar enviar uma mensagem final como **"Você foi desinscrito do bot"** ou **"Você foi bloqueado"**, você deve usar um processo em duas etapas:

1. **Primeiro, envie um bloco** contendo a mensagem final.
2. **Depois, envie um bloco vazio** contendo a função de cancelar inscrição/bloquear.

**Se você tentar fazer os dois em um único bloco, a mensagem não será enviada.**
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/7fe4aa35be9d20e5b5a5d9d3ecc6e11b380da616" alt="" width="563"><figcaption></figcaption></figure></div>

Se você colocar a `unsubscribe()` função no calculador do mesmo bloco da sua mensagem, a mensagem **não será enviada**, e o sistema exibirá um erro.

<div data-with-frame="true"><figure><img src="/files/a97a3e05bf0f3b280a5aeaf6a2f223d875edcc3b" alt="" width="563"><figcaption></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/11b901af4dd8ddb884a984f86297c4da2715ccb2" alt="" width="563"><figcaption></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/2e9e4e3b32d0d5fd272f277f0685f3b830e1bc4f" alt="" width="563"><figcaption></figcaption></figure></div>

**unblock\_client()**\
desbloqueia o cliente. O cliente poderá interagir com o bot novamente 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("John Smith")

**get\_bind\_clients()**\
uma função sem parâmetros que retorna uma matriz 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á no momento.

Se o negócio do cliente estiver no estágio "não processado", ela retornará None.

</details>

## Trabalhando com tarefas&#x20;

{% hint style="success" %}
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.**
{% endhint %}

{% hint style="info" %}
O MaviBot usa o formato de data **"dd.mm.aaaa"** e o formato de hora **"HH:MM"**.
{% endhint %}

create\_task() | update\_task() | done\_task() | delete\_task()

<details>

<summary>Descrição</summary>

**create\_task(email, name, date\_srok, description, time\_srok)** – cria uma tarefa

Parâmetros:\ <mark style="color:vermelho;">**!**</mark>**&#x20;email** - e-mail da pessoa responsável\ <mark style="color:vermelho;">**!**</mark>**&#x20;name** - nome da tarefa\ <mark style="color:vermelho;">**!**</mark>**&#x20;date\_srok** - data de vencimento, data\ <mark style="color:vermelho;">**!**</mark>**&#x20;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:\ <mark style="color:vermelho;">**!**</mark>**&#x20;task\_id**- ID da tarefa\ <mark style="color:vermelho;">**!**</mark>**&#x20;email** - e-mail da pessoa responsável\ <mark style="color:vermelho;">**!**</mark>**&#x20;name** - nome da tarefa\ <mark style="color:vermelho;">**!**</mark>**&#x20;date\_srok** - data de vencimento, data\ <mark style="color:vermelho;">**!**</mark>**&#x20;description** - descrição da tarefa\
**time\_srok** - hora de vencimento, hora

**done\_task(task\_id)**- marca uma tarefa como concluída

Parâmetros:\ <mark style="color:vermelho;">**!**</mark>**&#x20;task\_id**- ID da tarefa

**delete\_task(task\_id)** – exclui uma tarefa

Parâmetros:\ <mark style="color:vermelho;">**!**</mark>**&#x20;task\_id**- ID da tarefa

</details>

<details>

<summary>Exemplos</summary>

Vamos criar uma tarefa para o operador:

<div data-with-frame="true"><figure><img src="/files/aa7ff19692a7f9c0674ddeb758fa02b939c0c614" alt="" width="563"><figcaption></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/a6fa3fd547d8149b62bc3ace463ba6bffa24fee4" alt="" width="563"><figcaption><p>Atualização da tarefa</p></figcaption></figure></div>

Marque a tarefa como concluída.

<div data-with-frame="true"><figure><img src="/files/e6e7a47ea08165795ea4b2dafd73b25b3accc8d7" alt="" width="563"><figcaption><p>Marcação da tarefa como concluída</p></figcaption></figure></div>

Exclusão da tarefa

<div data-with-frame="true"><figure><img src="/files/8c3d5a2d741f461efbe5d2bd3f74725145fe7d44" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Exemplo de código para copiar</summary>

`task_id=create_task('admin@mavibot.ai', 'Teste', '22.01.2023', 'tarefa de teste', '08:00') status=delete_task(task_id)`

</details>

## 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)

<details>

<summary>Descrição</summary>

<mark style="color:padrão;background-color:blue;">**Obtendo o ID do negócio atual**</mark>

**get\_order\_id()** - retorna o estado do negócio.

<mark style="color:padrão;background-color:blue;">**Criando um novo negócio**</mark>

**create\_order(name, budget, description, client\_name, phone, email, state\_id)**\
O negócio atualmente ativo no funil, junto com suas variáveis, estará disponível apenas nas funções relacionadas a negócios e no CRM.\
\
**Parâmetros da função:** \ <mark style="color:vermelho;">**!**</mark>**&#x20;name** - (opcional), o nome do negócio. Se não for fornecido, a função se aplica ao negócio ativo atual do cliente.

<mark style="color:vermelho;">**!**</mark>**&#x20; budget** - (opcional) o valor do negócio. Se não for fornecido, aplica-se ao negócio ativo atual.\nSe **budget** não for um número, a função retornará: **o budget deve ser um número**

**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 e-mail de um novo cliente.

Para criar um cliente, é necessário fornecer pelo menos telefone ou e-mail. Se o telefone for fornecido e não existir nenhum cliente com esse telefone no projeto, um novo será criado.

Se o e-mail for fornecido sem telefone e não existir nenhum cliente com esse e-mail, um novo será criado.

Parâmetro adicional:

**state\_id** - número, permite definir o estado inicial do negócio na criação

<mark style="color:padrão;background-color:blue;">**Definir ou atualizar o nome do negócio**</mark>

**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 for fornecido, a alteração se aplica ao negócio ativo atual do cliente.

<mark style="color:padrão;background-color:blue;">**Definir ou atualizar o orçamento do negócio**</mark>

**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 for fornecido, aplica-se ao negócio ativo atual do cliente.

Para usar order\_id corretamente:

1. 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.

<div data-with-frame="true"><figure><img src="/files/0ef23882638c969b9b59183d6ec6641755f8abb0" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/82dc4cb11e1523e688a1efcf738fce0a80a065bd" alt="" width="375"><figcaption></figcaption></figure></div>

1. Recupere-o usando a função get\_order\_id(), porque a variável interna order\_id retorna o valor no formato {client\_id}-{order\_id}, o que pode causar comportamento incorreto.

<mark style="color:padrão;background-color:blue;">**Recuperando listas de negócios**</mark> \
((excluindo negócios arquivados, bem-sucedidos ou malsucedidos))

**get\_active\_orders\_ids()**&#x20;

<mark style="color:padrão;background-color:blue;">**Obter uma lista de IDs de negócios bem-sucedidos**</mark>

**get\_success\_orders\_ids()**&#x20;

<mark style="color:padrão;background-color:blue;">**Obter uma lista de IDs de negócios malsucedidos**</mark>

**get\_fail\_orders\_ids()**

<mark style="color:padrão;background-color:blue;">**Recuperando o valor de uma variável do negócio**</mark>

**get\_order\_var(order\_id, variable)**&#x20;

Parâmetros:

<mark style="color:vermelho;">**!**</mark>**&#x20;order\_id** - ID do negócio&#x20;

<mark style="color:vermelho;">**!**</mark>**&#x20;variable** - nome da variável cujo valor você deseja recuperar

<mark style="color:padrão;background-color:blue;">**Recuperando dados do negócio**</mark>

**get\_order\_vars(order\_id, names)**&#x20;

Parâmetros:

<mark style="color:vermelho;">**!**</mark>**&#x20;order\_id** - ID do negócio

**names** - uma matriz de nomes de variáveis a recuperar. Se omitida, a função retorna todas as variáveis do negócio especificado

A função retorna um dicionário contendo as variáveis listadas na **names** matriz para o negócio identificado por **order\_id**. Se **names** não for fornecido, ela retorna um dicionário com todas as variáveis do negócio especificado.

<mark style="color:padrão;background-color:blue;">**Adicionando uma variável ao negócio**</mark>

**set\_order\_var(order\_id, variable, value)**

Parâmetros:

<mark style="color:vermelho;">**!**</mark>**&#x20;order\_id** - ID do negócio

<mark style="color:vermelho;">**!**</mark>**&#x20;variable** - o nome da variável a adicionar ou atualizar em um negócio

{% hint style="warning" %}
Se você quiser alterar os parâmetros "name" ou "description" do negócio, use os nomes de variável "name" ou "description", respectivamente.
{% endhint %}

<mark style="color:vermelho;">**!**</mark>**&#x20;value** - valor da variável

<mark style="color:padrão;background-color:blue;">**Adicionando várias variáveis ao negócio**</mark>

**set\_order\_vars(order\_id, variables\_dict)**&#x20;

Parâmetros:

<mark style="color:vermelho;">**!**</mark>**&#x20;order\_id** - ID do negócio.&#x20;

<mark style="color:vermelho;">**!**</mark>**&#x20;variables\_dict** - um dicionário de variáveis

<mark style="color:padrão;background-color:blue;">**Movendo para o próximo estado do funil**</mark>

**move\_order\_to\_next\_state(order\_id)**&#x20;

Parâmetros:\
**order\_id** - ID do negócio. Se não for especificado, o negócio ativo atual será movido.\nA ordem dos estados do negócio é definida de acordo com a sequência configurada no MavibotCRM.

<mark style="color:padrão;background-color:blue;">**Obtendo o estágio do funil no MavibotCRM**</mark>

**get\_state\_id(client\_id, order\_id)** \
Você também pode copiar o ID do estado do pipeline 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 **order\_id** parâmetro. Se order\_id for omitido, a função retornará o ID do estado do pipeline para o negócio ativo atual.

Para uso correto de order\_id:

1. 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.
2. Recupere-o usando a função get\_order\_id(), porque a variável interna order\_id retorna um valor no formato {client\_id}-{order\_id}, o que pode causar comportamento incorreto.

<mark style="color:padrão;background-color:blue;">**Movendo um lead pelo funil do MavibotCRM por ID de estado**</mark>

**change\_state(state\_id, order\_id)**&#x20;

Parâmetros:\ <mark style="color:vermelho;">**!**</mark> **state\_id -** ID do estado do funil\
**order\_id (** opcional) - o ID do negócio a mover pelo pipeline. Se omitido, o negócio ativo atual será movido.

<mark style="color:padrão;background-color:blue;">**Obtendo o ID do negócio por nome e valor da variável**</mark>

get\_order\_id\_by\_var\_value(var\_name, var\_value, client\_id)

Parâmetros:\ <mark style="color:vermelho;">!</mark> var\_name - nome da variável\ <mark style="color:vermelho;">!</mark> var\_value - valor da variável;\nclient\_id - (opcional) ID do negócio do cliente; por padrão, usa o ID do cliente no bot

<mark style="color:padrão;background-color:blue;">**Obtendo data e hora do negócio mais recente**</mark>

latest\_order\_datetime(client\_id, dt\_fmt)

Parâmetros:\nclient\_id - (opcional) o ID do negócio do cliente; por padrão, usa o ID do cliente no bot;\ndf\_fmt - (opcional) formato para a data e hora retornadas; o padrão é "%d.%m.%y %H:%M"

<mark style="color:padrão;background-color:blue;">**Obtendo o número de negócios do cliente**</mark>

count\_client\_orders(client\_id, state\_id, get\_all, active)

Parâmetros:\nclient\_id -  (opcional) o ID do cliente do negócio; por padrão, usa o ID do cliente no bot;\nstate\_id - (opcional) o ID do estado do negócio no pipeline;\nget\_all - (opcional) sinalizador de filtro para o parâmetro active; o padrão é 1 (a filtragem por ativo está desabilitada);\nactive - usado apenas quando get\_all é 0; filtra negócios ativos; o padrão é 1 (retorna apenas negócios ativos);

<mark style="color:padrão;background-color:blue;">**Obter a contagem de negócios em um estado específico**</mark>

get\_count\_orders(id) - retorna o número de negócios atualmente em um estado específico do pipeline pelo ID do estado.

A função recebe um único parâmetro:

<mark style="color:vermelho;">**!**</mark> id - o ID do estado do negócio.&#x20;

Exemplo de uso da função:

<div data-with-frame="true"><figure><img src="/files/7af83acf1c4dc99b4087da2904fc669c4a7280a1" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/0552cb4027c256f1714b7005bfad78736af4f190" alt="" width="375"><figcaption></figcaption></figure></div>

O ID do estágio pode ser encontrado nas configurações.

Em seguida, você precisa inserir a função no calculador da seguinte forma:

<div data-with-frame="true"><figure><img src="/files/6bb0165e58172de0b5a8912721e2fb2d21f3cc2e" alt="" width="563"><figcaption></figcaption></figure></div>

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.

<mark style="color:padrão;background-color:blue;">**Excluindo um negócio**</mark>

delete\_order(order\_id) — exclui um negócio em **MaviBotCRM**.

order\_id - (opcional) o ID do negócio a excluir. Se omitido, o negócio mais recente será excluído.&#x20;

</details>

<details>

<summary>Exemplos</summary>

Todas as funções são simples de usar.\r\nPor exemplo, vamos criar um novo negócio e enviar seu número ao cliente:

<div data-with-frame="true"><figure><img src="/files/b935b9eb4e5957b08e457057f744f65db3a6bed7" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/1d8000c1ac9261d43f92c14b7a9fbff4dcf0bcd8" alt="" width="563"><figcaption><p>Registro de solicitação do cliente</p></figcaption></figure></div>

Você pode obter o ID do negócio ativo atual do cliente usando a função get\_order\_id(), ou recuperar a lista completa dos negócios do cliente usando get\_active\_orders\_ids().

<div data-with-frame="true"><figure><img src="/files/853e8cf1e868a5b541fb83ff6a31286a69cc5879" alt="" width="563"><figcaption><p>Recuperando o ID do negócio ativo atual</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/7c13579588ada806d198dc894c81dc6709a84c6a" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/38ef89516a4b8475750871d30a08aa0c87d3814f" alt="" width="563"><figcaption><p>Recuperando a lista de negócios ativos</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/5024ff843a1b3fc97fd9f007738ed8dce91883e5" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Exemplo de código para copiar</summary>

<pre><code><strong>/* Criar um novo negócio */
</strong>oid = create_order()

/*Recuperar o ID do negócio ativo do cliente*/
oid = get_order_id()

/*Recuperar a lista de negócios ativos*/
res = get_active_orders_ids()

/*Adicionar ou atualizar uma única variável no negócio*/
res = set_order_var('40630', 'обновлено', '#{current_date}')

vars = {"VAR1": "V111", "VAR2": "V222"}
res2 = set_order_vars('40630', vars)

ovar = get_order_vars('40630')
</code></pre>

</details>

### <mark style="color:padrão;background-color:blue;">**Definindo uma tag de negócio bem-sucedido**</mark>

set\_order\_status\_success()

{% tabs %}
{% tab title="Descrição" %}
**set\_order\_status\_success(order\_id)**&#x20;

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.
{% endtab %}
{% endtabs %}

### <mark style="color:padrão;background-color:blue;">**Definindo uma tag de negócio malsucedido**</mark>&#x20;

set\_order\_status\_fail()

{% tabs %}
{% tab title="Descrição" %}
**set\_order\_status\_fail(order\_id)**&#x20;

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.
{% endtab %}
{% endtabs %}

### <mark style="color:padrão;background-color:blue;">**Definindo uma tag de negócio arquivado**</mark> &#x20;

set\_order\_status\_archive()

{% tabs %}
{% tab title="Descrição" %}
**set\_order\_status\_archive(order\_id)**&#x20;

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.
{% endtab %}

{% tab title="Exemplos" %}
/\*Arquivar o negócio ativo atual\*/

`res_arh = set_order_status_archive()`
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/pt/chatbot/functions/calculadora/crm.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
