2003-02-08 FingertipTV user paths sentence patterns a. now b. now [channel] c. later d. later [channel] e. earlier f. earlier [channel] g. next h. next [channel] i. previous j. previous [channel] k. [time] l. [time] [channel] m. [channel] n. [programme id from list] - all apart from n are possible start points - terms in [] mean patterns, without mean keywords some bits of internal state: - channel cursor, C - time cursor, T - programme cursor, P so for example C_T_P_ means show all channels for now, programmes on right now C_T_P1 means show all channels for now, programmes on next C_T2200P-1 means all channels, time is 2200, and programme on previously what to display: * first step path: a list of available channels with the current programme name. each has an id that can be typed to find out more about the programme path: b details (medium details?) about the current programme on this channel. possibly the next programme's title should also be shown. each programme has an id for more details. path: c ditto the path for a, but at time now plus 30 minutes. possibly now to the next 30 minute increment, actually path: d ditto b, but see c for what time to choose path: e ditto c, but 30 minutes earlier path: f ditto b, but 30 minutes earlier path: g ditto the path for a, but with the exact next programme on each channel (next from the current 'now' programme) path: h ditto b, but with the exact next programme (next from the 'now' programme) on this channel. possibly show the following programme too path: i as g, but one programme before path: j as h, but one programme before path: k as a, but at the time specified path: l as b, but at the time and for the channel specified path m: as b * second step path: an - details for the programme specified by n or ax - as x path: ba - as a, forget [channel] bb - as b, with new [channel]. (if same show more details?) bc, bd - as d, remember [channel] or use new one be, bf - as f, remember [channel] or use new one bg, bh - as h, remember [channel] or use new one bi, bj - as j, remember [channel] or use new one bk - as k, forget [channel] bl - as l, remember [channel] or use new one bm - as m, with new [channel]. (if same show more details?) bn - show programme details path: ca - as a ...this could continue for a while, but it demonstrates that it's not a simple interaction. current state interacts with previous state in an interesting way. can it go further than that? More notes: The problem is that a good conversational interface has to make use of every single piece of information the user has given it to say something useful. Ideally, you'd map out the entire space, but there are 14^3 possible endpoints after the user's said only 3 things. So this way isn't going to work, and I can't see an easy way to prune back the conversation tree. (I want to leave the way open to properly model a conversation, not just shoe-horn it into stateless query/responses.)