FAQ
CHATBOT
O que devo fazer se o bot funcionar na janela de teste, mas não funcionar no messenger?
Seu plano não foi pago ou o plano errado foi pago.
Um erro de conexão de canal é outro motivo pelo qual o bot pode não funcionar nos messengers. Nesse caso, recomendamos verificar as configurações de conexão de acordo com as instruções de integração do messenger. ссылка
Como obter um número de telefone válido (ou correto) de um cliente?
Você precisa adicionar validação de número de telefone usando regex.
Expressões regulares permitem que o bot verifique se os dados inseridos estão no formato correto (por exemplo, para garantir que seja um número de telefone e não outra coisa).
Como fazer a verificação?
Ao falar com clientes, muitas vezes é necessário fazer o acompanhamento por telefone. Então, como um chatbot pode coletar automaticamente as informações do cliente? A resposta é simples — usando expressões regulares.
Para usar a função de coleta de número de telefone (ou e-mail), use as seguintes expressões regulares:
Número de telefone (Rússia): ^((\+7|7|8)+([0-9]){10})$ alterar país e número
Número de telefone (com código do país): ^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
E-mail: ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$
Certifique-se de que não haja espaço antes da seta (->) na condição!

Caso contrário, o fluxo do chatbot funcionará com erros.
No fluxo, usamos uma expressão regular para números de telefone de qualquer país.
Assim como o bot salvou o nome e a idade do cliente, ele também salvará o número de telefone ou o e-mail do usuário (se você usar a expressão regular correta).
Crie um bloco em que o bot envia uma mensagem pedindo ao cliente que envie o número de telefone (ou e-mail):

Em seguida, conecte uma seta a partir deste bloco e defina a expressão regular apropriada como condição da seta.

Como mencionado anteriormente, não se esqueça de definir a opção de correspondência para "Expressão regular" para evitar erros no chatbot.
Com a condição de expressão regular, o chatbot só aceitará números de telefone como dígitos e e-mails no formato padrão correto.
Se o cliente enviar uma mensagem que não seja um número de telefone válido (ou e-mail), você pode criar um bloco que avise o cliente de que a entrada está incorreta:

A partir do bloco em que você pediu ao cliente para enviar o número de telefone, crie uma segunda seta e, no novo bloco, escreva uma mensagem como: "Isso não é um número de telefone. Por favor, digite seu número de telefone!"

Escolha o tipo de bloco "Sem estado" (veja a captura de tela acima). Esse tipo de bloco não tem condições como o bloco "Estado do diálogo" e você não pode navegar até ele diretamente.
O bloco "Sem estado" é perfeito no nosso fluxo porque o usuário não conseguirá avançar a partir do bloco anterior sem inserir o número de telefone, garantindo que ele o forneça para continuar no funil.

Você pode ler sobre o bloco "Sem estado" e seus recursos no artigo chamado "Bloco sem estado". ссылка
Você pode encontrar mais detalhes sobre expressões regulares no artigo intitulado "Lista de expressões regulares úteis". ссылка
Como descobrir o número de assinantes do bot?
A seção "Análises" mostra tanto o número total de clientes quanto os números divididos por plataformas de messenger. ссылка


Como fazer o bot iniciar a conversa por conta própria
Cada messenger tem sua própria configuração que permite ao bot enviar a primeira mensagem.
O artigo "Primeira mensagem nos messengers" está aqui. ссылка
Como enviar uma mensagem de "follow-up"?
Às vezes, um cliente pode parar de avançar pelo funil por motivos pessoais. Para lembrar o cliente sobre você, é possível enviar uma mensagem de follow-up usando o bloco "Sem estado".

Esse bloco enviará uma mensagem ao usuário sem movê-lo para nenhum lugar dentro do funil principal.
Você pode ler mais sobre como esses blocos funcionam no artigo "Blocos sem estado". ссылка
Também usamos um temporizador (atraso) nas setas e ATIVAMOS o botão "Cancelar se sair do bloco".

O botão "Cancelar se sair do bloco" significa que a seta só será acionada para usuários que, após o tempo especificado, ainda estejam no bloco verde e não tenham ido para o bloco branco.
Como fazer uma sequência de 2 a 3 mensagens abrir imediatamente?
Você precisa conectar os blocos com setas e definir o atraso para 0 segundos nas configurações de conexão da seta.

Como desativar as respostas automáticas quando um operador ou gerente entra no chat, para que o bot pare de responder?
Você precisa definir um atraso após a resposta do operador.

Como posso rastrear se uma pessoa clicou no link da mensagem anterior?
Para isso, você precisa usar a função de proxy-link.
Vamos criar uma variável chamada link e atribuir a ela o valor de proxy() com o seu link:

Em seguida, crie um botão com sua URL definida para a variável link:

Adicione o botão ao bloco e teste-o. Na conversa com o cliente, você verá uma notificação como esta na seção correspondente:

Tutorial em vídeo
Quero veicular anúncios segmentados para este bot. Onde posso obter o link dele?
Você pode criar um site (landing page) que conterá links para os bots.

Usar um site ou landing page não é obrigatório; você pode simplesmente usar links de proxy.
Você não pode usar links de botões de mini landing page!
A função "Atraso de tempo" é usada para enviar uma mensagem em um horário e data definidos?
Correto. A mensagem será enviada na data e hora definidas nas configurações da seta (conexão).

Se um atraso antes do envio estiver definido, esse atraso será adicionado ao horário especificado. Por exemplo, a mensagem será enviada em 21/07/2025 às 11:00 porque o atraso definido no campo "Atraso antes da resposta" é somado ao horário definido no campo "Hora de envio".
É possível criar dois bots diferentes dentro de uma única conta?
Você pode criar qualquer número de projetos dentro de uma única conta.
É possível configurar uma seta baseada em temporizador com uma condição de transição para que ela não seja agendada após cada mensagem do cliente?
Se por algum motivo você desativou "Cancelar mensagens com atraso" mas ainda usa uma transição baseada em temporizador com condição, recomendamos adicionar #{question} ao campo "Strings às quais não responder".

Por que o texto "¶" escrito no bloco é substituído por "¶"?
Infelizmente, neste caso, o próprio navegador entra em ação, detectando o que ele acha que é um erro e substituindo automaticamente ¶ por ¶, que então é exibido como o símbolo "¶". Para evitar esse problema, recomendamos usar &Para em vez disso.
É possível configurar notificações para o nosso administrador quando um cliente envia uma mensagem no chat online?
Sim, é possível. Você pode encontrar mais detalhes sobre isso no artigo:
É possível ter links diferentes para o bot com lógicas diferentes?
Mensagem para o suporte:
"Boa tarde! Temos a seguinte situação: Temos dois links idênticos que levam ao mesmo site, mas fizemos a divisão para entender de onde vêm os leads.
É possível fazer isso usando apenas um bot?
Em outras palavras, um link estará no cabeçalho do perfil do Telegram, e o outro será usado nos nossos anúncios, e queremos separar esses dois canais usando um único bot."
Sim, você pode criar dois sites (landing pages) no construtor e atribuir a cada um sua própria tag:
Crie dois sites com tags diferentes:

Depois, nos blocos iniciais, especifique as tags na condição do bloco:
a) Em outras palavras, quando um usuário entra no messenger pela landing page "Curso", esta configuração será aplicada:

b) Quando um usuário entra no messenger pela landing page "Treinamento", o segundo funil será acionado:

É possível enviar uma mensagem no dia seguinte à primeira mensagem do bot?
Mensagem para o suporte:
"Tenho a seguinte situação: Uma pessoa clica em um anúncio e entra no bot, recebendo uma mensagem de boas-vindas. Preciso enviar a ela um link exatamente às 12h do dia seguinte. Como posso configurar isso?"
Sim, você pode. No campo "data de envio" da seta, você precisa especificar a variável next_day junto com o horário desejado de envio.

Como posso configurar o bot para que ele não interfira na comunicação entre clientes e operadores?
Na configurações do projeto, existe um campo chamado "Tempo em minutos durante o qual o bot pausa após a resposta do operador."

A contagem regressiva começa no momento em que o operador envia uma mensagem. Se você definir acidentalmente um valor muito alto e o bot parar de responder ao cliente por muito tempo, defina o campo como 0 e avise o cliente.
Como configurar o cancelamento da inscrição via chatbot?
ANEXOS DE ARQUIVOS
Posso anexar imagens?
Sim, o bot pode enviar imagens nas mensagens. Para isso, no construtor, selecione o bloco desejado, adicione um anexo e escolha o tipo apropriado (por exemplo, imagem):

Mais detalhes sobre o envio de anexos podem ser encontrados aqui. ссылка
Como posso enviar várias imagens (arquivos)?
Os blocos agora suportam a adição de vários anexos do mesmo tipo:

Você também pode criar vários blocos consecutivos, cada um enviando um anexo sem texto ao especificar a variável #{none} no campo de resposta.
Por que os links aparecem em vez dos arquivos?
Isso significa que você selecionou o tipo de envio do arquivo como link, ou houve um erro ao enviar o arquivo. Recomenda-se verificar se o arquivo existe no link.
Aqui estão alguns detalhes sobre o envio de arquivos:
Ao fazer upload, os arquivos devem ter nomes diferentes porque eles são salvos no servidor. Cada projeto tem sua própria pasta, e nomes de arquivos duplicados não são permitidos.
Se você enviar um arquivo como link, certifique-se de que o link está funcionando.
Arquivos de vídeo enviados como "vídeos para visualização" não são compatíveis.
Excluir um bloco também exclui o arquivo anexado.
Como faço para que a prévia de um link apareça?
Ao adicionar links no texto da mensagem, você pode ativar a exibição da prévia do link da seguinte forma:

A transformação de um link em uma prévia bonita ao enviá-lo em redes sociais ou messengers como Telegram, WhatsApp, Facebook é tratada pela marcação Open Graph.
A marcação Open Graph consiste em meta tags adicionais que incluem o título (og:title), a descrição (og:description) e a imagem (og:image).
Quando você altera a imagem ou a descrição da prévia de um link, você precisa limpar o cache usando ferramentas especiais.
Qual é o tamanho máximo do arquivo?
O tamanho máximo do arquivo para upload no construtor é 20 MB; não há limites de tamanho ao enviar por link.
Como posso enviar um texto ou imagem aleatórios?
Recebemos frequentemente perguntas sobre como enviar um valor, imagem etc. selecionado aleatoriamente de um conjunto de dados. Aqui está uma explicação detalhada:
Formato da função:
random(low, high) - Para obter um número aleatório,
a função recebe dois parâmetros como entrada: o limite inferior e o limite superior.
Exemplo: random(-10,10)
O resultado é um número inteiro entre -10 e 10.
Obtendo um valor aleatório de um conjunto de dados
Por conjunto de dados, entendemos qualquer fonte de informações armazenadas — um array, dicionário ou tabela.
Vamos ver um exemplo usando um array:
Declaração do array:
text = { "1": "A ensolarada Itália espera por você", "2": "Acho que a elegante França vai levantar seu ânimo", "3": "É hora de visitar as margens da nossa Crimeia", "4": "Explore os cantos da sua terra natal" }picture = { "1": "https://i.ibb.co/k4prZK0/itperv.jpg", "2": "https://i.ibb.co/mTthk8t/image.jpg", "3": "https://i.ibb.co/dJ1d6XK/5d42d4f8a593ad12cf3fb394-1.jpg", "4": "https://i.ibb.co/Y3YYGQD/DSCF6408-2.jpg" }Selecione um valor aleatório: vibor=random(1,4)
Obtenha os valores dos arrays usando o número selecionado: txt = get(text, '#{vibor}') pct = get(picture,'#{vibor}')
Exiba os resultados para o cliente. Exemplo:

Ao trabalhar com tabelas, a abordagem é a mesma que com arrays e dicionários: você precisa preencher os dados primeiro e depois ler uma linha selecionada aleatoriamente da tabela.
FUNIL
Como posso dividir um funil por messengers?
Para identificar de qual messenger o cliente veio, existem as variáveis integradas #{client_type} e #{messenger}. Ambas contêm informações sobre o messenger, mas #{client_type} retorna um número, enquanto #{messenger} retorna o nome.
Por exemplo, se uma pessoa veio do Chat Online, #{client_type} retorna 5, e #{messenger} retorna "Chat Online".
Aqui estão os valores para client_type:
1
Telegram
2
Viber
3
Facebook messenger
5
chat online
10
14
16
Conta Empresarial do Telegram
Você pode encontrar mais detalhes sobre variáveis aqui. ссылка
Vamos ver alguns exemplos:
Para determinar de qual messenger o cliente está escrevendo, crie 3 ramificações. No campo "Variável para comparação" de cada seta, especifique as condições correspondentes:

Com base no messenger que o cliente usa, ele seguirá o caminho apropriado no funil e chegará ao bloco correspondente.
Se o cliente enviar mensagem pelo Telegram, ele será direcionado ao bloco chamado "Você é do Telegram":

