Skip to main content

How to receive date and time in a script

$DATETIME is a system entity that receives and records information about date and time. It relies on the Duckling library and processes text input in a variety of formats.

  • For the date, it can be 15 December, Dec the 15th, 15/12, etc.
  • For the time, it can be 12:45, 12.45, quarter to one, etc.

Besides absolute time references (e. g., June 20 or 23:00), $DATETIME accepts relative ones, like today, tomorrow, or in two hours.

$DATETIME contents

$DATETIME value contains an object with the following properties (for the input 20 December 2019 12:45):

{
"iso": "2019-12-20T00:45:00", // Date and time according to ISO 8601 standard
"year": 2019,
"month": 12,
"day": 20,
"dayOfWeek": 6, // 1 is Sunday, 2 is Monday, 7 is Saturday
"hour": 0,
"minute": 45,
"second": 0,
"timestamp": 1576802700000 // Unix timestamp, in milliseconds
}

If no date is specified in the input, $DATETIME assumes the today’s date. If no time is specified, $DATETIME assumes the time to be midnight.

How to add $DATETIME to a script

Use a built-in intent to add a $DATETIME entity to your script.

The Date&Time intent accepts inputs like 15/05, 20 December, July 12, 12:00, and so on. To recognize the date even among other words, you can use template syntax:

Date&Time intent configuration

In this case, the intent will recognize not just December 15, but also Okay, it will be December 15 then.

To test how $DATETIME works, you can create a script that looks like this:

Date&Time test script

In this case, if the input text is not processed by $DATETIME, the bot will reply Sorry, I can’t understand you. Otherwise, the bot will print out the $DATETIME contents, then return to the input screen for you to test another input option.

Select Test to open the test widget and see how the bot processes different date and time inputs.

caution
When you edit the script, you have to stop the testing process and run it again to test the updated version.

How to use time in the script

  1. Connect the Date&Time intent to a new screen with a Conditions block and add the condition:

    $time = $DATETIME.hour + ":" + ("0" + $DATETIME.minute).slice(-2)

  2. Make a connection to a Text block and write the text:

    Do you want to have your appointment at $time?

A script extracting the time from user input

Regardless of the way the client writes the time, either in words or in numbers, the bot will save the time according to the format specified in the second Conditions block.

In this script, if the client writes quarter past noon, the bot will save 12:45 into the $time variable.

How to use date in the script

  1. Connect the Date&Time intent to a new screen with a Conditions block and add the condition:

    $date = $DATETIME.month + "/" + $DATETIME.day + "/" + $DATETIME.year

  2. Make a connection to a Text block and add the text:

    Do you want to book a room on $date?

A script extracting the date from user input

Regardless of the way the client writes the date, either in words or in numbers, the bot will save the date according to the format specified in the second Conditions block.

In this script, if the client writes 20 October, the bot will save 10/20/2022 into the $date variable, where instead of 2022 there will be the current year.

What’s next?

Now you can upgrade your script, for example:

  • Check if the chosen date is available for booking and let your clients book a date.
  • Process other information, e. g. the client name, phone number, or email.

Or send the received data: