I've been writing AIM bots recently. It's an interesting interface exercise.
A conversational interface is so different to web, to gopher, or mobile phones. Because of the context you're inclined to assume more intelligence in the bot than there actually is. And a hierarchal interface just doesn't work. More than ever here the user path has to be short -- I suspect I get frustrated more quickly because I'm used to working around deficiencies in websites, but not in my friends. For instance, the IM bot SmarterChild does a lot of the things I'm interested in, but I always forget about it. Why? Probably because it goes to the portal approach. It's because it does so many things the interface is harder -- more choices, even if I go there just to check out the movies.
So I've come up with principles and ideas.
Principle | Use any method whatsoever to shorten the user path. This means making the decision of choosing to IM the bot a navigation decision. Instead of one bot, have several that perform different tasks.
Principal | Behave in a conversational manner. Because the user will expect intelligence, don't put the bot in a situation where difficult-to-parse answers are possible.
Concept | How about looking ahead a step in the navigation, and making sure as many options as possible are identified by different names? That way the user can skip ahead a step and as long as it's unambiguous the bot can jump ahead too.
I think the coolest thing these bots to is refer do each other. "No I'm sorry I can't tell you that, but I have a friend who can help". And then, from another bot: "Hi there. You can type X to find out about Y". And then in the future the user can go straight to the second bot, if that's what they want.
Conversational interfaces are hard. But then I realised that all the bot should be doing is following Grice's maxims for conversation. Everything else should follow from there.