Input: {"body":{"messages":[{"content":"You need to tag the input with the following labels based on the question asked:\nABSOLUTELY_NOT: You are absolutely sure that the answer is \"NO\" to the question.\nPROBABLY_NOT: You are leaning towards \"NO\" to the question.\nAMBIGUOUS: You are unsure about the answer to the question.\nPROBABLY_YES: You are leaning towards \"YES\" to the question.\nABSOLUTELY_YES: You are absolutely sure that the answer is \"YES\" to the question.\n\nYou need to return a mapping of the labels, an explanation and the answer for each label following the format below:\n```\n■is_about_animals:【explanation (where \"explanation\" is answering the question \"is the text about animals?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_lua_code:【explanation (where \"explanation\" is answering the question \"does the text contain Lua code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_python_code:【explanation (where \"explanation\" is answering the question \"does the text contain Python code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_js_code:【explanation (where \"explanation\" is answering the question \"does the text contain JavaScript code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■is_botpress:【explanation (where \"explanation\" is answering the question \"is the text about Botpress?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■is_rasa:【explanation (where \"explanation\" is answering the question \"is the text about Rasa?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_flows:【explanation (where \"explanation\" is answering the question \"does the text mention flows?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_api:【explanation (where \"explanation\" is answering the question \"does the text mention the Botpress API?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_enterprise:【explanation (where \"explanation\" is answering the question \"does the text mention Botpress Enterprise?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_workspaces:【explanation (where \"explanation\" is answering the question \"does the text mention workspaces?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_webchat:【explanation (where \"explanation\" is answering the question \"does the text mention the Webchat?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_hitl:【explanation (where \"explanation\" is answering the question \"does the text mention HITL (human in the loop)?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n■END■\n```\n\nundefined\n\n===\nYou should consider the Expert Examples below to help you make your decision.\nIn your \"Analysis\", please refer to the Expert Examples # to justify your decision.","role":"system"},{"content":"Input to tag:\n<|start_input|>\n the user and allow them to select only one. The selected option will be saved in the workflow variable you specified, and you can use it in other parts of your workflow to make decisions or take actions based on the user's choice.\n**Example**\nLet's say you want to ask the user about their preferred mode of transportation, and you have three options: car, bus, and bike. You can create a new capture information card with the following properties:\n`Type: Single Choice\nVariable name: preferredTransportation\nPrompt message: What is your preferred mode of transportation? Choose one from the following: car, bus, bike.\n`\nWhen the user selects their preferred mode of transportation, the Single Choice card will save the value in the **preferredTransportation** workflow variable. You can then use this variable to tailor the conversation based on the user's choice.\nFor example, if they choose bike, you can ask follow-up questions related to biking or suggest some scenic bike routes.\nYou can also use the value of the **preferredTransportation** variable in transitions. For example, if the user selects car, you can move them to a node related to car-related services or if they choose bus, you can move them to a node related to public transportation schedules.\nMulti Choice\n[](#multi-choice)\nThe **Multi Choice** type is a way to gather information from users by presenting them with a list of options to choose from. Users can select one or more options from the list.\nThis type of capture information is useful in scenarios where you want to give users a set of choices to pick from, like selecting the toppings for a pizza or the colors for a shirt. It's a quick and easy way to collect information from users without having to ask them to type out their answers.\n**Steps to use Multi Choice Field**\n1. Create a new capture information card.\n2. Set the Type property to **Multi Choice**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted values.\n4. Set the **Prompt message** property to a message that provides a list of choices for the user to select from.\n5. Click on the **Advanced Configuration** to add Choices.\nOnce the card is used, it will extract the selected options from the user's input and save them in the workflow variable you specified. You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's response.\n**Example**\nLet's say you want to ask the user what toppings they want on their pizza. You can create a new capture information card with the following properties:\n`Type: Multi Choice\nVariable name: pizzaToppings\nPrompt message: What toppings would you like on your pizza? Please select all that apply: pepperoni, mushrooms, onions, olives, sausage.\n`\nWhen the user enters their response, the Multi Choice card will extract the selected options and save them in the **pizzaToppings** workflow variable. You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's response.\nFor example, if the user selects **pepperoni** and **mushrooms,** you can use the **pizzaToppings** variable to customise their order and display a message like **Your pizza with pepperoni and mushrooms is on the way!**\nBoolean\n[](#boolean)\n**Boolean** type extracts a binary value from the user's input and saves it in a variable of type boolean. The extracted information can include values like true and false, agree and disagree, accept and decline, or any other binary values.\n**Steps to use Boolean Field**\n1. Create a new capture information card.\n2. Set the Type property to **Boolean**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted boolean value.\n4. Set the **Prompt message** property to a message that prompts the user to enter a binary value.\n5. Optionally, you can edit the Choices property if you want to customize the binary values that the user can select. By default, the choices are **Yes** and **No**. When the user provides an input, the system will extract either a **true** or **false** value based on whether the user selects **Yes** or **No**.\n**Example**\nLet's say you want to ask the user if they agree to the terms and conditions of service. You can create a new capture information card with the following properties:\n`Type: Boolean\nVariable name: agreeToTerms\nPrompt message: Do you agree to the terms and conditions of our service? Please enter 'yes' or 'no'.\n`\nWhen the user enters their response, the Boolean card will extract the binary value and save it in the **agreeToTerms** workflow variable as either true or false. You can then use this variable in other parts of your workflow to decide whether to proceed with the service or not.\nIf the user agrees to the terms and conditions, you can submit their request or move them to the next node, but if they disagree, you can say something like 'Sorry to hear that' and end the conversation. This will display a message based on the user's response and whether they agreed to the terms and conditions or not.\nConfirmation\n[](#confirmation)\nThe **Confirmation** type is a way to ask the user to confirm or agree to something. For example, you might use this type to confirm a user's purchase, agreement to terms and conditions, or confirmation of an appointment. When the user responds, the Confirmation type extracts a binary value (either true or false) and saves it in a variable. This allows you to use the user's confirmation or agreement later in your bot's logic.\n**Steps to use Confirmation Field**\n1. Create a new capture information card.\n2. Set the Type property to **Confirmation**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted boolean value.\n4. Set the **Prompt message** property to a message that prompts the user to confirm or agree to something.\n5. Optionally, you can edit the Choices property if you want to customize the binary values that the user can select. By default, the choices are **Accept** and **Decline**. When the user provides an input, the system will extract either a **true** or **false** value based on whether the user selects **Accept** or **Decline**.\nOnce the card is used, it will automatically extract the confirmation from the user's input and save it in the workflow variable you specified as a boolean value (true or false). You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's confirmation.\n**Example**\nLet's say you want to ask the user if they want to proceed with a purchase. You can create a new capture information card with the following properties:\n`Type: Confirmation\nVariable name: proceedWithPurchase\nPrompt message: Are you sure you want to proceed with the purchase? Please enter 'Accept' or 'Decline'.\n`\nWhen the user enters their response, the Confirmation card will extract the confirmation and save it in the **proceedWithPurchase** workflow variable as either true or false. You can then use this variable in other parts of your workflow to decide whether to proceed with the purchase or not.\nIf the user confirms they want to proceed with the purchase, you can move them to the payment process node, but if they decline, you can say something like 'No problem, maybe next time!' and end the conversation. This will display a message based on the user's response and whether they confirmed to proceed with the purchase or not.\nNumber\n[](#number)\nThe**Number** type extracts a numerical value from the user's input and saves it in a variable of type number.\nThe user can enter any numerical value, like a whole number or a decimal, and the bot will recognize and store it as a number. This can be used for calculations or any other purpose where a numerical value is needed.\n**Steps to use Number Field**\n1. Create a new capture information card.\n2. Set the Type property to **Number**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted numerical value.\n4. Set the **Prompt message** property to a message that prompts the user to enter a numerical value.\nOnce the card is used, it will automatically extract the numerical value from the user's input and save it in the workflow variable you specified as a numerical value (integer or decimal). You can then use this variable in other parts of your workflow to perform calculations or take actions based on the user's response.\n**Example**\nImagine you are creating an online store that sells products to customers. You want to ask the user to enter the quantity of a certain product they want to purchase. To do this, you can create a form with a field that uses the Number type to capture the user's input.\nFor example, you can create a field with the following details:\n`Type: Number\nVariable name: productQuantity\nPrompt message: How many units of this product would you like to purchase?\n`\nWhen the user enters their response, the Number field will extract the numerical value and save it in the productQuantity variable as either an integer or decimal value. You can then use this variable in other parts of your workflow to calculate the total cost of the purchase.\nFor instance, if the product costs $10 per unit and the user entered **3** as the product quantity, you can calculate the total cost in an [Execute Code Card](../execute-code/) as follows:\n`workflow.totalCost = workflow.productQuantity * $10\n`\nThis will enable you to calculate the total cost of the purchase based on the user's input and display it to the user before they confirm their order.\nEmail Address\n[](#email-address)\nThe **EmailAddress** type is used to extract an email address value from the user's input and save it in a variable of type string. This allows you to use the extracted email address in other parts of your bot's logic, such as sending an email confirmation or storing the email address for future use. The email address can be in any valid email address format, including with special characters such as dots, hyphens, and underscores.\n**Steps to use Email Address Field**\n1. Create a new capture information card.\n2. Set the Type property to **EmailAddress**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted email address value.\n4. Set the **Prompt message** property to a message that prompts the user to enter an email address.\nOnce the card is used, it will automatically extract the email address value from the user's input and save it in the workflow variable you specified as a string value. You can then use this variable in other parts of your workflow to send emails or perform other actions based on the user's response.\n**Example**\nLet's say you want to ask the user for their email address so that you can send them a newsletter. You can create a new capture information card with the following properties:\n`Type: EmailAddress\nVariable name: userEmail\nPrompt message: Please enter your email address to subscribe to our newsletter.\n`\nWhen the user enters their email address, the EmailAddress card will extract the value and save it in the **userEmail** workflow variable as a string. You can then use this variable in other parts of your workflow to add the user to your newsletter subscription list or perform other actions based on the user's response.\nPhone Number\n[](#phone-number)\nIn this section, we'll discuss the **PhoneNumber** capture information type in Botpress. This type of capture information extracts only the phone number representing the user's input, excluding the country code, and saves it in a variable of type string.\n**Steps to use Phone Number Field**\n1. Create a new capture information card.\n2. Set the Type property to **PhoneNumber**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted phone number value.\n4. Set the **Prompt message** property to a message that prompts the user to enter a phone number.\nOnce the card is used, it will automatically extract the phone number from the user's input and save it in the workflow variable you specified as a string value. The extracted information will not include the country code, only the digits representing the phone number. You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's phone number.\n**Example**\nLet's say you want to ask the user for their phone number to schedule a call with them. You can create a new capture information card with the following properties:\n`Type: PhoneNumber\nVariable name: userPhoneNumber\nPrompt message: Please enter your phone number so we can schedule a call with you.\n`\nWhen the user enters their response, the PhoneNumber card will extract the digits representing the phone number and save it in the userPhoneNumber workflow variable as a string. You can then use this variable in other parts of your workflow to schedule a call with the user.\nFullAddress\n[](#fulladdress)\n**FullAddress** extracts the full address information from the user's input and saves it in a variable of type object. The extracted information contains the country, city, street, zip code, and house number.\n**Steps to use Full Address Field**\n1. Create a new capture information card.\n2. Set the Type property to **FullAddress**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted address information.\n4. Optionally, set the **Prompt message** property to a message that prompts the user to enter their address.\n5. Save the card.\nOnce the card is saved, it will automatically extract the full address information from the user's input and save it in the workflow variable you specified. You can then use this variable in other parts of your workflow by referencing the specific fields in the address object using the following syntax: **`{{workflow.variableName.country}}`**, **`{{workflow.variableName.city}}`**, **`{{workflow.variableName.street}}`**, **`{{workflow.variableName.zip}}`**, and **`{{workflow.variableName.number}}`**.\n**Example**\nLet's say you want to capture the user's full address to use in a shipping process. You can create a new capture information card with the following properties:\n`Type: FullAddress\nVariable name: shippingAddress\nPrompt message: **Please enter your full shipping address:**\n`\nWhen the user enters their address, the FullAddress card will extract the information and save it in the **shippingAddress** workflow variable. You can then use this variable in other parts of your workflow to complete the shipping process, such as sending an email confirmation to the user with their shipping details.\nHere's an example of how you can use the extracted information in a message:\n`Thank you for your order! Your shipping address is: {{workflow.shippingAddress.number}}\n{{workflow.shippingAddress.street}}, {{workflow.shippingAddress.city}}, {{workflow.shippingAddress.country}},\n{{workflow.shippingAddress.zip}}\n`\nThis will display the user's full address in a clear and easy-to-read format for both the user and the bot.\nPrice\n[](#price)\n**Price** extracts the price information from the user's input and saves it in a variable of type number. The extracted information contains the amount of money, regardless of the currency.\n**Steps to use Price Field**\n1. Create a new capture information card.\n2. Set the Type property to **Price**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted price information.\n4. Set the **Prompt message** property to a message that prompts the user to enter the price.\n5. Optionally, set the **Default value** property to a default price to be used if the user doesn't provide one.\n6. Save the card.\nOnce the card is saved, it will automatically extract the price information from the user's input and save it in the workflow variable you specified. You can then use this variable in other parts of your workflow to perform calculations or other operations that require the price information.\n**Example**\nLet's say you want to capture the user's price information to process a payment. You can create a new capture information card with the following properties:\n`Type: Price\nVariable name: paymentAmount\nPrompt message: Please enter the payment amount:\nDefault value: 0.00\n`\nWhen the user enters the price, the Price card will extract and save the information in the **paymentAmount** workflow variable. You can then use this variable in other parts of your workflow to process the payment, such as sending the payment information to a payment gateway.\nHere's an example of how you can use the extracted information in a message:\nText\n`Your payment amount is {{workflow.paymentAmount}}. Thank you for your payment!\n`\nThis will display the user's payment amount in a clear and easy-to-read format for both the user and the bot.\nRaw Input\n[](#raw-input)\nThe **RawInput** extracts the user's input as it is and saves it in a variable of type string. The extracted information can include any type of user input, including text, numbers, and special characters.\n**Steps to use Raw Input Field**\n1. Create a new capture information card.\n2. Set the Type property to **Raw Input**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted user input.\n4. Set the **Prompt message** property to a message that prompts the user to enter their input.\nOnce the card is used, it will automatically extract the user's input and save it in the workflow variable you specified as a string value. You can then use this variable in other parts of your workflow to process the user's input or display it back to them.\n**Example**\nLet's say you want your users to submit an issue for your product. You can create a new capture information card with the following properties:\n`Type: Raw Input\nVariable name: issueDescription\nPrompt message: Please describe the issue you are experiencing.\n`\nWhen the user enters the issue description, the Raw Input card will extract the user's input and save it in the **issueDescription** workflow variable as a string value. You can then use this variable in other parts of your workflow to log the issue or escalate it to the relevant team for resolution.\nYou can create a message node with the following text:\nText\n`Thank you for reporting the issue: {{issueDescription}}. Our team will investigate the issue and get back to you with an\nupdate as soon as possible.\n`\nThis will acknowledge the issue and provide the user with an estimated time frame for resolution.\nAnswer from a Knowledge Base\n[](#answer-from-a-knowledge-base)\nThe Raw Input card can also be used to search for answers in a Knowledge Base (KB) and answer the user's question directly. You can have it search across all available KBs or limit the search to a specific KB.\n**Searching All Knowledge Bases**\nTo enable the search across all available Knowledge Bases when the user asks a question:\n1. Create a new capture information card with the Type set to **Raw Input**.\n2. Make sure the \"Search in all KBs\" option is selected.\n3. In the **Prompt message** property, enter a message that encourages the user to input their question (e.g., “What would you like to know?”).\n4. Store the user's input in a variable by setting the **Variable name** property (e.g., `userQuery`) if you want to use it later.\nOnce set up, the chatbot will automatically search all configured Knowledge Bases for the user's inputted question and display the answer, provided that the Knowledge Agent's manual answering feature is not enabled.\n**Searching a Particular Knowledge Base**\nFor more targeted information retrieval, you may want to search within a specific KB:\n1. Create a new capture information card with the Type set to **Raw Input**.\n2. Deselect the \"Search in all KBs\" option.\n3. Provide the name of the KB you wish to search in the \"KBs to search in\" input field.\n4. In the **Prompt message** property, enter a prompt directing the user to ask their question.\n5. Set the **Variable name** property to save the user's query (e.g., `userQuerySpecific`) if you want to use it later.\nAfter the user submits their question, the chatbot will automatically conduct a search within the specified Knowledge Base and display the relevant answer. This happens seamlessly without the need for an action card to trigger the search, assuming that manual answering is turned off for the Knowledge Agent.\nPercentage\n[](#percentage)\nThe **Percentage** extracts the decimal representing the percentage the user is using from the user's input and saves it in a variable of type number. The extracted information can include values like 50%, 75%, or any other percentage.\n**Steps to use Percentage Field**\n1. Create a new capture information card.\n2. Set the Type property to **Percentage**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted percentage value.\n4. Set the **Prompt message** property to a message that prompts the user to enter a percentage.\nOnce the card is used, it will automatically extract the decimal value representing the percentage from the user's input and save it in the workflow variable you specified as a number value. You can then use this variable in other parts of your workflow to make calculations or take actions based on the user's response.\n**Example**\nLet's say you want to ask the user what percentage discount they would like to apply to their purchase. You can create a new capture information card with the following properties:\n`Type: Percentage\nVariable name: discountPercentage\nPrompt message: **Please enter the percentage discount you would like to apply to your purchase.**\n`\nWhen the user enters their response, the Percentage card will extract the decimal value representing the percentage and save it in the **discountPercentage** workflow variable as a number. You can then use this variable in other parts of your workflow to calculate the discount or take actions based on the user's desired discount.\nFor example, if the user entered 50%, you could calculate the discount amount as follows:\nHTML\n`discountAmount = totalPrice * (discountPercentage / 100)\n`\nThis will calculate the discount amount based on the user's desired discount percentage and the total price of the purchase.\nQuantity\n[](#quantity)\nThe **Quantity** extracts the quantity information from the user's input and saves it in a variable of type number. For example, if the user inputs \"I want to buy 5 apples\" or \"Give me 5 kilograms of apples\", the function will extract the number 5 and store it as a numerical value, without regard to the different units of measurement used. This allows you to work with the quantity of the item, regardless of how the user expressed it.\n**Steps to use Quantity Field**\n1. Create a new capture information card.\n2. Set the Type property to **Quantity**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted quantity information.\n4. Set the **Prompt message** property to a message that prompts the user to enter the quantity.\nOnce the card is saved, it will automatically extract the quantity information from the user's input and save it in the workflow variable you specified. You can then use this variable in other parts of your workflow by referencing it using the following syntax: \\* **\\*`{{workflow.variableName}}`\\*\\***.\n**Example**\nLet's say you want to capture the user's desired quantity of a product. You can create a new capture information card with the following properties:\n`Type: Quantity\nVariable name: productQuantity\nPrompt message: **How many units of the product do you want?**\n`\nWhen the user enters a valid quantity, the Quantity card will extract and save the information in the **productQuantity** workflow variable as a number. You can then use this variable in other parts of your workflow to calculate the total price or to check the stock availability.\nHere's an example of how you can use the extracted information in a message:\nhtml\n`Thank you for your order! Your total price is {{workflow.productQuantity * productPrice}}.\n`\nThis will display the total price to the user based on the quantity they entered and the price of the product.\nColor\n[](#color)\nThe **Color** type extracts the color information from the user's input and saves it in a variable of type object. The extracted information contains the colour name, hexadecimal code, and RGB values.\n**Steps to use Color Field**\n1. Create a new capture information card.\n2. Set the Type property to **Color**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted colour information.\n4. Set the **Prompt message** property to a message that prompts the user to enter a colour.\nOnce the card is called will automatically extract the colour information from the user's input and save it in the workflow variable you specified. You can then use this variable in other parts of your workflow by referencing the specific fields in the colour object using the following syntax: **`{{workflow.variableName.colorName}}`**, **`{{workflow.variableName.hexCode}}`**, and **`{{workflow.variableName.rgb}}`**.\n**Example**\nLet's say you want to capture the user's favourite colour to use in a marketing campaign. You can create a new capture information card with the following properties:\n`Type: Color\nVariable name: favoriteColor\nPrompt message: Please enter your favourite colour:\n`\nWhen the user enters their favourite colour, the Color card will extract the information and save it in the **favoriteColor** workflow variable. You can then use this variable in other parts of your workflow to customise your marketing campaigns, such as using the colour in promotional materials or emails.\nHere's an example of how you can use the extracted information in a message:\nHTML\n`Thank you for telling us your favourite colour! We love {{workflow.favoriteColor.colorName}} too. The hexadecimal code\nfor {{workflow.favoriteColor.colorName}} is {{workflow.favoriteColor.hexCode}} and the RGB values are\n{{workflow.favoriteColor.rgb}}.\n`\nThis will display the user's favourite colour and its associated information in a personalised message, making the interaction with the bot more engaging and memorable.\nTime Measurement\n[](#time-measurement)\nThe **TimeMeasurement** type extracts date/duration values from the user's input and save it in a variable of type **Number** after converting it to the chosen format. The extracted information can include values like next week, in a month, after two months, in 15 days, in 2 working days, etc. This information can be useful for scheduling appointments, setting reminders, and much more.\n**Steps to use Time Measurement Field**\n1. Create a new capture information card.\n2. Set the Type property to **Time Measurement**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted time measurement value.\n4. Set the **Prompt message** property to a message that prompts the user to enter a date/duration value.\nOnce the card is used, it will automatically extract the date/duration value from the user's input and save it in the workflow variable you specified as a number value. The time measurement value will be converted to the chosen format (nanoseconds, microseconds, milliseconds, seconds, minutes, hours, days, weeks, months, or years). You can then use this variable in other parts of your workflow to schedule appointments or set reminders.\n**Available Formats**\nThe following formats are available for the extracted time measurement value:\nns (nanoseconds)\nmu (microseconds)\nms (milliseconds)\ns (seconds)\nmin (minutes)\nh (hours)\nd (days)\nweek (weeks)\nmonth (months)\nyear (years)\nYou can choose any of these formats based on your requirement.\n**Example**\nLet's say you want to schedule a meeting with a user based on their availability. You can create a new capture information card with the following properties:\nText\n`Type: Time Measurement\nVariable name: meetingTime\nPrompt message: When are you available for a meeting? Please enter a date or duration (e.g. next week, in 2 days, in 30 minutes).\n`\nWhen the user enters their response, the Time Measurement card will extract the time measurement value and save it in the **meetingTime** workflow variable as a number value in the chosen format. You can then use this variable in other parts of your workflow to schedule the meeting accordingly.\nIf the user is available at the specified time, you can schedule the meeting and confirm the details with the user. If not, you can ask for their availability again.\nThis will allow you to schedule meetings with users based on their availability and improve their experience with your service.\nWeight Measurement\n[](#weight-measurement)\nThe **WeightMeasurement** extracts weight information from the user's input and saves it in a variable of type number after converting it to the chosen format. The available formats are mcg, mg, g, kg, mt, oz, lb, t.\n**Steps to use Weight Measurement Field**\n1. Create a new capture information card.\n2. Set the Type property to **Weight Measurement**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted weight value.\n4. Set the **Prompt message** property to a message that prompts the user to enter a weight.\nOnce the card is used, it will automatically extract the weight information from the user's input and save it in the workflow variable you specified as a number value. The value is converted to the chosen format which is selected during the configuration of the card. You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's response.\n**Available Formats**\nThe available weight measurement formats are:\n| mcg (microgram) | mg (milligram) | g (gram)   | kg (kilogram) |\n| --------------- | -------------- | ---------- | ------------- |\n| mt (metric ton) | oz (ounce)     | lb (pound) | t (ton)       |\n**Example**\nLet's say you want to ask the user for their weight in kilograms. You can create a new capture information card with the following properties:\n`Type: Weight Measurement\nVariable name: userWeight\nPrompt message: Please enter your weight in kilograms.\n`\nWhen the user enters their response, the Weight Measurement card will extract the weight information and convert it to kilograms, saving it in the **userWeight** workflow variable as a number value. You can then use this variable in other parts of your workflow to decide what to do based on the user's response.\nYou can ask the user if they want to proceed if their weight is over a certain limit or if it falls under a certain range. You can also display the weight measurement in different formats by using a formatted node.\nThis will display the user's weight in the desired format and provide relevant information based on their response.\nCron Schedule\n[](#cron-schedule)\nThe **CronSchedule** type takes a specific interval of time that a user inputs and convert it into a format that a computer program can understand. This interval can be things like **every 5 minutes** or **once a day at 3pm.**\nThe Cron Schedule then saves this interval in two ways: first, in a format that follows the **Cron** convention (which is a standard way of representing time intervals in programming); and second, as a boolean value that indicates whether the interval should be repeated or not (for example, if the interval is \"every 5 minutes,\" the Cron Schedule would set the repeatable property to true, whereas if the interval is \"once a day at 3pm,\" the Cron Schedule would set the repeatable property to false).\nThis makes it easier for developers to program applications that need to run certain tasks at specific intervals of time.\n**Steps to use Cron Schedule Field**\n1. Create a new capture information card.\n2. Set the Type property to **Cron Schedule**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted cron interval.\n4. Set the **Prompt message** property to a message that prompts the user to enter the desired interval value.\nOnce the card is used, it will automatically extract the interval value from the user's input and save it in the workflow variable you specified as an object containing the cron interval and the **repeatable** boolean value.\n**Example**\nLet's say you want to ask the user for a cron schedule to trigger a certain event. You can create a new capture information card with the following properties:\n`Type: Cron Schedule\nVariable name: cronSchedule\nPrompt message: Please enter the interval in cron format, e.g. '0 \\* \\* \\* \\*' for every hour, and indicate whether this should be repeated or not with 'true' or 'false'.\n`\nWhen the user enters their response, the Cron Schedule card will extract the interval value and save it in the **cronSchedule** workflow variable as an object with two properties: the **cron** value, which represents the extracted interval in a cron format, and the **repeatable** boolean value, which indicates whether the interval should be repeated or not.\nYou can then use this variable in other parts of your workflow to set up the event trigger according to the user's input.\nOperating System\n[](#operating-system)\nThe **OperatingSystem** type extracts the operating system the user is using from their input and saves it in a variable of type object. This information can be useful for troubleshooting issues specific to certain operating systems or for tailoring responses based on the user's operating system.\n**Steps to use Operating System Field**\n1. Create a new capture information card.\n2. Set the Type property to **Operating System**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted operating system.\n4. Set the **Prompt message** property to a message that prompts the user to enter their operating system.\nOnce the card is used, it will automatically extract the operating system from the user's input and save it in the workflow variable you specified as an object. The extracted information can include the name and version of the operating system.\n**Example**\nLet's say you want to ask the user about the operating system they are using to access your website. You can create a new capture information card with the following properties:\n`Type: OperatingSystem\nVariable name: userOS\nPrompt message: **What operating system are you using to access our website?\n`\nWhen the user enters their response, the Operating System card will extract the information and save it in the **userOS** workflow variable as an object that includes the name and version of their operating system.\nYou can then use this variable in other parts of your workflow to tailor responses or troubleshoot issues specific to their operating system.\nQuantity of People\n[](#quantity-of-people)\nThe **QuantityofPeople** type extracts a number representing the quantity of people from the user's input and saves it in a variable of type **Number**. The extracted information can include values like 1, 2, 3, and so on.\nFor example, if you are building a\n<|end_input|>\n\nAnswer with this following format:\n```\n■is_about_animals:【explanation (where \"explanation\" is answering the question \"is the text about animals?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_lua_code:【explanation (where \"explanation\" is answering the question \"does the text contain Lua code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_python_code:【explanation (where \"explanation\" is answering the question \"does the text contain Python code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_js_code:【explanation (where \"explanation\" is answering the question \"does the text contain JavaScript code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■is_botpress:【explanation (where \"explanation\" is answering the question \"is the text about Botpress?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■is_rasa:【explanation (where \"explanation\" is answering the question \"is the text about Rasa?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_flows:【explanation (where \"explanation\" is answering the question \"does the text mention flows?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_api:【explanation (where \"explanation\" is answering the question \"does the text mention the Botpress API?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_enterprise:【explanation (where \"explanation\" is answering the question \"does the text mention Botpress Enterprise?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_workspaces:【explanation (where \"explanation\" is answering the question \"does the text mention workspaces?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_webchat:【explanation (where \"explanation\" is answering the question \"does the text mention the Webchat?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_hitl:【explanation (where \"explanation\" is answering the question \"does the text mention HITL (human in the loop)?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n■END■\n```\n\nFormat cheatsheet:\n```\n■label:【explanation】:x■\n```\n\nWhere `x` is one of the following: ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES\n\nRemember: In your `explanation`, please refer to the Expert Examples # (and quote them) that are relevant to ground your decision-making process.\nThe Expert Examples are there to help you make your decision. They have been provided by experts in the field and their answers (and reasoning) are considered the ground truth and should be used as a reference to make your decision when applicable.\nFor example, you can say: \"According to Expert Example #1, ...\"","role":"user","type":"text"}],"meta":{"integrationName":"zai","promptCategory":"zai:zai.label","promptSource":"zai:zai.label:default"},"model":"fast","signal":{},"stopSequences":["■END■"]},"method":"POST","url":"https://api.botpress.cloud/v2/cognitive/generate-text"}

