I see warnings in Tryout
So there you are, building flows and chatting away in Tryout! How do you know whether there are any warnings or error messages? The Tryout panel makes it easy to find out.
Warnings in Tryout appear as yellow warning triangles. When you see one, go to the Tryout window, then open the Messages panel to find more information about what went wrong and where.
If the error occurred within a flow, you will see a link to the flow and a link to the node or transition (vertex) within the flow at the point where the error occurred. If you click the vertex link, the corresponding flow will automatically open in edit mode with the associated location pre-selected. The procedure is basically the same for each type of error: find where it happened, go there, and fix it. The entire process could look something like this, where we've introduced an error into the 'User wants to order a coffee flow': a typo in a variable name in the order summary:
The Tryout engine will tell you right away if it can't find a particular language object that you refer to in a language condition. If you see a large number of missing language object warnings when you start Tryout, it could mean that your solution is missing an important language resource, such as the Lexical Resources. This is easy to fix. Follow the instructions given here to be sure you have correctly included the Lexical Resources as a solution resource. If this is about another lexical resource dependency, be sure that you have correctly linked that as well.
Otherwise, this message usually means that a particular language object is missing, disabled, or maybe misspelled somewhere. Make sure the required language object exists and is spelled correctly in all the references.
A syntax error in a language condition can occur at any location where language conditions are used: in syntax triggers, transitions, listeners, or language objects. You'll see these types of errors immediately in Tryout, even before you start testing. The Tryout engine notices and flags all condition inconsistencies when loading the solution. In the Messages panel, you can see a preview of the condition, and you can click into the exact location where the error can be fixed. The error messages begin with the text Condition syntax error followed by a brief description of the problem. Usually, that is enough to know what you have to fix and where. Also, while you are editing a language condition, the condition editor will highlight syntax errors in red.
Examples of condition syntax errors you might see include:
Condition syntax error: Condition terminated incorrectly
Condition syntax error: Missing opening parenthesis
Condition syntax error: Operator at invalid location
If you saw a message like this in Tryout:
You would click into the trigger and find this condition, with the superfluous parenthesis highlighted by the condition editor. All you have to do is correct the condition and save:
Sometimes a simple Groovy syntax error in a script, in a script node, or even embedded in a language condition can disrupt your session. What you see in Tryout is the same as what would happen in the live version, if left uncorrected. As soon as Teneo receives a script error, it interrupts the script it was running. Try to troubleshoot the cause by carefully reading the error message displayed. Perhaps a global variable definition was forgotten, or a variable name was misspelled? Ultimately, these error messages look worse than they really are. Remember, you can also add debug code e.g. a println statement to show information in the Engine panel during script processing. Note also that if an infinite loop is encountered, Teneo interrupts the script in question, leading to an undefined state.
If you're getting a script error, the description first reveals the location at which it occurred, including the line number (if applicable), followed by a description of what went wrong. Usually you'll see a text like Script syntax error or Bad script expression. The solution is to go to the location and find out what went wrong. If the error occurred within a flow, you can click into the location straight away.
Once Teneo triggers a flow, and at each turn of the conversation while in the flow, its job is to traverse the nodes and transitions until an answer can be constructed. As a rule, you can connect any kind of node in your flow design, but there must always be a path that successfully ends at an output node. If the flow design prevents this from happening, Teneo will show a Dropping stuck flow message, then drop the flow and continue checking the last user input against the remaining available triggers until the next flow is found (often the safety net). The effect while testing is that a completely different response is given than expected. Fortunately, a stuck flow is fairly easy to spot in Tryout:
Looking at the icons under the response, you'll see a stuck flow symbol, as well as a more detailed message in Messages.
In this example we enter the flow at a junction, but the outgoing transitions are set to 'Gets input before continuing'. This should only be done after an output was given where we want to wait for a response. You may recognize this design in the flow we built in Branch at the beginning of a flow. In this version of the flow we've introduced an error by setting the transitions to Get input before continuing: