Chatbots
Anatomy
The following diagram outlines the primary components within the chatbot pattern.
- Default
- With avatar
- Large
- Default
- Default
- Default
- Default
- Without action button
- Primary
- Alternate
- Card with text (Hero)
- Card with text (Large)
- Card with text (Mini)
- Card with image (Avatar)
- Card with image (Large)
- Card with image (Mini)
- Card with data (Table)
- Card with data (Visualization)
Requesting information
The following flow shows a typical exchange between a user and a bot. This model can be used as a baseline to start building useful conversational experiences.
Best practices
At a minimum, use these best practices to help ensure a successful conversational experience. For more in-depth conversational principles, see IBM Design for Conversational AI.
Introduction
Ensure your users know they are talking to a bot and that the bot has stated its purpose. Set the context for what questions users can ask about.
User intent
Typically, a user inputs an intent, which can be request for information or a task for the bot to complete. This can take the form of a text (shown here) as well as a structured response (see next section)
Structured responses
Prompt for additional details with a menu of structured responses. This narrows the scope to more specific information to answer the user’s question.
Reflection
The bot should reflect its understanding of the query in the response (when appropriate) to ensure understanding, or before performing a significant action. Note: This process of slotfilling may need to be repeated until the bot has all the information required to answer the user’s initial question.
Provide a response and request feedback
The bot should provide a thoughtful, informative response to the user’s intent, based on the information they have provided throughout the conversation. When appropriate, be sure to provide an opportunity for users to give feedback. Consider allowing the user to input a custom response. Provide an opportunity for users to give feedback where possible. Consider allowing the user to input a custom response.