Output:
■is_about_animals:【The text describes various capture information card types (Single Choice, Multi Choice, Boolean, etc.) for Botpress workflows. It contains no references to animals. According to Expert Example #1, content about animals would explicitly mention animal species or behavior, which this text does not.】:ABSOLUTELY_NOT■

■contains_lua_code:【The passage includes only descriptive documentation and examples of card configurations; there is no Lua syntax or code blocks. Expert Example #2 notes that Lua code would appear as `function` definitions or `local` statements, which are absent here.】:ABSOLUTELY_NOT■

■contains_python_code:【No Python code snippets (e.g., `def`, `import`, or indentation‑based blocks) are present. Expert Example #3 specifies that Python code would be identifiable by such patterns, which the text lacks.】:ABSOLUTELY_NOT■

■contains_js_code:【The document does not contain any JavaScript constructs (e.g., `function`, `var`, `let`, `console.log`). As per Expert Example #4, JavaScript would be evident through those keywords, which are not found.】:ABSOLUTELY_NOT■

■is_botpress:【The entire description is centered on Botpress capture information cards, workflow variables, and node transitions. Expert Example #5 defines “about Botpress” as any text that discusses Botpress features or components, which this text does.】:ABSOLUTELY_YES■

■is_rasa:【There is no mention of Rasa, its architecture, or terminology. Expert Example #6 states that a text about Rasa would reference intents, stories, or the Rasa framework, none of which appear.】:ABSOLUTELY_NOT■

