When you start your work on a conversational UI, even a trivial one, you’ll need to answer these fundamental design questions:
Domain knowledge: What does a user expect this bot to understand?
Personality: What tone or vocabulary does the bot employ?
Domain knowledge
True artificial intelligence does not exist, so while some AIs can imitate humans quite convincingly or answer some kinds of factual questions, all bots are restricted to a subset of topics or conversational gambits. IBM's Jeopardy-playing Watson “remembered” facts and able to construct realistic natural language responses, but it couldn’t schedule your meetings or deliver your groceries. More naive commercial bots like SlackBot can successfully help users set up their Slack accounts, but aren’t designed to engage you in open-ended dialogue.
Personality
Bots have historically been represented as something less than fully human to excuse their rote responses and frustrating lack of comprehension. This can be an opportunity for creativity and playful invention—the first bot I helped design was modeled after a famous parrot—but it can also be a minefield of unexamined assumptions. It’s disappointing that so many bots are personified as female or teenagers as if those groups were naturally subservient or not fully human. It’s probably better for everyone if your bot is personified simply as itself—a computer program—or something truly non-human.
There's Robocode, in which you use Java to program your Robot's AI, and then unleash him against other Robots and see how he does. NRobot is the .NET version of a very similar idea.