“Deep Learning For Chatbots, Part 1 – Introduction” provides a good overview on the techniques needed to develop your own chatbot. Clearly, a closed domain problem is easier.
Microsoft’s Bot Framework also provide some good resources. Particularly nice, is that fact that Bot Builder is Node.js. Microsoft has gone for one approach to understanding natural language – LUIS.
Botkit also looks interesting, but doesn’t seem to have that complex a NLP ability.
ChatterBot has a training mode. I’ve not used it, but it would be interest for example, to play in traders Bloomberg conversations or similar, and see how the bot faired 🙂