| |
VoiceXML
Experience Report: Flight Tracker Voice Application
This
article describes the VoiceXML application for a commercial
Airlines flight tracker that delivers voice query searches
of current flight status for 2000 in-air flights per
day, using the TellMe Networks deployment environment,
perl, javascript and server-side search of dynamic data
inputs. General principles of usability and programming
are emphasized.
Performing
search queries using voice recognition presents a host
of design questions, ranging from optimal database design,
interface and voice grammar choices, and data sources
for dynamic inputs. Because of the frequently changing
status reports on in-flight information, the challenges
of maintenance and frequency of updates make for a simple
state diagram to query airline status round-the-clock.
Scale
A
typical large commercial airline may include upwards
of 2500 flights daily. The voice user needs to access
that data prior to departing to the airport or en route
using wireless toll-free inquiries. The flight connections
may include single (non-stop) point-to-point routing,
or more complex connections that span multiple cities,
times, and departure gates. These intermediate steps
bear greatly on the database design, since specifying
an arrival gate will likely not be of interest if a
holdover gate, but critical information if the flyer
is being met at the final stop.
User
Interface
To
simplify the large number of choices, the first testing
interface was chosen as allowing queries for flight
number. Well-established voice recognition grammars
thus will include the natural numbers between zero and
ten thousand, but with the numbers above the ceiling
of available in-flight data unused above 2600. A typical
user experience is shown in Figure 1, as the state diagram
for sequencing what finally will be a single application
variable passed to a cgi-perl script that handles the
database query and returns the answers.

Figure
1 - State Diagram for Flight Tracker
Database
Design
Between
the two standard choices for database design--either
relational or hierarchical--the speed of data refreshes
and the high 'throw-away' turnover has some bearing
on the choice. If under 3000 to 4000 text entries, hierarchical
or flat ASCII text databases can be quickly swapped
on any server and overwritten without any compilation
or programming other than the file transfer protocols.
As a low-maintenance choice, a hierarchical structure
was selected initially, and the data listings include
2600 flights with 12 fields.
Metadata
Structure
The
number of fields were chosen to include departure, in-flight
status and arrival information. Since replies stemming
from a voice command on flight number might include
mainly departure times and places for the traveler,
but an arrival time and place for those meeting the
traveler, the entire 12 fields will be read upon a valid
match. The metadata choices are shown in Figure 2.
Departure Time (date, time)
Flight Number (0..2600)
Departure Flag (non-stop, continuation or changeover flight =0,1)
Departure City (city, 3 letter airport code)
Departure Status (delayed, on time, cancelled)
Arrival City
Arrival Time
Arrival Status (delayed, on schedule, cancelled)
Departure Gate
Arrival Gate
Aircraft Type (e.g. 707)
Final status (delayed, on schedule, cancelled, at departure gate, at arrival gate, in flight, arrived)
|
Figure
2- Metadata structure
From
the traveler's perspective, the status of the flight
as either delayed, on time or cancelled is their top
priority, followed by the departure time and gate. If
relaying this information to another party, such as
an office or transportation connection, the arrival
status, time and gate provides an important convenience
for arranging any final success.
Aircraft
type (e.g., 747 or DC-10) can prove relevant for some
seating arrangements. The departure flag itself, as
either a non-stop (0), continuation or changeover flight
(1), determines whether the search attempts to return
the full routing information for that flight, from departure
to final arrival. In the cases where a continuation
option is enabled, a two-part departure and arrival
schedule should be read back, and this branch will get
read in the final status summary for what the expected
'on schedule' responses might offer.
Data
Storage and Refresh Rates
Because
of the rapid data turnover needed to identify in-flight
status, the data was stored from a batch robotic reading
of the various airline databases. Once every several
hours, the database is entirely replaced by sequentially
reading through the flight numbers iteratively, then
storing that file until the next refresh.
To
involve less unused data in any given refresh cycle,
an alternative option is to extract data as it is requested,
mainly through submission of the application variables
to various meta-databases scattered around the network,
then parsing those returned pages in an appropriate
meta-language to play back audio. This option was rejected
only because the database of delayed and cancelled flight
was classified as the key specification for information
returns, so global queries could play back the current
status of the whole airline schedule. Selective extraction
would likely not deliver that summary in-flight report
without iteratively aggregating all the current take-offs
and landing reports in total at one snapshot.
Continued...

back
to the top

Copyright
© 2001 VoiceXML Forum. All rights reserved.
The VoiceXML Forum is a program of the
IEEE
Industry Standards and Technology Organization
(IEEE-ISTO).
|