Other Variables Types

Besides flow variables and global variables, you can use user-scope, profile, and system variables.

Profile-Scope Variables for User Context

You can access values for a user’s name, locale, and local time using profile-scope variables, which access the profile settings from the chat client.

For example:
"Hello ${profile.firstName}, how can I help you today?"

This is an image of the profile.firstName in the output.
Use these pre-defined variables to output context-specific for the skill user.
To do this... Use this...
Get the first name of the bot user. ${profile.firstName}
Get the last name of the bot user. ${profile.lastName}
Get the bot user’s locale. ${profile.locale}
Get the user’s time zone (offset in milliseconds). ${profile.timezoneOffset}

These pre-defined variables are set automatically from values that the messaging platform passes in. The values differ by messaging platform and some messaging platforms may not provide them. For digital assistant as agent integrations, for example, the profile.firstName, profile.lastName, and profile.email have values only if the user was signed in to Oracle Service Cloud, or if a user filled out fields for the first name, last name, and email address on the Oracle Service Cloud chat launch page before requesting a chat. For the Oracle Web Client, these profile values must be set with the initUserProfile property or the updateUser method.

Save User-Specific Values for Return Visits

You can create user-scope variables to persist across sessions.

In general, when a user conversation with a skill or digital assistant ends, the variable values that were set from the user input are destroyed. However, you can also define user-scope variables to retain user input from previous sessions to enhance new conversations. You create user-scope variables directly in the components themselves.

To create a user-scope variable:

  1. In the Variable field of the property inspector of the component where you want to create it, select User Scope Variable from the dropdown.
  2. In the Scoped Variable Name field that appears, enter the variable name.

    Enter the name without the user. prefix. (Though you use that prefix when referencing a user-scope variable, you don't use it when defining it.)

To reference a user-scope variable, you use an expression like ${user.VAR_NAME}.

For example in the Pizza Skill - Visual Flow Designer sample skill, the lastOrderNumber user-scope variable is set after the user places the order in the service.reg.placeOrder flow. This variable is referenced by the expression ${((user.lastOrderNumber)?has_content)} in the first state of the flow that is called whenever the skill starts (handler.startSkill) to determine if the user has made any previous orders.

Note

The values of user-scope variables are channel specific. For example, if a user access a skill on a web channel and then later access the skill via a Microsoft Teams channel, the Teams channel will have its own instances of the user variables and won't recognize the values from the previous conversation in the web channel.

System Variables

Variable Type Description
system.nlpresult NLP Result Used to store the NLP result for the user utterance. To get the full NLP result, you can use the expression ${skill.system.nlpresult.value}.
system.intent.utterance String When this variable has a value, it will be used for intent matching instead of the last user message. To access this variable, you can use the expression ${skill.system.intent.utterance}.
system.event Map When one of the built-in events is mapped in the main flow or a sub flow, this variable holds event properties you can use to handle the event. For example, to get an event payload, you'd use an expression in the form ${skill.system.event.value.EVENT_NAME}.
system.rb resource bundle Used to access language resource bundle entries. To access a resource bundle entry, you can use an expression in the form ${skill.system.rb.RB_ENTRY_NAME}.