Code Extension

Sometimes the conversational flow steps behavior needs to align to more complex business rules that cannot be implemented at design time using the graphical Flow Designer. For example, a hero step should present different buttons with options for each specific user role and conditions. It is very difficult to address dozens of combinations by using the Flow Designer.

Code Extension is a powerful feature that enables you to make hard-coded adjustments to flow steps definition.

IMPORTANT! When hard-coding flow steps using Code Extension, you should respect the step definition from the Flow Designer and only make small adjustments. DO NOT use Code Extension to completely change the flow steps behavior; otherwise, the AI Agent diagram will no longer provide you with accurate information and you might get confused when analyzing the Conversation History and performing further debugging.

To hard-code a flow step, on the desired flow step, click the Code Extension section header, then click the Edit icon displayed next to the desired language (if there are AI Agent additional languages set on the AI Agent). The Code Extension editor appears.

The Code Extension provides you with a set of predefined code templates to help you define your JavaScript code.

To add a template, click the Add default template button ( ) and select the template that best suits your needs.

NOTE: In the Code Extension editor, entities and entity collections are referenced by name; therefore, if you want to use the Entity explorer when creating an entity or entity collection, make sure that you remove the brackets “[[ ]]”.
IMPORTANT! In the Code Extension editor, always append thisStepValidator.Validate(thisStep); at the end of your code. This ensures that the flow step code is validated before execution, helping to prevent errors and ensure smooth functionality.

Use cases for Flow step code extensions

Conditional menus

Copy

Example: Show a different menu for Authenticated users


          function () 
          { 

              thisStep.Message = 'This message replaces this: ' + thisStep.Message; 

              //Clear all cards and build new ones. 
              //It is a good practice to author with the designer all the options, and customize with code specific rules.

              thisStep.Metadata.PostActions?.Clear(); 

              //use create* methods to create various objects. 

              if ([[ChatUser]].IsAuthenticated) 
               { 
                //create first card with two buttons

                    thisStep.Metadata.Hero.Cards.Add (thisStep.CreateHeroCard()); 
                    thisStep.Metadata.Hero.Cards[0].Title = "Title 1"
                    thisStep.Metadata.Hero.Cards[0].Subtitle = "Sub title 1"
                    thisStep.Metadata.Hero.Cards[0].Text = "Decsription 1"

                    //need to create the collection first

                    thisStep.Metadata.Hero.Cards[0].Buttons = thisStep.CreateCardActionList(); 
                    thisStep.Metadata.Hero.Cards[0].Buttons.Add(thisStep.CreateCardAction()); 
                    thisStep.Metadata.Hero.Cards[0].Buttons[0].Title = "Option 1"
                    thisStep.Metadata.Hero.Cards[0].Buttons[0].Value = "Value 1"
                    thisStep.Metadata.Hero.Cards[0].Buttons.Add(thisStep.CreateCardAction()); 
                    thisStep.Metadata.Hero.Cards[0].Buttons[1].Title = "Option 2"
                    thisStep.Metadata.Hero.Cards[0].Buttons[1].Value = "Value 2";              
              } 
          
              // this is mandatory at the end 

              thisStepValidator.Validate(thisStep); 
          } 
)(); 

The figure below shows a hero step definition in Flow Designer using the code extension above.

Conditional messages

Copy
Example: Show Alert and smiling emoji or Info and sad emoji in the Account info message based on the number of cases

          function () 
          { 
            if ([[Account]].CasesCount >0
            { 
                thisStep.Message = 'Alert! :('/*sad emoticon*/+ thisStep.Message; 
                } 
                else 
                { 
                    thisStep.Message = 'Info :)'/*smile emoticon*/+ thisStep.Message;
                }; 
         
             thisStepValidator.Validate(thisStep); 
          } 
)();

The figure below shows a message step definition in Flow Designer using the code extension above.

Data Manipulation

Code Extension – Error Handling

NOTE: This feature is available in Druid 9.20 and higher.

You can configure the behavior of the conversational engine when encountering an error during code extension execution. This setting controls whether the conversation continues or stops when an error is detected while executing the code provided in Code Extension on a flow step.

When an error occurs, Druid can either skip it silently or raise an exception in the Conversation History, similar to how connector errors are handled.

To configure error handling for Code Extension:

  1. Go to the AI Agent details > Dialogue management.
  2. From the Set variable error severity drop-down, select one of the following options:
    • Silent – Skips the error and continues the conversation. This was the default behavior in previous releases.
    • Raise exception – Triggers an exception and records the error in the Conversation History. Use the Raise exception option to detect configuration issues early and prevent code execution errors during conversations.
    • For steps that have the Error Handler set, you can author how the error is handled in the conversation. Additionally, you can create a flow dedicated to error handling and select it from AI agent details > Dialogue management section, Exception flow drop-down.

      Info: If no exception flow or step-level handler is defined, the conversation will stop when an exception is raised.
  3. Save the configuration.