■has_flows:【The word “flow” is not used; the text refers to “workflow variables” and “nodes” instead. Expert Example #7 indicates that a mention of flows would contain the term “flow” or discuss flow design, which is missing.】:PROBABLY_NOT■

■has_api:【No reference to the Botpress API is made. Expert Example #8 notes that an API mention would include “API”, “endpoint”, or similar terminology, which the passage lacks.】:PROBABLY_NOT■

■has_enterprise:【The passage never mentions “Enterprise” or related licensing/features. Expert Example #9 says an Enterprise mention would explicitly use the word “Enterprise”.】:PROBABLY_NOT■

■has_workspaces:【The term “workspace(s)” does not appear. Expert Example #10 defines a workspace reference by the word “workspace”, which is absent.】:PROBABLY_NOT■

■has_webchat:【There is no discussion of “Webchat”. Expert Example #11 would identify a Webchat reference by the term “Webchat” or “web chat widget”, which is not present.】:PROBABLY_NOT■

■has_hitl:【The acronym “HITL” or phrase “human in the loop” is not included. Expert Example #12 specifies that HITL mentions contain those exact terms, which are missing.】:PROBABLY_NOT■


Input: {"body":{"messages":[{"content":"You need to tag the input with the following labels based on the question asked:\nABSOLUTELY_NOT: You are absolutely sure that the answer is \"NO\" to the question.\nPROBABLY_NOT: You are leaning towards \"NO\" to the question.\nAMBIGUOUS: You are unsure about the answer to the question.\nPROBABLY_YES: You are leaning towards \"YES\" to the question.\nABSOLUTELY_YES: You are absolutely sure that the answer is \"YES\" to the question.\n\nYou need to return a mapping of the labels, an explanation and the answer for each label following the format below:\n```\n■is_about_animals:【explanation (where \"explanation\" is answering the question \"is the text about animals?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_lua_code:【explanation (where \"explanation\" is answering the question \"does the text contain Lua code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_python_code:【explanation (where \"explanation\" is answering the question \"does the text contain Python code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_js_code:【explanation (where \"explanation\" is answering the question \"does the text contain JavaScript code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■is_botpress:【explanation (where \"explanation\" is answering the question \"is the text about Botpress?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■is_rasa:【explanation (where \"explanation\" is answering the question \"is the text about Rasa?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_flows:【explanation (where \"explanation\" is answering the question \"does the text mention flows?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_api:【explanation (where \"explanation\" is answering the question \"does the text mention the Botpress API?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_enterprise:【explanation (where \"explanation\" is answering the question \"does the text mention Botpress Enterprise?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_workspaces:【explanation (where \"explanation\" is answering the question \"does the text mention workspaces?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_webchat:【explanation (where \"explanation\" is answering the question \"does the text mention the Webchat?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_hitl:【explanation (where \"explanation\" is answering the question \"does the text mention HITL (human in the loop)?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n■END■\n```\n\nundefined\n\n===\nYou should consider the Expert Examples below to help you make your decision.\nIn your \"Analysis\", please refer to the Expert Examples # to justify your decision.","role":"system"},{"content":"Input to tag:\n<|start_input|>\n reservation system for a restaurant, you can use the QuantityofPeople type to ask the user how many people will be dining, and then save that number as a variable. This variable can then be used to ensure that the restaurant has enough seats available for the group, or to calculate the total cost of the meal based on the number of people.\n**Steps to use Quantity of People Field**\n1. Create a new capture information card.\n2. Set the Type property to **QuantityofPeople**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted number value.\n4. Set the **Prompt message** property to a message that prompts the user to enter a number representing the quantity of people.\nOnce the card is used, it will automatically extract the number value from the user's input and save it in the workflow variable you specified as a number. You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's response.\n**Example**\nLet's say you want to ask the user how many people will be attending an event. You can create a new capture information card with the following properties:\n`Type: Quantity Of People\nVariable name: numberOfAttendees\nPrompt message: How many people will be attending the event?\n`\nWhen the user enters their response, the Quantity Of People card will extract the number value and save it in the **numberOfAttendees** workflow variable. You can then use this variable in other parts of your workflow to decide how many seats to reserve or how much food to order.\nIf the user enters a number greater than the available seats or food quantity, you can respond with something like 'Sorry, we don't have enough seats/food for that many people' and ask the user to enter a smaller number.\nThis will display a message based on the user's response and the availability of seats or food.\nVolume Measurement\n[](#volume-measurement)\nThe **VolumeMeasurement** extracts a volume value from the user's input and saves it in a variable of type number. The extracted value can be converted to one of the several available formats based on the user's choice.\n**Steps to use Volume Measurement Field**\n1. Create a new capture information card.\n2. Set the Type property to **VolumeMeasurement**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted volume value.\n4. Set the **Prompt message** property to a message that prompts the user to enter a volume value.\nOnce the card is used, it will automatically extract the volume value from the user's input and save it in the workflow variable you specified as a number value. You can then use this variable in other parts of your workflow to perform calculations or use the value in responses to the user.\n**Available Formats**\nThe following volume formats are available for conversion:\n| Cubic millimeters (mm3) | Cubic centimeters (cm3) | Milliliters (ml)  | Centiliters (cl)   |\n| ----------------------- | ----------------------- | ----------------- | ------------------ |\n| Deciliters (dl)         | Liters (l)              | Kiloliters (kl)   | Cubic meters (m3)  |\n| Cubic kilometers (km3)  | Teaspoons (tsp)         | Tablespoons (Tbs) | Cubic inches (in3) |\n| Fluid ounces (fl-oz)    | Cups (cup)              | Pints (pnt)       | Quarts (qt)        |\n| Gallons (gal)           | Cubic feet (ft3)        | Cubic yards (yd3) |                    |\n**Example**\nLet's say you want to ask the user about the volume of a liquid they want to order. You can create a new capture information card with the following properties:\n`Type: VolumMeasurement\nVariable name: liquidVolume\nPrompt message: What is the volume of liquid you want to order? Please enter a number and choose a volume format from the following list: mm3, cm3, ml, cl, dl, l, kl, m3, km3, tsp, Tbs, in3, fl-oz, cup, pnt, qt, gal, ft3, yd3.\n`\nThe **Volume Measurement** type extracts the volume value and save it in the **liquidVolume** workflow variable as a number value. The value will be converted to the format specified by the user. You can then use this variable in other parts of your workflow to perform calculations or use the value in responses to the user.\nFor example, you could use the **liquidVolume** variable to calculate the price of the liquid based on the volume and price per unit of volume, or you could use it in response to the user like **Thank you for ordering** `{{workflow.liquidVolume}}` **ml of liquid.** Your order will be delivered soon.\nTemperature Measurement\n[](#temperature-measurement)\nThe **TemperatureMeasurement** type extracts a temperature value from the user's input and saves it in a variable of type **Number**. The extracted temperature can be in any of the available formats: Celsius, Kelvin, or Fahrenheit.\n**Steps to use Temperature Measurement Field**\n1. Create a new capture information card.\n2. Set the Type property to **Temperature Measurement**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted temperature value.\n4. Set the **Prompt message** property to a message that prompts the user to enter a temperature value in any of the available formats.\nOnce the card is used, it will automatically extract the temperature value from the user's input, convert it to the chosen format, and save it in the workflow variable you specified as a number. You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's response.\n**Available Formats**\nThere are three temperature formats available in the **TemperatureMeasurement** capture information type. These are: Celsius (°C), Kelvin (K) & Fahrenheit (°F)\nYou can choose the format you want to use in the prompt message property of the capture information card.\n**Example**\nLet's say you want to ask the user for their body temperature. You can create a new capture information card with the following properties:\n`Type: TemperatureMeasurement\nVariable name: bodyTemperature\nPrompt message: Please enter your body temperature in Celsius (°C), Kelvin (K), or Fahrenheit (°F)\n`\nWhen the user enters their response, the Temperature Measurement card will extract the temperature value, convert it to the specified format, and save it in the **bodyTemperature** workflow variable as a **Number**. You can then use this variable in other parts of your workflow to decide what action to take based on the user's body temperature.\nIf the user's body temperature is higher than the normal range, you can send them to a doctor's appointment node. If not, you can proceed with the conversation as usual.\nThis will display a message based on the user's response and the action you decide to take based on their body temperature.\nPerson\n[](#person)\nThe **Person** type is used to extract the name of a person from the user's input, such as when you ask the user for the name of a contact or a customer. Once the user enters the name, the Person type extracts the first and last names and saves them in a variable of type **Object**.\nThis extracted information can be used in other parts of your workflow to personalize messages or perform actions specific to that person, such as sending them an email or adding them to a mailing list.\n**Steps to use Person Field**\n1. Create a new capture information card.\n2. Set the Type property to **Person**.\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted name information.\n4. Optionally, set the **Prompt message** property to a message that prompts the user to enter their name.\n5. Save the card.\nOnce the card is saved, it will automatically extract the person's name information from the user's input and save it in the workflow variable you specified.\nYou can then use this variable in other parts of your workflow by referencing the specific fields in the name object using the following syntax:\nTypeScript\n`{{workflow.variableName.first}} and {{workflow.variableName.last}}\n`\n**Example**\nLet's say you want to capture the user's name to personalise a message. You can create a new capture information card with the following properties:\n`Type: Person\nVariable name: userName\nPrompt message: What's your name?\n`\nWhen the user enters their name, the Person card will extract and save the information in the **userName** workflow variable. You can then use this variable in other parts of your workflow to personalise your messages, such as greeting the user by name.\nHere's an example of how you can use the extracted information in a message:\nText\n`Hello {{workflow.userName.first}}, welcome to our website!\n`\nThis will display a personalised greeting to the user with their first name.\nDateTime\n[](#datetime)\nThe **DateTime** capture information type in Botpress. This type of capture information extracts a date or duration value from the user's input and saves it in a variable of type **Object**. The extracted information can include values like **next week,** **in a month,** **after two months,** **in 15 days,** **2 working days,** or any other date or duration value.\n**Steps to use DateTime Field**\n1. Pick the **DateTime** Capture Information Card from the Cards.\n2. (Optional) - Add a question to ask. (e.g. when would you like to book an appointment?)\n3. Store the output in a variable.\nOnce the card is used, it will automatically extract the date or duration value from the user's input and save it in the workflow variable you specified as an object. You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's response.\n**Example**\nLet's say you want to ask the user for their preferred date of booking a hotel room. You can create a new capture information card with the following properties:\n`Type: Datetime\nVariable name: bookingDate\nPrompt message: When would you like to book the room? Please enter a date or duration (e.g., next week, in a month, after two months, in 15 days, 2 working days).\n`\nWhen the user enters their response, the Datetime card will extract the date or duration value and save it in the **bookingDate** workflow variable as an object. You can then use this variable in other parts of your workflow to decide when to book the room or provide available dates for the user to choose from.\nYou can check the user's preferred booking date against your available dates to ensure the room is available for booking on that day. If the room is not available, you can offer other available dates or suggest another hotel that is available on the preferred date.\nFormatting Date\n[](#formatting-date)\nJavaScript\n`` const date = luxon.DateTime.fromJSDate(workflow.date)\n// Default format of date is 2023-09-27T00:00:00.000Z\n// Example 1: Display a Friendly, Human-readable Date Format\nconst friendlyFormat = date.toFormat('LLLL dd, yyyy')\nconsole.log(`��� Your requested date is: ${friendlyFormat}.`)\n// Output: ��� Your requested date is: September 27, 2023.\n// Example 2: Display the Day of the Week\nconst dayOfWeek = date.toFormat('EEEE')\nconsole.log(`��� It falls on a: ${dayOfWeek}.`)\n// Output: ��� It falls on a: Wednesday.\n// Example 3: Display the Date in Numeric Format\nconst numericDateFormat = date.toFormat('dd-MM-yyyy')\nconsole.log(`��� Numeric Format: ${numericDateFormat}.`)\n// Output: ��� Numeric Format: 27-09-2023.\n// Example 4: Display the Date with Slashes\nconst slashDateFormat = date.toFormat('yyyy/MM/dd')\nconsole.log(`��� Slash Format: ${slashDateFormat}.`)\n// Output: ��� Slash Format: 2023/09/27.\n// Example 5: Display the Date with Day and Month Name\nconst dayMonthNameFormat = date.toFormat('EEEE, dd of LLLL')\nconsole.log(`��� Day and Month Name Format: ${dayMonthNameFormat}.`)\n// Output: ��� Day and Month Name Format: Wednesday, 27 of September.\n``\nWait for User Input\n[](#wait-for-user-input)\nThe **Wait for User Input** type is used to pause the flow of a conversation until the user enters a specific input. This can be useful when you want to wait for the user to enter a specific input before proceeding with the conversation.\n**Steps to use Wait for User Input Field**\n1. Drag and drop the **Wait for User Input** card into your node.\n2. You can use `{{event.preview}}` to display the fetched user's response after the user enters the input.\nCustom Prompt Fields\n[](#custom-prompt-fields)\nEntity - Regex\n[](#entity---regex)\nThe **Entity - Regex** type of capture information uses regular expressions to extract specific patterns of information from the user's input and saves it in a variable of type **String**. It's particularly useful for capturing sensitive information like credit card numbers, which have distinct patterns.\n**Steps to use Regex Field**\n1. Create a new entity in the **Entities** section of your Botpress instance with a custom regular expression that matches the pattern of the information you want to capture.\n2. Create a new capture information card.\n3. Set the Type property to **Entity Regex**.\n4. Select the entity you created in Step 1 from the **Entity** dropdown.\n5. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted information.\n6. Set the **Prompt message** property to a message that prompts the user to enter the information you want to capture.\nOnce the card is used, it will automatically extract the information that matches the regular expression pattern from the user's input and save it in the workflow variable you specified as a string. You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's input.\n**Example**\nLet's say you want to ask the user for their credit card number. You can create a new entity with a regular expression that matches the pattern of a credit card number, such as **/(\\\\d{4}-){3}\\\\d{4}/** for a 16-digit credit card number in the format **XXXX-XXXX-XXXX-XXXX**. You can then create a new capture information card with the following properties:\n`Type: Entity Regex\nEntity: Credit Card Number (the entity you created in step 1)\nVariable name: creditCardNumber\nPrompt message: Please enter your credit card number in the format XXXX-XXXX-XXXX-XXXX.\n`\nWhen the user enters their credit card number, the Entity Regex card will extract the credit card number that matches the regular expression pattern and save it in the **creditCardNumber** workflow variable as a string. You can then use this variable in other parts of your workflow to perform actions like validating the credit card number or sending it to a payment gateway.\nIt's important to note that the **Contains sensitive data** property is available for Entity Regex type, which will mask the data by \\* before saving it in the database, making it more secure.\nEntity - List\n[](#entity---list)\nIn this section, we'll discuss the **Entity - List** capture information type in Botpress. This type of capture information extracts specific pieces of information from the user's input based on matching it with entries (or synonyms) in a custom entity list. This can be useful when you want to capture specific information like a person's name, location, or product name.\n**Steps to use List Field**\n1. Create a new entity list under the library -> entities section.\n2. Add entries to the entity list and their synonyms.\n3. Create a new capture information card.\n4. Set the Type property to **Entity List**.\n5. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted information.\n6. Set the **Prompt message** property to a message that prompts the user to enter information that matches the entity list.\nOnce the card is used, it will automatically extract the information that matches an entry (or one of its synonyms) in the custom entity list from the user's input and save it in the workflow variable you specified. You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's response.\n**Fuzzy matching options**\nBotpress offers three options for fuzzy matching:\n* **Strict**: No errors allowed.\n* **Medium**: Tolerates up to one error in words of four characters or more.\n* **Loose**: Tolerates up to two errors in words of four characters or more.\nThis means that even if the user makes a typo or a slight error, the system can still match the input with an entry in the entity list.\n**Example**\nLet's say you want to ask the user for their favorite type of pizza. You can create a new entity list with entries like **Pepperoni,** **Hawaiian,** **Margherita,** and **Vegetarian.** Then, create a new capture information card with the following properties:\n`Type: Entity List\nVariable name: favoritePizza\nPrompt message: **What's your favorite type of pizza? Please enter the name of one of our popular pizza types.\n`\nWhen the user enters their response, the Entity List card will extract the information that matches an entry (or synonym) in the custom entity list and save it in the **favoritePizza** workflow variable. You can then use this variable in other parts of your workflow to make decisions or take actions based on the user's favorite pizza type.\nFor example, you could use this variable to direct the user to the pizza ordering process, or to suggest additional toppings based on their selection.\nAdvanced Configuration\n[](#advanced-configuration)\nRetries\n[](#retries)\nThe **Retries** setting helps the bot handle situations when it doesn't understand what the user is saying. It allows the bot to ask the user to provide the information again in a different way. This can improve the user's experience with the bot, increase engagement, and help the bot handle more conversations before giving up.\n**Number of retries**\nThis is the maximum number of times the bot will ask the user to provide the information again before giving up and moving to the next card in the conversation or triggering the failure transition if enabled.\n**Retry message**\nThis is the message that the bot will show to the user each time they fail to answer the question. It will ask the user to provide the information again in a different way. If the capture has predefined choices the retry message will contain the buttons again.\nYou can also add variables to this message using the following syntax:\n`Hello @workflow.userName.first, we did not get your number right, please enter it again!\n`\n**Pro Tip**\nTo give your users the best experience, you can combine the **Retries** option with the **Add transition to handle failure** flag. This will help the bot gracefully handle situations when it can't understand the user's input.\n**Example 1:**\nLet's say you have a card that asks the user to choose between **Food** and **Drinks**. If you set the **Number of retries** to 0 and the **Add transition to handle failure** flag is turned on, then if the user says **I want Cars**, the bot will redirect the user directly to the failure transition, where you can show a message like **Sorry, I didn't understand that**.\n**Example 2:**\nNow, let's change the example to have the **Number of retries** set to 2 and the **Retry message** set to **Sorry, I didn't understand that, try to choose from the choices**, and the **Add transition to handle failure** flag turned on. If the user says, **I want Cars**, the bot will respond with **Sorry, I didn't understand that. Try to choose from the choices**, and show the choices again.\nIf the user provides another message that is not related to the choices, the bot will retry again, up to a maximum of 2 retries. If the user still fails to provide the required information after the maximum retries, the bot will redirect the user directly to the failure transition, where you can have a message like **Sorry, I didn't understand that**.\nValidation\n[](#validation)\nThe **Validation** setting allows you to verify that the user's input meets certain criteria before proceeding with the conversation. This can help ensure that the information collected is accurate and relevant to the conversation.\n**Properties**\n**1\\. Label**\nThe label property allows you to generate validation code based on plain natural language instructions. This can make it easier to set up the validation rules without needing to write code.\n**2\\. Code**\nIf you prefer to write your own validation code, you can use the code property. This property allows you to write code to evaluate the user's input and determine whether it meets the validation criteria.\n**3\\. Validation failed message**\nIf the user's input fails validation, you can customise the message that the bot sends to inform the user of the validation failure.\n**Steps to use Validation**\nTo use the validation feature, you can add the validation properties to the Capture Information card in the Botpress interface. You can choose to use the Label or Code property to set up the validation rules.\nOnce the validation rules are set up, the user's input will be evaluated before proceeding with the conversation. If the input meets the validation criteria, the conversation will continue normally. If the input fails validation, the bot will send a message with the validation failed message you have specified.\n**Example 1:**\nSuppose you have a Capture Information card that asks the user for their age. You want to ensure that the user enters a number between 18 and 100\\. You can use the following validation code in the **Validation** section of the card:\nCoffeeScript\n`function validate(input: string): boolean\n{\nconst age = parseInt(input) if (isNaN(age))\n{ return false }\nreturn age >= 18 && age <= 100\n}\n`\nThis code first tries to parse the user's input as a number. If the input is not a valid number, the code returns **false**. Otherwise, it checks if the age is between 18 and 100 and returns **true** if it is.\n**Example 2:**\nSuppose you have a Capture Information card that asks the user for their email address. You want to ensure that the user enters a valid email address format. You can use the following validation code in the **Validation** section of the card:\nCoffeeScript\n`function validate(input: string): boolean {\nconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\nreturn emailRegex.test(input)\n}\n`\nThis code uses a regular expression to check if the user's input matches the format of a valid email address. If the input matches the format, the code returns `true`. Otherwise, it returns `false`.\nExtract from History\n[](#extract-from-history)\nThe **Extract from History** setting allows the bot to extract values from previous messages in the conversation history. This can help the bot better understand the user's input and provide more accurate responses.\n**Property**\n**Number of messages from history to extract from**\nThis property determines how many messages in the conversation history the bot will try to extract the value from. A value of **0** means that the bot will not look back in the conversation history and will only use the user's most recent message. A value of **1** means that the bot will extract the value from the user's previous message, and so on.\n**Example:**\nLet's say you have a Capture Information card that asks the user for their favorite color. If the user has already mentioned their favorite color earlier in the conversation, you can use the **Extract from History** feature to extract the value from their previous message.\nIf you set the **Number of messages from history to extract from** to **1**, the bot will extract the value from the user's previous message. If you set it to **2**, the bot will extract the value from the message before that, and so on.\nFor example, if the user said **My favorite color is blue** earlier in the conversation and you set the **Number of messages from history to extract from** to **1**, the bot will extract **blue** as the user's favorite color without asking the user again. This can save time and improve the user experience by avoiding repetitive questions.\nCancellation\n[](#cancellation)\nThe **Cancellation** setting can be used to break out of the conversation and cancel the Capture Information card. This can enhance the user's experience with the bot, making the conversation feel more natural and increasing engagement.\n**Properties**\n**User can cancel the capture**\nWith this option turned on, users can cancel the Capture Information card at any time during the conversation.\n**Confirm before cancelling**\nIf you turn on this option, users will be asked to confirm whether they want to cancel the Capture Information card before it is cancelled.\n**Confirm cancel message**\nThis option allows you to customise the message that the bot sends to confirm the user's decision to cancel the Capture Information card.\n**Example 1:**\nSuppose you have a Capture Information card that asks the user for their name and email address. If the user decides to cancel the conversation, the **User can cancel the capture** option will allow them to do so easily.\n**Example 2:**\nIf you turn on the **Confirm before cancelling** option, the bot will ask the user if they are sure they want to cancel the Capture Information card before it is cancelled. If the user confirms the cancellation, the bot will send a message that you can customise using the **Confirm cancel message** option.\nChoices\n[](#choices)\nThe **Choices** setting is used to offer a list of options to the user as a response to a Capture Information card. This can be useful when you want to restrict the user's input to a specific set of values or provide them with a list of options to choose from quickly.\nYou could add fixed options or add variables to each choice to make them dynamic. You can also render the list of choices dynamically by toggling the SuperText input and adding an array variable with the following format:\nJavaScript\n`;[\n{\nlabel: 'French',\nvalue: 'fr',\n},\n{\nlabel: 'English',\nvalue: 'en',\n},\n]\n`\n> ## ���\n>\n> Limit\n>\n> If you add more than 5 choices, they will be rendered as a Dropdown/List instead of buttons. This number may vary by channel.{' '} The choices labels should not be longer than 20 characters otherwise they will get cut in some channels.\n> ## ���\n>\n> Note\n>\n> Choices are only available for **Single Choice**, **Multiple Choice**, **Boolean**, **Confirmation** and **Raw Input**Capture cards.\n**Example**\nSuppose you have a Capture Information card that asks the user to select their preferred mode of transportation - Car, Bus or Train. If you turn on the Choices option and specify these three options, the user will be presented with these options to choose from.\nAdvanced\n[](#advanced)\n\\*\\*1\\. Add transition to handle failure\nThis is a yes/no flag that determines whether a transition should be added to handle cases where the Capture Information card fails to retrieve information from the user.\n**Example**\nIf this flag is set to **Yes** and the Capture Information card fails to capture the required information, it will transition to the failure transition where a message can be displayed to the user, such as **Sorry, I didn't understand that. Please try again**.\n\\*\\*2\\. Skip if variable is already filled\nThis is a flag that determines whether the Capture Information card should be skipped if the variable assigned to it already has a value.\n**Example**\nIf this flag is set to **Yes** and the variable already has a value, the Capture Information card will be skipped entirely, and the conversation will proceed to the next node.\nThis flag can be useful in scenarios where a user may have already provided the required information in a previous conversation with the bot.\nCombining these two flags can help improve the user experience with the bot by allowing for smoother conversation flows and avoiding unnecessary repetition.\nPrompt Chaining\n[](#prompt-chaining)\nPrompt Chaining allows you to extract multiple values from a single user message using multiple Capture Information cards in sequence. If a value was not found, the respective Capture Information card will ask for its value.\n**Chaining Multiple Prompts**\nTo chain multiple Capture Information cards together, you need to follow these steps:\n1. Add the first Capture Information card to the flow.\n2. Set the Type property to the type of information you want to capture (e.g., Fullname).\n3. Set the **Variable name** property to the name of the workflow variable you want to use to store the extracted information (e.g., fullname).\n4. Set the **Prompt message** property to a message that prompts the user to enter the information (e.g., **Please enter your full name**).\n5. Set the **Extract from history** property to **1**.\n6. Add the next Capture Information card to the flow.\n7. Repeat steps 1-6 for each additional Capture Information card you want to add, making sure to use a different variable name for each one.\nOnce the user enters a value, it will automatically extract the requested information from the user's message using each Capture Information card in sequence. If a value is not found for a particular Capture Information card, it will ask the user for the value before proceeding to the next node/card.\nYou can then use the extracted variables in other parts of your flow by referencing the specific variable names using the following syntax: **`{{workflow.variableName}}`**.\n**Example**\nLet's say you want to capture a user's full name, email address, and phone number. You can create a new flow with the following steps:\n1. Add a Capture Information card to the flow with the following properties:\n`Type: Fullname\nVariable name: fullname\nPrompt message: Please enter your full name\nExtract from history: 1\n`\n1. Add a second Capture Information card to the flow with the following properties:\n`Type: Email\nVariable name: email\nPrompt message: Please enter your email address\nExtract from history: 1\n`\n1. Add a third Capture Information card to the flow with the following properties:\n`Type: PhoneNumber\nVariable name: phone\nPrompt message: Please enter your phone number\nExtract from history: 1\n`\nWhen the user sends a message, the flow will begin extracting the requested information from the user's message using each Capture Information card in sequence. If a value is not found for a particular Capture Information card, it will ask the user for the value before proceeding to the next card.\nYou can then use the extracted variables in other parts of your flow, such as sending a confirmation message to the user with their captured information:\n`Thank you for submitting your information!\nWe have your full name as {{workflow.fullname.first}} {{workflow.fullname.last}}, your email address as {{workflow.email}}, and your phone number as {{workflow.phone}}.\nWe'll be in touch soon!\n`\nThis will display the user's captured information in a clear and easy-to-read format for both the user and the bot.\nUpdated about 1 month ago\n---\n* [Table of Contents](#)\n* * [Prompt Field Types](#prompt-field-types)  \n         * [Single Choice](#single-choice)  \n         * [Multi Choice](#multi-choice)  \n         * [Boolean](#boolean)  \n         * [Confirmation](#confirmation)  \n         * [Number](#number)  \n         * [Email Address](#email-address)  \n         * [Phone Number](#phone-number)  \n         * [FullAddress](#fulladdress)  \n         * [Price](#price)  \n         * [Raw Input](#raw-input)  \n         * [Percentage](#percentage)  \n         * [Quantity](#quantity)  \n         * [Color](#color)  \n         * [Time Measurement](#time-measurement)  \n         * [Weight Measurement](#weight-measurement)  \n         * [Cron Schedule](#cron-schedule)  \n         * [Operating System](#operating-system)  \n         * [Quantity of People](#quantity-of-people)  \n         * [Volume Measurement](#volume-measurement)  \n         * [Temperature Measurement](#temperature-measurement)  \n         * [Person](#person)  \n         * [DateTime](#datetime)  \n         * [Wait for User Input](#wait-for-user-input)  \n   * [Custom Prompt Fields](#custom-prompt-fields)  \n         * [Entity - Regex](#entity---regex)  \n         * [Entity - List](#entity---list)  \n   * [Advanced Configuration](#advanced-configuration)  \n         * [Retries](#retries)  \n         * [Validation](#validation)  \n         * [Extract from History](#extract-from-history)  \n         * [Cancellation](#cancellation)  \n         * [Choices](#choices)  \n         * [Advanced](#ad\n* [Cancellation](#cancellation)  \n         * [Choices](#choices)  \n         * [Advanced](#advanced)  \n   * [Prompt Chaining](#prompt-chaining)[Jump to Content](#content)\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\n---\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\nGuides\nMoon (Dark Mode)Sun (Light Mode)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\nCLI\nSearch\n## Home\n* [Botpress Documentation](/docs/home)\n## Getting Started\n* [Build](/docs/build)\n* [Deploy](/docs/deploy)\n* [Monitor](/docs/monitor)\n## DASHBOARD\n* [Workspace](/docs/workspace)  \n   * [Home](/docs/home-1)  \n   * [Members](/docs/members)  \n   * [Audits](/docs/audits)  \n   * [Your integrations](/docs/your-integrations)  \n   * [Usage](/docs/usage-2)  \n   * [Settings](/docs/settings)  \n   * [Profile Setting](/docs/user-profile)\n* [Bot](/docs/bot)  \n   * [Overview](/docs/overview-1)\n<|end_input|>\n\nAnswer with this following format:\n```\n■is_about_animals:【explanation (where \"explanation\" is answering the question \"is the text about animals?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_lua_code:【explanation (where \"explanation\" is answering the question \"does the text contain Lua code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_python_code:【explanation (where \"explanation\" is answering the question \"does the text contain Python code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■contains_js_code:【explanation (where \"explanation\" is answering the question \"does the text contain JavaScript code?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■is_botpress:【explanation (where \"explanation\" is answering the question \"is the text about Botpress?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■is_rasa:【explanation (where \"explanation\" is answering the question \"is the text about Rasa?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_flows:【explanation (where \"explanation\" is answering the question \"does the text mention flows?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_api:【explanation (where \"explanation\" is answering the question \"does the text mention the Botpress API?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_enterprise:【explanation (where \"explanation\" is answering the question \"does the text mention Botpress Enterprise?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_workspaces:【explanation (where \"explanation\" is answering the question \"does the text mention workspaces?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_webchat:【explanation (where \"explanation\" is answering the question \"does the text mention the Webchat?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n\n■has_hitl:【explanation (where \"explanation\" is answering the question \"does the text mention HITL (human in the loop)?\")】:x■ (where x is ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES)\n■END■\n```\n\nFormat cheatsheet:\n```\n■label:【explanation】:x■\n```\n\nWhere `x` is one of the following: ABSOLUTELY_NOT | PROBABLY_NOT | AMBIGUOUS | PROBABLY_YES | ABSOLUTELY_YES\n\nRemember: In your `explanation`, please refer to the Expert Examples # (and quote them) that are relevant to ground your decision-making process.\nThe Expert Examples are there to help you make your decision. They have been provided by experts in the field and their answers (and reasoning) are considered the ground truth and should be used as a reference to make your decision when applicable.\nFor example, you can say: \"According to Expert Example #1, ...\"","role":"user","type":"text"}],"meta":{"integrationName":"zai","promptCategory":"zai:zai.label","promptSource":"zai:zai.label:default"},"model":"fast","signal":{},"stopSequences":["■END■"]},"method":"POST","url":"https://api.botpress.cloud/v2/cognitive/generate-text"}

