Skip to main content

Variables

Variables are placeholders that store user input, data from external systems, or any other relevant information that needs to be saved and used later in the bot conversation.

Variables help maintain context throughout the conversation, enabling the chatbot to retrieve the data and respond appropriately based on the previous interactions.

Variables can hold different types of data, such as strings, numbers, arrays, objects, and boolean.

Supported variable data types

The following table consists of various data types for variables, along with their examples.

Data TypeDescriptionExample
NumberFor storing numbers, including floating-point numbers.10, 3.14, -15
StringFor storing alphanumeric characters.'Harry', 'PAN9856', '123starbucks'
ObjectFor storing batch data such as database, API responses, or results from a date prompt.{"Name": "Ron", "Phone": 9980808080, "Age": 40}
ArrayFor storing a list of multiple values of different data types.[1,2,3,"Text"], ["india", "+91"]
BooleanFor storing logical data with true or false values (1/0).true, false
note
  • Ensure you add the data type values in the format mentioned here, for example, if you are storing a string value, it should be within ''.
  • When assigning a value to a variable, ensure that the assigned value matches the variable's datatype.
  • Object and array data types cannot be directly displayed in a Text prompt.

Limitations

  • You can create variables only from Prompt and Action nodes.
  • If the data type is an array or object, you need to use the message node to display the data.

Example: Configuration for using variables in a chatbot

Let's say you want to create a chatbot that helps users book appointments. You can use variables to store the user's preferred date and time for the appointment and use these variables later in the conversation.

  • Step 1: Collect user information

    The chatbot gathers details about the user's preferred appointment date and time.

    Chatbot: Hi! When would you like to book your appointment? User: Next Friday

    Chatbot: Great! What time works best for you? User: 3 PM

  • Step 2: Store information in variables

    The information provided by the user is stored in variables.

    {{{variables.appointmentDate}}} = "Next Friday" {{{variables.appointmentTime}}} = "3 PM"

  • Step 3: Use variables to confirm the appointment

    The chatbot uses these variables to confirm the appointment details with the user.

    Chatbot: So, you want to book an appointment for {{{variables.appointmentDate}}} on {{{variables.appointmentTime}}}. Can you confirm? Sample values: Chatbot: So, you want to book an appointment for next Friday at 3 PM. Can you confirm?? User: Yes

  • Step 4: Confirm and proceed

    The chatbot can then confirm the booking and provide further instructions.

    Chatbot: Awesome! Your appointment for next Friday at 3 PM has been booked.

Types of variables

There are 4 different types of variables supported by Yellow.ai:

  1. Custom variables
  • Journey (flow level variables)
  • Global (bot level variables)
  1. System variables
  2. Config variables
  3. User properties
note
  • Each variable type must have a unique name. You cannot use the same variable name for different types of variables.

Custom variables

Custom variables are created by bot designers to store specific information unique to a particular conversation or use case. They are further divided into two types:

note

Journey and Global variables expired after 48 hours of inactivity.

Journey variable

These variables are intended to store values that pertain to a specific user journey, exclusively for the duration of that session or journey.

Key points of Journey variables:

  • Session-specific: Journey variables hold data that is specific to a user's session with the chatbot. Once the session ends, journey variables are reset or discarded.
  • Temporary storage: They store temporary information that may be used throughout the interaction within the particular flow, such as user preferences or responses to specific questions.

Example of using Journey variables:

Suppose you have a chatbot designed to assist users with booking appointments. You might use journey variables to store the date and time preferences provided by the user during the interaction.

  • Collecting data:

Bot: What date would you like to book your appointment? User: June 30th

Here, a journey variable appointmentDate is set to "June 30th".

  • Using the variable:

Bot: At what time on June 30th would you prefer? User: "2 PM"

Now, the journey variable appointmentTime is set to "2 PM".

  • Finalizing the interaction:

Bot: You have requested an appointment on {{variables.appointmentDate}} at {{{variables.appointmentTime}}}. Is this correct? User: Yes

In this example, variables.appointmentDate and variables.appointmentTime are journey variables that hold information relevant to the current booking process. Once the session ends or the appointment is confirmed, these variables can be reset for the next interaction.

Global variable

A global variable in a chatbot is a variable that is accessible across different sessions, journeys, users, and interactions. These variables store information that needs to be consistently available and shared across multiple interactions, such as user preferences, account information, or any other data that should persist beyond a single session.

Key points of Global variable:

  • Persistent data storage: Global variables retain their values across multiple sessions and interactions.
  • Reusable data: These variables can be accessed and modified by different parts of the chatbot, allowing for centralized data management.
  • Data accessibility: Unlike journey variables, which are session-specific, global variables are available globally within the chatbot, meaning they can be used by any user and at any point in the conversation flow.

Example of using global variables: Suppose you have a chatbot designed for an e-commerce platform, and you want to store the current promotion or discount code that should be applied to all users.

  • Setting the global variable:

Set the promotion code to 'SUMMER21'. Here, the Global variable 'promoCode' is set to 'SUMMER21'.

  • Using the Global Variable in User Interaction:

User: Do you have any discount codes? Bot: Yes, you can use the code {{{variables.promoCode}}} to get a discount on your purchase!.

In this example, 'promoCode' is a global variable that holds the current promotion code. Any user interacting with the chatbot can access this variable, ensuring that the promotion code is consistently communicated to all users.

System Variables

System variables are pre-defined variables that store information about the user session, conversation, and bot configuration. They are available by default in the platform and can be used across bot flows to personalize the conversation and provide relevant information to the user. To know more about system variables, click here.

