Block libraries - Ready-made skills January 23, 2026 19:10 Updated Introduction Basic concepts Macro view The library Skills Registration Agent Use case - Lead Qualification IntroductionThe block library was created to facilitate the day-to-day of those who need to build an intelligent contact without having deep technical mastery and need speed to publish. With it, it will be possible to apply both basic deterministic skills such as Onboarding, LGPD, Inactivity, Validation cascade, Something else, Finalization, and CSAT as well as structures using builder agents. Basic concepts The structure for using ready-made blocks is designed in the router architecture for proper functioning, where each set of ready-made blocks will stay within a builder/Studio connected to a router. In this way, the intelligent contact is easy to maintain and evolve.Is it possible to use ready-made blocks within a single builder/Studio? Yes, it is possible, but there will be a challenge to perform evolutions and maintenance due to the interconnection between the blocks, where if you need to edit a specific part of the structure, it will be necessary to understand which other parts are connected to the part that will be edited or evolved, thus causing a high expenditure of time to configure. Macro view Before starting to use the library, it is important to have the conversational structure that will be made well-defined and how the parts of this conversation will interact with each other. Normally, a conversation has a beginning, middle, and end, following a main objective. The macro view is very similar to BPMN flowcharts. In this view, it is important to visualize the paths, the decision triggers, and to have symbols that represent the events within the conversation structure. The library The block library is divided into Skills, Agents, and Use Cases. Skill is a set of standard blocks with a specific objective within the intelligent contact conversation. Agent can be an agent block or a set of agent blocks and standard blocks, where agent blocks are fundamental for the specific objective within the intelligent contact. Use case is a set of skills and agents for a specific objective within an intelligent contact journey. Each option within the library has a tag and can be searched in the search bar as represented in the image below: Ready-made blocks Skills: Onboarding LGPD Inactivity Opt-In/Out Something Else Finalization CSAT Human Handoff Personal Data Validation Cascade Agent: Use case: Registration Lead Qualification Skills Onboarding Guides and welcomes the user, explaining how to start using the service and performs greeting or return procedures and checks if the LGPD has already been answered. Block | [LOGIC] A.1.0.0 Input validation The {isNewUser} variable is used within the output conditions to understand if it is the first time the person is talking to the contact and direct them to the corresponding block. Source event tracking action. Block | [MSG] A.2.0.0 Yes validation Message content for the user's first access, source and display event tracking actions, and definition of the {isNewUser} variable in the actions. The output condition is only if the user's response exists. Block | [MSG] A.3.0.0 No validation Message content for the user's return, source and display event tracking actions. The output condition is only if the user's response exists. Block | [LOGIC] LP.1.0.0 - LGPD Validation Validation of whether the person has already answered the LGPD terms. Through the validation of whether the {userAceptedPrivacyPolicy} variable exists and if it is equal to the user's response being yes or no to the acceptance. Source event tracking action, LGPD validation, and LGPD did not answer. Block | REDIRECT SERVICE Service redirection action to another service/skill within the output action. LGPD: Explains briefly what the LGPD is and collects the user's acceptance so that the Intelligent Contact can collect sensitive data. Block | [START] Skill input using the exit condition if the variable {input.content@redirectId} exists and directs by the block ID. Block | [INPUT] LP.2.0.0 - LGPD Description about the LGPD with the link to see in more detail along with the options for the person to select if they accept, do not accept, and learn more. Block | [LOGIC] LP.2.0.0 - [No] LGPD Acceptance Performs the validation through a script of the chosen option. Block | GOTO LP.2.0.0 - Service Name Redirects to the service/skill in case the person has accepted the terms of the agreement. Block | [INPUT] LP.3.0.0 - Does not agree with LGPD If the person does not accept the terms, a message is shown reinforcing that acceptance is necessary to continue with the conversation. Presents the same options yes, no, and learn more. Block | LP.4.0.0 - Learn More Detail about the LGPD. Block | [LOGIC] LP.3.0.0 - Does not agree with LGPD Performs the validation through a script of the chosen option. Block | GOTO LP.3.0.0 - Service Name Redirects to the service/skill in case the person has accepted the terms of the agreement. Block | REDIRECT SERVICE Service redirection action to another service/skill within the exit action. Block | Inactivity Redirect Redirection to the inactivity skill and return to the point where it is waiting for a user input. Inactivity: Sends a message to rescue the user's conversation with the Intelligent Contact after an inactive period. Block | [INPUT] I.1.0.0 - Inactivity Shows the message and requests if the person wants to continue in the conversation. Block | [LOGIC] I.1.0.0 - Inactivity Through the variable {setValidation}, the validation is performed to understand if the person will continue or not in the flow. Block | [INPUT] I.1.2.0 Closure Finishing message content. Block | REDIRECT SERVICE Service redirection action to another service/skill within the exit action. Opt-In/Out: Manages the user's authorization to receive or not receive communications. Block | [INPUT] I.1.0.0 - optin Message content requesting if the person would like to receive a notification. Block | [LOGIC] I.1.0.0 - OPT-IN Validation of the chosen option through a script. Block | OPT 1.0.1 - Opt-in Acceptance Message when the person accepts receiving the notification. Block | OPT 2.0.0 - Opt out Message when the person wants to stop receiving the notification, informing that the name was removed from the mailing list. Block | OPT.1.0.2 - Non-acceptance Message when the person does not want to receive the notification. Block | REDIRECT SERVICE Service redirection action to another service/skill within the exit action. Block | Inactivity Redirect Redirection to the inactivity skill and return to the point where it is waiting for a user input. Something Else: Checks if the person wants to add information or talk about another subject. Block | [INPUT] AM.1.0.0 - Something else Message content asking if the person needs something else. Block | [LOGIC] AM.1.0.0 - Something else Validation of the chosen option through a script. Block | REDIRECT SERVICE Service redirection action to another service/skill within the exit action. Block | Inactivity Redirect Redirection to the inactivity skill and return to the point where it is waiting for a user input. Finalization: Concludes the service in a clear way, confirming the closure of the interaction, being able to leave open the possibility of returning to the conversation. Block | F.1.0.0 - Finalization Message content informing the finalization of the conversation and informing the way to return to the conversation. Block | REDIRECT SERVICE Service redirection action to another service/skill within the exit action. CSAT: Collects the user satisfaction evaluation after the service. Block | [START] Skill input using the exit condition if the variable {input.content@redirectId} exists and directs by the block ID. Block | [MSG] C.1.0.0 Resolution Question Message content asking if the request was fulfilled. Block | [LOGIC] C.1.0.0 Resolution Question Validation of the chosen option through a script using the {userInput} variable used in the exit conditions. Block | [MSG] C.1.0.1 Negative resolution Message content asking what can be improved. Block | [MSG] C.1.1.1 CSAT Question Message content asking for the evaluation rating. Block | [LOGIC] C.1.1.1 CSAT Question Validation of the evaluation rating sent through a script using the {userInput} variable. Block | [MSG] C.1.1.2 Finalize CSAT Finalization message content. Block | Redirect Finish Service redirection action to the finalization skill. Block | Inactivity Redirect Redirection to the inactivity skill and return to the point where it is waiting for a user input. Human Handoff: Forwards the service to a human when necessary. Block | Customer service Service block with service settings when there is no service or outside of service hours. Block | ATH.1.0.0 No agent available Message content informing that no agent is available and asking if the person would like to wait. Block | ATH 1.1.0 Wait Message content informing the person to wait. Block | ATH 1.2.0 Farewell Message content finalizing and informing the trigger to return to the conversation. Block | ATH2.0.0 Outside hours Message content informing that it is outside service hours along with the service hours. Block | REDIRECT SERVICE Service redirection action to another service/skill within the exit action. Block | Inactivity Redirect Redirection to the inactivity skill and return to the point where it is waiting for a user input. Personal data: Requests, validates, and organizes user's personal information securely. CPF - Name - Email - Phone Block | [START] Skill input using the exit condition if the variable {input.content@redirectId} exists and directs by the block ID. Block | [MSG] Intro message Message content informing that some information will be collected. Block | [LOGIC] DC.1.0.0 Ask for cpf? In the input actions, the variable {dadosPessoais} is defined to understand what information will be collected. Validation if it will be necessary to ask for the CPF. Block | [MSG] DC.1.0.1 Ask for CPF Message content requesting CPF. Block | [MSG] DC.1.0.1 Ask for CPF Validation Validation of the format and if it is a valid CPF through a script using the variable isValidCpf and added in the set contact action in the document parameter. Block | [LOGIC] DC.1.1.0 Ask for Name? Validates if the name value is active in the {dadosPessoais} variable. Block | [MSG] DC.1.1.1 Ask for Name Message content requesting Name. Block | [LOGIC] DC.1.1.1 Ask for Name Validation Basic name format validation through a script using the variable nameValidation and added in the set contact action in the name parameter. Block | [LOGIC] DC.1.2.0 Ask for E-mail? Validates if the e-mail value is active in the {dadosPessoais} variable. Block | [MSG] DC.1.2.1 Ask for E-mail Message content requesting Email. Block | [LOGIC] DC.1.2.1 Ask for E-mail validation Validation of the format and if it is a valid email through a script using the variable hasEmail and added in the set contact action in the email parameter. Block | [LOGIC] DC.1.3.0 Ask for Phone? Validates if the e-mail value is active in the {dadosPessoais} variable. Block | [MSG] DC.1.3.1 Ask for Phone Message content requesting Phone. Block | [MSG] DC.1.3.1 Ask for Phone validation Validation of the format and if it is a valid phone through a script using the variable phoneNumber and added in the set contact action in the email parameter. Block | [MSG] Transition message Message content informing that the data has been collected. Block | REDIRECT SERVICE Service redirection action to another service/skill within the exit action. Block | Inactivity Redirect Redirection to the inactivity skill and return to the point where it is waiting for a user input. Validation Cascade: Step-by-step process to confirm provided data, validating each piece of information before proceeding to the next. Hierarchy of Validation Attributes Description customized_errors Used for customized validations that the other stages do not cover, e.g.: format of data requested by the bot. api_error Used to validate if the user was redirected from an HTTP call failure. If so, it should not proceed with the remaining stages of the cascade. validation_media_error Used to identify media errors. audio_error Adds a specific stage for audio validation, if it exists. E.g.: Blip speech to text. link_error Validates if the text contains only a link. When only text or text with links exists, it proceeds to the next stage. If it has only a link, it presents a message and returns to the previous skill. emoji_error Validates if the text contains only emojis. When only text or text with emojis exists, it proceeds to the next stage. If it has only emojis, it presents a message and returns to the previous skill. botxbot_error Validates if the user is a bot. If the last inputs (adjustable quantity) are identical OR the last input matches with the regex of automatic messages, the user is considered a bot. To proceed, they must send specific text; otherwise, the session is terminated. non_talkables_error Handling for sensitive terms. The variables must be defined: {{config.utilsApiUrl}}, {{config.utilsApiAuth}}, {{config.globalSheetsId}}, {{config.connectionTalksSheetsTabName}}, {{config.connectionTalksSheetsTabRange}}. clear_text Used for text cleaning before the regex stage is called to the NLP provider. global_regex_error Validação de regex global para inputs em qualquer ponto do bot. long_message_error Global regex validation for inputs at any point of the bot. Used to validate if the message is too long to be sent to NLP. Maximum character count currently: 100. connection_talks_error Functionality connected to the Smalltalks service. It is responsible for identifying a small talk and defining the message that will be sent to the user in case of a match. In addition, it is also possible to define the bot and block for the destination after receiving the message. The variables must be defined: {{config.utilsApiUrl}}, {{config.utilsApiAuth}}, {{config.globalSheetsId}}, {{config.nonTalkableSheetsTabName}}, {{config.nonTalkableSheetsTabRange}}. short_message Used to prevent calls to the NLP provider if the message is too short. Checks if it contains 3 or more letters. nlp_error Used if there is integration with an NLP provider in the bot. The configuration variables must be defined: {{config.AuthorizationApiKeyIA}} and {{config.commandsUrl}}. content_assistent Used if there is integration with a content assistant. The configuration variables must be defined: {{config.AuthorizationApiKeyIA}} and {{config.commandsUrl}}. In the non_talkables_error and connection_talks_error attributes, there is a connection with external systems to search for a response according to the context and point of the conversation.As soon as the cascade is added within the Studio area through the library, look for the block [REQ] set variables:In the actions tab inside the Process ExceptionHierarchy script, it is possible to determine which validation will be active (true) or deactivated (false) within the conversation.The non_talkables_error and connection_talks_error attributes are deactivated by default. If you want to activate them, just set to true and save. But remember to configure these validations according to your context. Skills Configuration Step by step:Create a chatbotAccess the libraryAdding a skillSkills InstructionsEach skill imported into the builder area will have a block called "comece aqui" (start here). In this block, there will be configuration instructions for the imported skill; just apply the configurations and the skill will be working.Normally, the welcome and standard error blocks, which already come as soon as the chatbot is created, can be deleted Registration Agent The ready-to-use agent within the block library is an agent for the registration of basic information such as name, e-mail, and phone; after the collection, it is directed to a standard block to continue the conversation. Image Prompt <objective>Collect and validate user's NAME, EMAIL, and PHONE in pt-BR.</objective> <guidelines> <tones>polite, direct, one question at a time</tones> <rules> <rule>Never proceed to the next field if the current one is invalid.</rule> <rule>Always explain why the input is invalid and show a valid example.</rule> <rule>At the end, confirm the data summary before closing.</rule> </rules> </guidelines> <flow> <step>Ask for the full NAME.</step> <step>Validate and normalize the NAME.</step> <step>Ask for the EMAIL.</step> <step>Validate the EMAIL.</step> <step>Ask for the PHONE (accept BR and international).</step> <step>Validate and normalize the PHONE.</step> <step>Show the summary and ask for confirmation (Yes/No).</step> </flow> <fields> <field id="name"> <question>What is your full name? It can be just first and last name</question> <validation> <type>regex</type> <pattern>^(?=.{3,100}$)(?:[A-Za-zÀ-ÖØ-öø-ÿ]+(?:['\-][A-Za-zÀ-ÖØ-öø-ÿ]+)?\s+){1,}[A-Za-zÀ-ÖØ-öø-ÿ]+$</pattern> <failure>Please enter first and last name, using only letters, spaces, and accents.Ex.: "John Smith".</failure> </validation> <normalization> <action>trim spaces; collapse multiple spaces; Title Case.</action> </normalization> </field> <field id="email"> <question>What is your e-mail?</question> <validation> <type>regex</type> <pattern>^[A-Za-z0-9._%+\-]+@[A-Za-z0-9.\-]+\.[A-Za-z]{2,}$</pattern> <failure>Invalid e-mail. Use the format "user@domain.com".</failure> </validation> <normalization> <action>trim; convert domain to lowercase.</action> </normalization> </field> <field id="phone"> <question>What is your phone with area code? (ex.: (DD) XXXXX-XXXX </question> <validation> <type>regex-multiple</type> <patternE164>^\+?[1-9]\d{7,14}$</patternE164> <patternBR>^(?:\+55\s?)?(?:\(?\d{2}\)?\s?)?(?:9?\d{4})-?\d{4}$</patternBR> <failure>Invalid phone. Examples: "(DD) XXXXX-XXXX".</failure> </validation> <normalization> <action>remove non-numeric characters (except +); if it is BR without +55, prefix +55; format output in E.164 (ex.: +5531912345678).</action> </normalization> </field> </fields> <messages> <initial>Let's proceed with a quick registration. Starting with your full name.</initial> <summary>Check the data:Name: {name}E-mail: {email}Phone: {phone}. Are they correct?</summary> <confirmed>Perfect! Registration completed.</confirmed> <correction>No problem, let's adjust. Which field do you want to correct? (name/email/phone)</correction> </messages><handoff>If user says "yes" → redirect to "new block".</handoff> <output> <jsonFormat> { "name": "{normalized_name}", "email": "{validated_email}", "phone": "{phone_E164}" } </jsonFormat> </output> Use case - Lead Qualification Being a use case, a set of skills will all stay within a single builder as in the image below:Using a single builder to place all the skills can facilitate due to the fact that everything is within a single work environment, but on the other hand, there will be a challenge if you need to evolve or add new things in the conversational structure: it will be to have redoubled care in the connections between the blocks.To know more details on how to use and some tips for using the block library, we have an AMA on our YouTube channel. Related articles Agent Builder Brain What is WhatsApp Flows? Unit Tests How to create a bot router with 3 subbots