At the heart of building such task-oriented bots lies the challenge of accurately capturing the user's intent (e.g., find cafes in Chicago), and then extracting its entities to service the request (e.g term= "cafes", location="Chicago").
its success relies heavily on obtaining both, large and high quality corpora of training samples showing mappings between sample utterances and intents.