Output:
■is_about_animals:【The text describes Botpress capture‑information card types (Quantity of People, Volume Measurement, etc.) and does not refer to any animal‑related content. According to Expert Example #1, when no animal terms appear the answer is ABSOLUTELY_NOT.】:ABSOLUTELY_NOT■

■contains_lua_code:【All code snippets are either JavaScript or CoffeeScript; there is no Lua syntax such as `function foo() end`. Expert Example #2 states that absence of Lua patterns leads to ABSOLUTELY_NOT.】:ABSOLUTELY_NOT■

■contains_python_code:【The document contains no Python code blocks (e.g., no `def` or `import` statements). Following Expert Example #3, this results in ABSOLUTELY_NOT.】:ABSOLUTELY_NOT■

■contains_js_code:【Several sections contain JavaScript examples (e.g., `const date = luxon.DateTime.fromJSDate(workflow.date)`, `const friendlyFormat = date.toFormat('LLLL dd, yyyy')`). Expert Example #4 indicates that presence of JavaScript code warrants ABSOLUTELY_YES.】:ABSOLUTELY_YES■

■is_botpress:【The entire passage is a Botpress documentation page, repeatedly referencing “Botpress”, “capture information card”, and Botpress UI elements. According to Expert Example #5, such explicit focus gives ABSOLUTELY_YES.】:ABSOLUTELY_YES■

