The current generation of chatbots are weak form on AI, which offers an ability to understand the intent of the input message/question. In order for chatbot systems to understand the intent, it needs to be trained with the corresponding domain. You can ask the same question in multiple ways and the chatbot implementation can still infer the intent.
For dialogs, the current technology offers defining fixed conversation flows, so the interactions are boxed and finite.
Chatbots do well for managing productivity and certain aspects of customer service tasks. However, as the complexity of domain increases, current technology falls short, as even after sufficient training you would not get the required level of accuracy. You would need to rely on a combination of other machine language technologies and solutions like rules, inferences, custom domain metadata to get the solution delivered. These become a one-off solution, which becomes difficult to generalize. For some cases, even the one-off solution would be very complex, like building an advisor for recommending cancer treatments accurately and consistently.
While, there are research going on using deep neural nets, we are still quite far away from building a true conversational chatbot which understands the nitty-gritty of language and domain. Also, the answers provided needed to be explainable and unless you have a way to backtrack on why a particular answer was provided, such deep neural systems can’t be used for use cases which requires auditability and explainability.