Task-oriented closed-domain chatbot

I’d like to build a task-oriented chatbot that would be able to support multi-turn conversations and will only work in certain domain.
There is a lot of information regarding generative open domain models and chatbots, however as far as I understand I need text and intent classification from user utterances taking into account previous context.
How would I go about this problem? Could someone point me in the direction of better suited models and most of all how to prepare data for that king of task? Maybe any datasets to try.
Thank you.

I am also intersted in that

I have played a bit with OpenChat and it looks very promising: