Bibliotecas blocos - Habilidades prontas 23 de janeiro de 2026 19:01 Atualizado Índice: Introdução Conceitos básicos Visão macro A biblioteca Habilidades Agente Cadastro Caso de uso IntroduçãoA biblioteca de blocos foi criada para facilitar o dia a dia de quem precisa construir um contato inteligente sem ter um profundo domínio técnico e precisa de velocidade para publicar. Com ela, será possível aplicar tanto habilidades determinísticas básicas como Onboarding, LGPD, Inatividade, Cascata de validação, Algo mais, Finalização e CSAT quanto estruturas utilizando os agentes builder. Conceitos básicosA estrutura para a utilização dos blocos prontos é pensada na arquitetura de roteador para o bom funcionamento em que cada conjunto de blocos prontos ficará dentro de um builder/Studio conectados a um roteador. Dessa forma o contato inteligente fica de fácil manutenção e evolução. É possível utilizar os blocos prontos dentro de um único builder/Studio? Sim é possível, mas existirá um desafio para fazer evoluções e manutenções devido a interconexão entres os blocos, que caso precise editar uma parte específica da estrutura será necessário entender quais outras partes que estão conectadas a parte que será editada ou evoluída assim causando um gasto de tempo elevado para configurar. Visão macroÉ importante antes de começar a utilizar a biblioteca ter bem definida a estrutura conversacional que será feita e como as partes dessa conversa vão interagir entre si. Normalmente uma conversa tem um início, meio e fim seguindo um objetivo principal. A visão macro é muito parecida com fluxogramas de BPMN. Nessa visão é importante visualizar os caminhos, os gatilhos de decisão e ter símbolos que representam os eventos dentro da estrutura da conversa. A bibliotecaA biblioteca de blocos está dividida em Habilidades, Agentes e Casos de uso. Habilidade é um conjunto de blocos padrão com um objetivo específico dentro da conversa do contato inteligente. Agente pode ser um bloco de agente ou um conjunto de blocos agentes e blocos padrão, sendo que os blocos de agente são fundamentais para o objetivo específico dentro do contato inteligente Caso de uso é um conjunto de habilidades e agentes para um objetivo específico dentro de uma jornada do contato inteligente. Cada opção dentro da biblioteca está com uma tag e pode ser buscada na barra de busca como representado na imagem abaixo: Os blocos prontos Habilidades: Onboarding LGPD Inatividade Opt-In/Out Algo Mais Finalização CSAT Transbordo Dados Pessoais Cascata de Validação Agente: Caso de uso: Cadastro Qualificação de Leads HabilidadesOnboardingOrienta e dá boas-vindas ao usuário, explicando como começar a usar o serviço e realiza as tratativas de saudação ou retorno e se a LGPD já foi respondida. Bloco | [LOGIC] A.1.0.0 Validação de entrada É utilizado a variável {isNewUser} dentro das condições de saída para entender se é a primeira vez que a pessoa está conversando com o contato e direcionar para o bloco correspondente. Ação registro de eventos de origem Bloco | [MSG] A.2.0.0 Sim validação Conteúdo de mensagem de primeiro acesso do usuário, ações de registro de eventos de origem e exibição e definição da variável {isNewUser} nas ações. A condição de saída é apenas se a resposta do usuário existe. Bloco | [MSG] A.3.0.0 Não validação Conteúdo de mensagem de retorno do usuário, ações de registro de eventos de origem e exibição. A condição de saída é apenas se a resposta do usuário existe. Bloco | [LOGIC]LP.1.0.0 - LGPD Validação Validação se a pessoa já respondeu os termos da LGPD. Através da validação se a variável {userAceptedPrivacyPolicy} existe e se é igual a resposta do usuário foi sim ou não o aceite. Ação de registro de eventos de origem, LGPD validação e LGPD não respondeu. Bloco | REDIRECT SERVICE Ação de redirecionamento de serviço para um outro serviço/habilidade dentro da ação de saída. LGPD:Explica brevemente o que é a LGPD e coleta o aceite da pessoa usuária para que o Contato Inteligente possa coletar dados sensíveis. Bloco | [START] Entrada da habilidade utilizando a condição de saída se a variável {input.content@redirectId} existe e direciona pelo ID do bloco. Bloco | [INPUT] LP.2.0.0 - LGPD Descrição sobre a LGPD com o link para ver com mais detalhes junto com as opções para a pessoa selecionar se aceita, não aceita e saber mais. Bloco | [LOGIC] LP.2.0.0 - [Não] Aceite LGPD Faz a validação através de um script da opção escolhida. Bloco | GOTO LP.2.0.0 - Service Name Redireciona para o serviço/habilidade caso a pessoa tenha aceitado os termos do acordo. Bloco | [INPUT] LP.3.0.0 - Não concorda com LGPD Se a pessoa não aceitar os termos é mostrado uma mensagem reforçando que é necessário o aceite para continuar com a conversa. Apresenta as mesmas opção e sim, não e saber mais Bloco | LP.4.0.0 - Saber Mais Detalhamento sobre a LGPD Bloco | [LOGIC] LP.3.0.0 - Não concorda com LGPD Faz a validação através de um script da opção escolhida. Bloco | GOTO LP.3.0.0 - Service Name Redireciona para o serviço/habilidade caso a pessoa tenha aceitado os termos do acordo. Bloco | REDIRECT SERVICE Ação de redirecionamento de serviço para um outro serviço/habilidade dentro da ação de saída. Bloco | Redirect Inatividade Redirecionamento para a habilidade de inatividade e retornar para o ponto onde está esperando um input do usuário. Inatividade: Manda uma mensagem para resgatar a conversa do usuário com o Contato Inteligente após período inativo. Bloco | [INPUT] I.1.0.0 - Inatividade Mostra a mensagem e solicita se a pessoa quer continuar na conversa Bloco | [LOGIC] I.1.0.0 - Inatividade Através da variável {setValidation} é feita a validação para entender se a pessoa irá continuar ou não no fluxo Bloco | [INPUT] I.1.2.0 Encerramento Conteúdo de Mensagem de finalização. Bloco | REDIRECT SERVICE Ação de redirecionamento de serviço para um outro serviço/habilidade dentro da ação de saída. Opt-In/Out:Gerencia a autorização do usuário para receber ou não comunicações Bloco | [INPUT] I.1.0.0 - optin Conteúdo de mensagem solicitando se a pessoa gostaria de receber uma notificação. Bloco | [LOGIC] I.1.0.0 - OPT-IN Validação da opção escolhida através de um script. Bloco | OPT 1.0.1 - Aceite Opt-in Mensagem quando a pessoa aceitar receber a notificação. Bloco | OPT 2.0.0 - Opt out Mensagem quando a pessoa quer parar de receber a notificação, informando que o nome foi retirado da lista de disparo. Bloco | OPT.1.0.2 - Não aceite Mensagem quando a pessoa não quer receber a notificação. Bloco | REDIRECT SERVICE Ação de redirecionamento de serviço para um outro serviço/habilidade dentro da ação de saída. Bloco | Redirect Inatividade Redirecionamento para a habilidade de inatividade e retornar para o ponto onde está esperando um input do usuário. Algo Mais:Verifica se a pessoa deseja acrescentar informações ou conversar sobre outro assunto. Bloco | [INPUT] AM.1.0.0 - Algo mais Conteúdo de mensagem perguntando se pessoa precisa de algo mais Bloco | [LOGIC] AM.1.0.0 - Algo mais Validação da opção escolhida por meio de um script. Bloco | REDIRECT SERVICE Ação de redirecionamento de serviço para um outro serviço/habilidade dentro da ação de saída. Bloco | Redirect Inatividade Redirecionamento para a habilidade de inatividade e retornar para o ponto onde está esperando um input do usuário. Finalização:Conclui o atendimento de forma clara, confirmando o encerramento da interação podendo deixar aberto a possibilidade de retorno da conversa Bloco | F.1.0.0 - Finalização Conteúdo de mensagem informando a finalização da conversa e informando a forma de retornar a conversa. Bloco | REDIRECT SERVICE Ação de redirecionamento de serviço para um outro serviço/habilidade dentro da ação de saída. CSAT:Coleta a avaliação de satisfação do usuário após o atendimento. Bloco | [START] Entrada da habilidade utilizando a condição de saída se a variável {input.content@redirectId} existe e direciona pelo ID do bloco Bloco | [MSG] C.1.0.0 Pergunta Resolutividade Conteúdo de mensagem perguntando se a solicitação foi atendida. Bloco | [LOGIC] C.1.0.0 Pergunta Resolutividade Validação da opção escolhida através de um script utilizando a variável {userInput} utilizado nas condições de saída. Bloco | [MSG] C.1.0.1 Resolutividade negativa Conteúdo de mensagem perguntando o que pode ser melhorado. Bloco | [MSG] C.1.1.1 Pergunta CSAT Conteúdo de mensagem perguntando a nota de avaliação. Bloco | [LOGIC] C.1.1.1 Pergunta CSAT Validação da nota de avaliação enviada através de um script utilizando a variável {userInput} Bloco | [MSG] C.1.1.2 Finaliza CSAT Conteúdo de mensagem de finalização Bloco | Redirect Finish Ação de redirecionamento de serviço para a habilidade de finalização. Bloco | Redirect Inatividade Redirecionamento para a habilidade de inatividade e retornar para o ponto onde está esperando um input do usuário. Transbordo:Encaminha o atendimento para um humano quando necessário. Bloco | Customer service Bloco de atendimento com as configurações de atendimento quando não tiver nenhum atendimento ou fora do atendimento. Bloco | ATH.1.0.0 Nenhum atendente disponivel Conteúdo de mensagem informando que não tem atendente disponível e perguntando se a pessoa gostaria de aguardar. Bloco | ATH 1.1.0 Aguarde Conteúdo de mensagem informando para pessoa aguardar Bloco | ATH 1.2.0 Despedida Conteúdo de mensagem finalizando e informando o gatilho para voltar a conversa. Bloco | ATH2.0.0 Fora do horário Conteúdo de mensagem informando que está fora do horário de atendimento junto com os horários de atendimento. Bloco | REDIRECT SERVICE Ação de redirecionamento de serviço para um outro serviço/habilidade dentro da ação de saída. Bloco | Redirect Inatividade Redirecionamento para a habilidade de inatividade e retornar para o ponto onde está esperando um input do usuário. Dados pessoais:Solicita, valida e organiza informações pessoais do usuário com segurança. CPF - Nome - Email - Telefone Bloco | [START] Entrada da habilidade utilizando a condição de saída se a variável {input.content@redirectId} existe e direciona pelo ID do bloco. Bloco | [MSG] Mensagem intro Conteúdo de mensagem informando que será feita a coleta de algumas informações. Bloco | [LOGIC] DC.1.0.0 Pedir cpf? Nas ações de entrada é definido a variável {dadosPessoais} para entender quais serão as informações que serão coletadas. Validação se será necessário pedir o CPF. Bloco | [MSG] DC.1.0.1 Pedir CPF Conteúdo de mensagem solicitando CPF Bloco | [MSG] DC.1.0.1 Pedir CPF Validacao Validação do formato e se é um CPF válido através de script utilizando a variável isValidCpf e adicionado na ação de definir contato no parâmetro documento. Bloco | [LOGIC] DC.1.1.0 Pedir Nome? Valida se o valor nome está ativo na variável dadosPessoais Bloco | [MSG] DC.1.1.1 Pedir Nome Conteúdo de mensagem solicitando Nome Bloco | [LOGIC] DC.1.1.1 Pedir Nome Validacao Validação de formato básico de nome através de script utilizando a variável nameValidation e adicionado na ação de definir contato no parâmetro nome. Bloco | [LOGIC] DC.1.2.0 Pedir E-mail? Valida se o valor e-mail está ativo na variável dadosPessoais Bloco | [MSG] DC.1.2.1 Pedir E-mail Conteúdo de mensagem solicitando Email Bloco | [LOGIC] DC.1.2.1 Pedir E-mail validacao Validação do formato e se é um email válido através de script utilizando a variável hasEmail e adicionado na ação de definir contato no parâmetro email. Bloco | [LOGIC] DC.1.3.0 Pedir Telefone? Valida se o valor e-mail está ativo na variável dadosPessoais Bloco | [MSG] DC.1.3.1 Pedir Telefone Conteúdo de mensagem solicitando Telefone Bloco | [MSG] DC.1.3.1 Pedir Telefone validacao Validação do formato e se é um telefone válido através de script utilizando a variável phoneNumber e adicionado na ação de definir contato no parâmetro email. Bloco | [MSG] Mensagem transição Conteúdo de mensagem informando que os dados foram coletados. Bloco | REDIRECT SERVICE Ação de redirecionamento de serviço para um outro serviço/habilidade dentro da ação de saída. Bloco | Redirect Inatividade Redirecionamento para a habilidade de inatividade e retornar para o ponto onde está esperando um input do usuário. Cascata de Validação:Processo em etapas para confirmar dados fornecidos, validando cada informação antes de prosseguir para a próxima. Hierarquia de validação Atributos Descrição customized_errors Utilizado para validações customizadas que as outras etapas não contemplam, ex: formato de dados solicitados pelo bot. api_error Utilizado para validar se o usuário foi redirecionado a partir de uma falha de chamada HTTP. Se sim, não deverá prosseguir com as demais etapas da cascata. validation_media_error Utilizado para identificar erros de mídia audio_error Adiciona etapa específica para validação de áudio, caso exista. Ex: Blip speech to text link_error Valida se o texto contém apenas link. Quando existir apenas texto ou texto com links, prossegue para a próxima etapa. Caso tenha apenas link, apresenta mensagem e retorna para a skill anterior. emoji_error Valida se o texto contém apenas emojis. Quando existir apenas texto ou texto com emojis, prossegue para a próxima etapa. Caso tenha apenas emojis, apresenta mensagem e retorna para a skill anterior. botxbot_error Valida se o usuário é um bot. Caso os últimos inputs (quantidade ajustável) forem idênticos OU o último input der match com regex de mensagens automáticas, o usuário é considerado um bot. Para prosseguir ele deve enviar texto específico, caso contrário, a sessão é encerrada. non_talkables_error Tratativa para termos sensíveis. Devem ser definidas as variáveis: {{config.utilsApiUrl}}, {{config.utilsApiAuth}}, {{config.globalSheetsId}}, {{config.connectionTalksSheetsTabName}}, {{config.connectionTalksSheetsTabRange}}. clear_text Utilizado para limpeza de texto antes da etapa de regex é chamada ao provedor de NLP. global_regex_error Validação de regex global para inputs em qualquer ponto do bot. long_message_error Utilizado para validar se a mensagem é muito longa para ser enviada para NLP. Quantidade máxima de caracteres atualmente: 100 connection_talks_error Funcionalidade conectada ao serviço de Smalltalks. É responsável por identificar uma small talk e definir a mensagem que será enviada para o usuário em caso de match. Além disso, também é possível definir bot e bloco para destino após o recebimento da mensagem. Devem ser definidas as variáveis: {{config.utilsApiUrl}}, {{config.utilsApiAuth}}, {{config.globalSheetsId}}, {{config.nonTalkableSheetsTabName}}, {{config.nonTalkableSheetsTabRange}}. short_message Utilizado para impedir chamadas ao provedor de NLP caso a mensagem seja muito curta. Verifica se contém 3 ou mais letras. nlp_error Utilizado caso haja integração com provedor de NLP no bot. Devem ser definidas as variáveis de configuração: {{config.AuthorizationApiKeyIA}} e {{config.commandsUrl}} content_assistent Utilizado caso haja integração com assistente de conteúdo. Devem ser definidas as variáveis de configuração: {{config.AuthorizationApiKeyIA}} e {{config.commandsUrl}} Nos atributos non_talkables_error e connection_talks_error existe conexão com sistemas externos para buscar uma resposta de acordo com contexto e ponto da conversa.Assim que a cascata for adicionada dentro da área do Studio através da biblioteca procure o bloco [REQ] set variables:Na aba de ações dentro do script Process ExceptionHierarchy é possível determinar por qual validação estará ativa(true) ou desativada(false) dentro da conversa.Os atributos non_talkables_error e o connection_talks_error estão desativados de forma padrão. Caso queira ativar basta colocar true e salvar. Mas lembre-se de configurar essas validações de acordo com seu contexto. Configuração das HabilidadesPasso a passo:Criar um chatbotAcessar a bibliotecaAdicionando uma habilidadeInstruções Habilidades Cada habilidade importada para dentro da área do builder terá um bloco chamado comece aqui. Nesse bloco terá instruções de configuração da skill importada, basta aplicar as configurações que a habilidade estará funcionando.Normalmente os blocos de boas vindas e erro padrão, que já vem assim que o chatbot é criado, podem ser apagados. Agente CadastroO agente pronto para uso dentro da biblioteca de blocos é um agente de cadastro de informações básicas como nome, e-mail e telefone após a coleta é direcionado para um bloco padrão para dar continuidade a conversa. Imagem Prompt <objetivo>Coletar e validar NOME, EMAIL e TELEFONE do usuário em pt-BR.</objetivo> <diretrizes> <tons>educado, direto, uma pergunta por vez</tons> <regras> <regra>Nunca prossiga para o próximo campo se o atual estiver inválido.</regra> <regra>Sempre explique por que a entrada é inválida e mostre um exemplo válido.</regra> <regra>Ao final, confirme o resumo dos dados antes de encerrar.</regra> </regras> </diretrizes> <fluxo> <passo>Peça o NOME completo.</passo> <passo>Valide e normalize o NOME.</passo> <passo>Peça o EMAIL.</passo> <passo>Valide o EMAIL.</passo> <passo>Peça o TELEFONE (aceite BR e internacional).</passo> <passo>Valide e normalize o TELEFONE.</passo> <passo>Mostre o resumo e peça confirmação (Sim/Não).</passo> </fluxo> <campos> <campo id="nome"> <pergunta>Qual é seu nome completo? Pode ser apenas nome e sobrenome</pergunta> <validacao> <tipo>regex</tipo> <padrao>^(?=.{3,100}$)(?:[A-Za-zÀ-ÖØ-öø-ÿ]+(?:['\-][A-Za-zÀ-ÖØ-öø-ÿ]+)?\s+){1,}[A-Za-zÀ-ÖØ-öø-ÿ]+$</padrao> <falha>Informe nome e sobrenome, usando apenas letras, espaços e acentos. Ex.: "Fulano Silva".</falha> </validacao> <normalizacao> <acao>trim espaços; colapsar múltiplos espaços; Title Case.</acao> </normalizacao> </campo> <campo id="email"> <pergunta>Qual é seu e-mail?</pergunta> <validacao> <tipo>regex</tipo> <padrao>^[A-Za-z0-9._%+\-]+@[A-Za-z0-9.\-]+\.[A-Za-z]{2,}$</padrao> <falha>E-mail inválido. Use o formato "usuario@dominio.com".</falha> </validacao> <normalizacao> <acao>trim; converter domínio para minúsculas.</acao> </normalizacao> </campo> <campo id="telefone"> <pergunta>Qual é seu telefone com DDD? (ex.: (DD) XXXXX-XXXX </pergunta> <validacao> <tipo>regex-multiplo</tipo> <padraoE164>^\+?[1-9]\d{7,14}$</padraoE164> <padraoBR>^(?:\+55\s?)?(?:\(?\d{2}\)?\s?)?(?:9?\d{4})-?\d{4}$</padraoBR> <falha>Telefone inválido. Exemplos: "(DD) XXXXX-XXXX".</falha> </validacao> <normalizacao> <acao>remover caracteres não numéricos (exceto +); se for BR sem +55, prefixar +55; formatar saída em E.164 (ex.: +5531912345678).</acao> </normalizacao> </campo> </campos> <mensagens> <inicial>Vamos prosseguir com um cadastro rápido. Começando pelo seu nome completo.</inicial> <resumo>Confira os dados: Nome: {nome} E-mail: {email} Telefone: {telefone}. Estão corretos?</resumo> <confirmado>Perfeito! Cadastro concluído.</confirmado> <correcao>Sem problemas, vamos ajustar. Qual campo deseja corrigir? (nome/email/telefone)</correcao> </mensagens> <handoff> Se usuário disser "sim" → redirecionar para "novo bloco". </handoff> <saida> <formatoJSON> { "nome": "{nome_normalizado}", "email": "{email_validado}", "telefone": "{telefone_E164}" } </formatoJSON> </saida> Caso de uso - Qualificação de LeadsSendo um caso de uso, um conjunto de habilidades ficará tudo dentro um único builder como na imagem abaixo: Utilizar um único builder para colocar todas as habilidades pode facilitar pelo fato de estar tudo dentro um único ambiente de trabalho, mas em contrapartida terá um desafio caso precise evoluir ou adicionar coisas novas na estrutura conversacional será ter um cuidado redobrado nas conexões entre os blocos. Para saber mais detalhes de como usar e algumas dicas de utilização da biblioteca de blocos, temos um AMA no nosso canal do youtube. Artigos relacionados Studio com Agentes de IA Brain O que é o WhatsApp Flows? Testes Unitários Como criar um bot router com 3 subbots