Conversational Agents: Theory and Applications