Built-in field types and grammars

The built-in field types and grammars for UK English are listed here.

Table 1. UK English built-in types. Brackets “[]” around a keyword mean that the keyword is optional. The vertical-bar symbol “|” indicates a choice between two or more keywords.
Element Implementation details
boolean Users can say one of the positive responses yes, true, positive, right, OK, sure, affirmative, check, and correct, or one of the negative responses no, false, incorrect, negative, not, and wrong. Variations on “yes” (yep and yeah) and “no” (nope) may also be used.

Users can also provide DTMF input: 1 is yes, and 2 is no.

The return value sent is a boolean “true” for a positive response or “false” for a negative response. If the field name is subsequently used in a value attribute within a prompt, the TTS engine will speak yes or no.

currency Users can say currency values as a combination of a pounds component, such as “twenty seven pounds” and a pence component, such as “fifty pence.” Users can also say one of these components without the other. If both components are present, they can be either not separated (as in “twenty pounds seventy”), or separated by the word “and” (as in “thirty pounds and forty pence”).

A pounds component may be in any of the formats: “no pounds,” “zero pounds,” “nought pounds,” “one pound,” “m pounds" (where 2 <= m <= 999,999,999) and “m” (where 1 <= m <= 999,999,999).

A pence component may be in any of the formats: “no pence,” “nought pence,” “zero pence,” “a penny,” “one penny,” “n pence” (where 1 <= n <= 99).

If both components are present, the pence component can also have the format “n” (where 0 <= n <= 99).

Note that if users just say an integer value “m” (where 1 <= m <= 999,999,999), this will be interpreted as a number of pounds. Note also that users can also speak two numerical values, where the first is between 0 and 999,999,999 and the second is between 0 and 99. This will be interpreted as a number of pounds followed by a number of pence.

Also, “euro,” “euros,” “cent,” and “cents” may be used as currency types in place of “pound,” “pounds,” “penny,” and “pence” in the above description. Similarly, “dollar,” “dollars,” “cent,” and “cents” may be used.

Note that “pound” can be used instead of “pounds” (as in “five pound ten”) and that both “euro” and “euros” can be used as the plural of “euro.”

Users can also provide DTMF input using the numbers 0 through 9 and optionally the * key (to indicate a decimal point), and must terminate DTMF entry using the # key.

The return value sent is a string in the format UUUddddddddd.cc where UUU is a currency indicator (GBP, EUR, USD). If the field name is subsequently used in a value attribute within a prompt, the TTS engine will speak the currency value. For example, the TTS engine speaks “GBP9.30” as “nine point three zero pounds.”

date Users can say a date using days, months and years, as well as the words yesterday, today, and tomorrow. The year must be between 1900 and 2099.

Users can speak years from 1901 to 1999 as “nineteen <2-digit number>” (such as “nineteen oh seven”).

Users can speak years from 2001 to 2099 as “two thousand and <1-digit number>” (such as “two thousand and four”), “two thousand and <2-digit number>” (such as “two thousand and eighty five”), or as “twenty <2-digit number>” (such as “twenty forty six”). (Here, 2-digit numbers can have “oh” as the first digit).

The following common constructs for dates are supported: “March the third two thousand and one,” “March third two thousand and one,” “the third of March two thousand and one,” and “third of March two thousand and one.”

Users can also specify a 2-digit year (such as “fifty five”). A 2-digit year will be interpreted as being between 1911 and 2010.

Users can also say the day and month without specifying a year. This will be interpreted as a date in the current year. Any of these constructs can be preceded by a day of the week, such as “Thursday the Third of March two thousand and one.” However, the day will be ignored. Thus the specified date will be accepted, whether or not it falls on the specified day.

Users can also provide DTMF input in the form yyyymmdd.

Note: The date grammar does not perform leap year calculations. February 29th is accepted as a valid date regardless of the year. If desired, your application or servlet can perform the required calculations.

The return value sent is a string in the format yyyymmdd, with the VoiceXML browser returning a ? in any positions omitted in spoken input. If the value is subsequently spoken in <say-as> with the interpret-as value vxml:date, then it is spoken as a date appropriate to this language. For example, the TTS engine speaks “20030511” as “the eleventh of May two thousand and three.”

digits Users can say non-negative integer values as strings of individual digits (0 through 9). For example, a user could say “one two three four five six.”