Se o cliente enviar mensagem por outro messenger ou pelo chat online, ele será direcionado ao bloco chamado "Você não veio do Telegram":

Como posso dividir um funil com base em diferentes logins?
Para usuários conectados a várias contas dentro do mesmo messenger, pode ser difícil separar a funcionalidade do funil por conta. Para resolver isso, há uma variável integrada chamada #{group}. Ela retorna o identificador da conta do bot com a qual o cliente está interagindo.
Exemplo:
Na seção "Canais", dois bots do Telegram estão conectados. Por favor, copie o group_id:

Você pode usar a comparação do valor da variável group tanto em blocos condicionais quanto em setas. Para isso, use o "Variável para comparação" .
Divida os funis nos blocos iniciais:
Nestes blocos, as condições para iniciar o funil são as mesmas, mas o campo "Variável para comparação" verifica o valor da variável group.
Este bloco com a condição "start" só será acionado no bot correspondente:


Para dividir o funil pelos logins do bot, você também pode comparar o valor da variável group nas conexões (setas). Assim, dependendo de qual bot o cliente usa, os usuários receberão mensagens diferentes em etapas específicas do funil.

Você pode encontrar mais detalhes sobre variáveis aqui. ссылка
Como posso notificar um administrador se um usuário enviar uma mensagem fora do funil?
Existem várias maneiras de lidar com isso.
Opção 1: Crie um bloco "Sem estado com condição" que reaja a mensagens fora das condições definidas do bot e configure a calculadora: message(187235469, 'Fez uma pergunta https://mavibot.ai/projects/#{project_id}/clients/#{client_id}') em que o primeiro parâmetro (187235469) é o client_id do gerente.
Você pode saber mais sobre como a função message() funciona neste artigo. ссылка
Opção 2:
Nas configurações do projeto, coloque isto no campo "Mensagem se o bot não souber a resposta":
#{substring(message(187235469,'Fez uma pergunta https://salebot.pro/projects/#{project_id}/clients/#{client_id}'),4)}.

Então o administrador do seu projeto receberá uma notificação para qualquer mensagem que o bot não souber responder.
OUTROS
Onde posso encontrar o número do projeto?
Você pode encontrar o número do projeto na barra de endereços do seu navegador:

Além disso, você pode encontrá-lo na lista de projetos:

Como atualizar o cache do link Open Graph?
Telegram
Inicie o bot @webpagebot e envie o link desejado. Em seguida, limpe o cache selecionando um dos comandos [update …].

Facebook
Vá para a página do depurador de compartilhamento, insira o link no campo e clique em Depurar. Em seguida, selecione "Scrape again" para atualizar a imagem e a descrição do link.
No WhatsApp, os links geralmente são atualizados automaticamente.


Como verificar se um participante do chat está em uma lista específica?
Veja como aplicar isso na prática: Imagine que você distribuiu um link para um chat privado. Sim, o link é de uso único, mas um cliente esperto pode entrar no chat pela conta de outra pessoa. O bot nunca viu esse usuário antes, então não pode expulsá-lo após o não pagamento — e ele continua consumindo seu conteúdo de graça.
Para evitar isso:
Adicione os usuários pagantes a uma lista
Crie uma lista separada para curadores/administradores/membros VIP
Quando alguém novo entra no chat, o bot verifica se a pessoa está em alguma das listas. Se não estiver, ela é removida sem misericórdia.
Então, as funções que você precisará para essa configuração são: - add_to_list(número da lista)- para adicionar um usuário a uma lista - tg_create_chat_invite_link(platform_id, member_limit=None, hours=None, request=None) - para criar um link de convite do chat (com tratamento de callback) - some_client_in_list(list_id, recepient) - para verificar se um participante está em uma lista específica - tg_ban_chat_member(platform_id, user_id, hours=99999, revoke_messages=True) - para banir um usuário do chat
Como posso obter links para os messengers?
Você pode usar o link do seu bot no messenger para convidar clientes.
Os links dos messengers podem ser encontrados na seção "Canais":

Em seguida, selecione o messenger para o qual você deseja obter o link. Cada messenger conectado tem seu próprio link exclusivo.
Você também pode criar um site onde todos os links dos messengers serão exibidos:

Não é obrigatório usar um site ou landing page; você pode simplesmente usar links de proxy.
Atualizado