Skip to main content

$reactions.timeout

This method sets a timeout — an automatic transition to another state if there is no input from the user.

Syntax​

$reactions.timeout({ interval: 10, targetState: "/Start/Timeout" });
$reactions.timeout({ interval: "10 seconds", targetState: "./Timeout" });

The method accepts an object with the following properties:

  • interval — the time interval during which input from the user is expected.
  • targetState — the state where the bot will switch to if there is no user input during this time.
Interval format

The value of interval can be either a number or a string.

  • As a number, it means the timeout duration in seconds.
  • As a string, it signifies the timeout duration in human-readable format.

An interval cannot exceed 99 hours.

String values of interval must be matched by the following regular expression:

(\s*(?<h>\d{0,2})\s*(hours|hour|h))?(\s*(?<m>\d{0,2})\s*(minutes|minute|min|m))?(\s*(?<s>\d{0,2})\s*(seconds|second|sec|s))?\s*
Examples of interval string values
  • 5 seconds
  • 1 sec
  • 3s
  • 1 min
  • 1 minute
  • 10 minutes
  • 1 hour
  • 10 hours
  • 3 min 1 sec
  • 1h5m3s

Usage details​

Only one timeout can be active at a time. If the method is called multiple times in the same state, the script will produce an error.

How to use​

In the following example, the bot asks the user to rate the service.

  • If the user gives a rating, the bot records it to analytics using the $analytics.setNps method and says goodbye.
  • If the user fails to give a rating for 5 minutes, the bot gives up waiting and proceeds to say goodbye by its own.
state: ServiceEvaluation
a: Thank you for your time. How would you rate your experience with us?
script: $reactions.timeout({ interval: "5 minutes", targetState: "/Goodbye" });

state: GetEvaluation
q: $regex<\d+>
a: Thank you. Your opinion is very important to us.
script: $analytics.setNps(parseInt($parseTree.text));
go!: /Goodbye

state: Goodbye
a: Take care and goodbye!