Users can say "0" by saying “nought,” “zero,” or “oh.”

Users can also say “one,” “two,” “three,” “four,” “five,” “six,” “seven,” “eight,” and “nine.”

Users can also provide DTMF input using the numbers 0 through 9, and must terminate DTMF entry using the # key.

The return value sent is a string of one or more digits. If the result is subsequently used in <say-as> with the interpret-as value vxml:digits, it will be spoken as a sequence of digits appropriate to the current language. For example, the TTS engine speaks “123456” as “one two three four five six.”

number Users can say natural numbers (that is, positive and negative integers, 0, and decimals) from -999,999,999.9999 to 999,999,999.9999. Users can say the words point and dot to indicate a decimal point, minus to indicate a negative number, and plus to indicate a positive number, which is the default.

Users can say “0” by saying “nought,” “zero,” or “oh.”

Users can also provide DTMF input using the numbers 0 through 9 and optionally the * key (to indicate a comma), and must terminate DTMF entry using the # key. Only positive numbers can be entered using DTMF.

The return value sent is a string of one or more digits, 0 through 9, with a decimal point and a + or - sign as applicable. If the field is subsequently spoken in <say-as> with the interpret-as value vxml:type, where type is the type number you want to specify, then it is spoken as that type number appropriate to this language. For example, the TTS engine speaks “123456” as “one hundred and twenty three thousand four hundred and fifty six.”

Use <say-as interpret-as="vxml:digit"> to have the number said as a string of digits.

phone Users can say a telephone number, including the optional word extension.

In addition to digits (1 to 9), users can use double digits (such as “49”) and the words “double,” “treble,” and “triple” (before a digit). Users can also use the words “hundred” and “thousand.” “hundred” will be interpreted as “00” and “thousand” will be interpreted as “000.”

Users can also provide DTMF input using the numbers 0 through 9 and optionally the * key (to represent the word “extension”), and must terminate DTMF entry using the # key.

The return value sent is a string of digits which includes an x if an extension was specified. If the field is subsequently spoken in <say-as> with the interpret-as value vxml:phone, then it is spoken as a phone number appropriate to this language.

Note: For tips on minimizing recognition errors that are due to user pauses during input, see Using the built-in phone grammar.
time Users can say a time of day using hours and minutes in either 12- or 24-hour format, as well as the word now.

Times can be stated in any of the following formats:

one [minute] past n [o'clock] [in the morning | in the afternoon |
in the evening | at night]
one [minute] to n [o'clock] [am | pm | in the morning | in the afternoon |
in the evening | at night]
m [minutes] past n [o'clock] [am | pm | in the morning | in the afternoon |
in the evening | at night]
m [minutes] to n [o'clock] [am | pm | in the morning | in the afternoon |
in the evening | at night]
[a] quarter past n  [o'clock] [am | pm | in the morning | in the afternoon |
in the evening | at night]
half past n  [o'clock] [am | pm | in the morning | in the afternoon |
in the evening | at night]
[a] quarter to n  [o'clock] [am | pm | in the morning | in the afternoon |
in the evening | at night]
[twelve] midnight
[twelve] noon
one [minute] past noon | midnight
one [minute] to noon | midnight
m [minutes] past noon | midnight
m [minutes] to noon | midnight
[a] quarter past noon | midnight
[a] quarter to noon | midnight
zero | oh p | r [hundred] hours
zero | oh p | r q hours
now
where 1 <= m <= 30, 1 <= n <= 12, 1 <=p <=9, 10 <= r <= 23 and 1<= q <= 59.

Note that when m or m is “0” or is a 2-digit number beginning with “0” (such as “11:07 am”), the “0” should be pronounced “oh” or “zero.”

Also, users can precede any of these times with “about,” “approximately,” “around,” “at,” “exactly,” “nearly,” “just after,” or “just before.” This will be ignored, and the exact time will be accepted.

Users can also provide DTMF input using the numbers 0 through 9.

The return value sent is a string in the format hhmmx, where x is a for AM, p for PM, h for 24 hour format or ? if unspecified or ambiguous. For DTMF input, the return value will always be h or ?, since there is no mechanism for specifying AM or PM. If the field is subsequently spoken in <say-as> with the interpret-as value vxml:time, then it is spoken as a time appropriate to this language.