Syntax:

  • System variable: {{{system_variable_name}}} notation is used to access system variables.
  • User profile: You can access the user profile using {{{profile.field_name}}}.

The following fields are available in the user profile object:

  • city
  • country
  • country_code
  • firstTime (if the user is visiting the bot for the first time)
  • ip
  • latitude
  • longitude
  • name (generated user name)
  • region
note

The variable names cannot be altered, and new variables cannot be added to this category.

The following are the system variables available on the platform:

VariableData typeUse
sourcestringReturns the channel from which the message was sent.
senderstringReturns the sender ID. For example: mobile number for WhatsApp.
profileobjectReturns the user’s profile as an object.
pageUrlstringReturns the URL of the user's current page.
sentimentobjectReturns the sentiment of the user message- positive, negative, or neutral.
sessionMessageLogUrlstringReturns a URL to the chat’s transcript.
userChatTranscriptstringReturns a URL to the user chat’s transcript
dateobjectReturns the current date and time.
channelProfilestringReturns profile ID of the user in that specific channel.
channelProfileNamestringReturns the profile name of the user in that specific channel.

Config Variables

Config variables are variables that are used to store a wide range of information, including API keys, URLs, database connection strings, and other configuration settings that are used throughout the bot flow. By storing these values, bot builders can use them across multiple flows without modifying any code.

For example, let's say that a bot needs to connect to a specific external API. Rather than hardcoding the API key directly into the bot's code, you can create a config variable (say api_key) and store the value there. If the API key needs to be updated, the bot builder can simply change the value of the api_key without modifying the bot's code.

To create a config variable, follow these steps:

  1. Go to Studio > Build > select the specific flow > click the Variable icon.

  2. Go to Config variables > + Add variable.

  3. Define the following fields and click Add.

    • Variable name: Enter a name for the variable.

    • Data type: Choose the data type based on the data to be stored.

    • Value: Enter the data to be stored.

User properties

User properties are variables that store information about each individual user interacting with the bot. These properties are stored directly in User 360.

You can use user properties to personalize experiences in bot conversations and Engage campaigns. They also help with user analytics in Insights. Standard user properties like name, email address, and location are available by default. Additionally, you can create custom user properties if needed.

Create a Variable

To create a variable, follow these steps:

  1. Go to Studio > Build > select the specific flow > click the Variable icon.

  2. Click the preferred tab (Custom/Sytem/Config/User properties), if Custom, choose Journey variables or Global variables, and click +Add Variable.

  3. Enter your preferred Variable name, select the respective Data type for the variable, and enter the value.

    drawing
  4. Click Add.

Create a Variable via nodes

You can also create variables through nodes, and those variables can be used in any flow or node.

note
  • You can create variables only from Prompt and Action nodes.
  • It is recommended to use new variables to store data rather than reusing existing ones, as the values may get overwritten.

To create variable via nodes:

  1. Go to Studio > Build > and select the specific flow where you want to create the variable.

  2. Select the node where you want to store a user response in a variable and click Select variable.

  3. Select the appropriate variable based on your use case.

    drawing
  4. If the variable does not exist, you can create a new variable via node by clicking Create new variable.

    drawing
  5. Add the variable name and datatype, and click Add.

    drawing

Store data in variables

Prompt and Action nodes can be used to store the data in variables.

note
  1. Only the names of the existing variables are displayed on the store response in dropdown.

  2. Create a new variable if you want to add more variables to the dropdown.

  3. Variables can also be stored with the help of a variable node in the flow.

To store the response of a node, follow these steps:

  1. Click Select variable option at the bottom of the action/prompt node.

  2. A list of journey variables will be displayed, from which you can choose the appropriate variable to store the user's response.

    drawing
  3. Select the variable that you want to use to store the response.

    drawing
  • When the bot asks a question and the user responds, the response will be stored in the selected variable.

Retrieve data from variables

To retrieve data stored in a specific variable, fetch the variable in a node and use appropriate syntax, especially when using arrays or objects.

To retrieve and display data from variables, follow these steps:

  1. Add a message node to your chatbot's flow where you want to retrieve and display the data.

  2. Enter the syntax in the respective message node to retrieve the data.

  3. If the data is an array or object, you cannot display it directly. You need to use syntax to filter out the required data. Refer to the following table for syntaxes based on the data type.

DatatypeSyntax
String{{{variables.variablename}}}
Array{{{variables.variablename.[position of the array].fieldname}}}
JSON Response ArrayStore the object in a variable and then use this syntax to retrieve data from specific fields:{{{variables.variablename.arrayname.[position of the array].field}}} or {{{variables.variablename.fieldname}}}
JSON ObjectStore the object in a variable and then use this syntax to retrieve data from specific fields: {{{variables.variablename.fieldname}}}

Data types supported by nodes

Different prompts and action nodes return responses in various formats and data types. Refer to the tables below to understand what types of variables can be stored in each node.

Prompt nodes

Prompt NodesVariable Datatype
Namestring
Emailstring
Phonestring
Locationobject
Carouselstring
Quick Repliesstring
Dateobject
Questionstring
Feedbackobject
Whatsapp Liststring
Multiselectstring
Image/filestring

Actions nodes

Action NodesVariable Datatype
APIobject, array, number, string
Database (search)array
Functionobject, array, number, string
Outbound Notificationobject, array, number, string
Notification Statusobject, array, number, string
Raise ticketobject, array, number, string
Modifierobject, array, number, string
Document Searchobject, array, number, string
Set Languageobject, array, number, string
Send OTPobject, array, number, string
Verify OTPobject, array, number, string
Paymentobject, array, number, string
Generate PDFobject, array, number, string