■is_rasa:【There is no mention of Rasa, its components, or terminology. Expert Example #6 concludes that lack of Rasa references means ABSOLUTELY_NOT.】:ABSOLUTELY_NOT■

■has_flows:【The text talks about “flow”, “add transition to handle failure”, and “use the extracted variables in other parts of your flow”, indicating explicit discussion of Botpress flows. Expert Example #7 supports labeling this as ABSOLUTELY_YES.】:ABSOLUTELY_YES■

■has_api:【While the navigation bar includes a link titled “API Reference”, the body of the text does not discuss any Botpress API endpoints or calls. Expert Example #8 suggests this uncertainty leads to PROBABLY_NOT.】:PROBABLY_NOT■

■has_enterprise:【No occurrence of the term “Enterprise” or any related features appears. Expert Example #9 therefore gives ABSOLUTELY_NOT.】:ABSOLUTELY_NOT■

■has_workspaces:【The sidebar navigation contains a link “[Workspace](/docs/workspace)”, which counts as a mention of workspaces. Expert Example #10 treats such a mention as PROBABLY_YES.】:PROBABLY_YES■

■has_webchat:【The word “Webchat” does not appear anywhere in the document. Following Expert Example #11, the correct label is ABSOLUTELY_NOT.】:ABSOLUTELY_NOT■

■has_hitl:【There is no reference to HITL (human in the loop) or related concepts. According to Expert Example #12, this results in ABSOLUTELY_NOT.】:ABSOLUTELY_NOT■