Have a look at Luis.ai (from Microsoft). It will help you build a Natural Langauge model that identifies intents. You can map intents to actions. It allows you to include pre-configured NLP models so that your bot can decipher text and return entities (names, time, geography, etc) and Luis supports many languages. You can of course add your own entities.
And then you train it with utterances. And when users talk to your bot, those utterances are stored online and Luis.ai which will suggest that you add some to further refine your model via its suggest feature (this allows incremental improvements without coding). Now for the coding stuff...
Visit Luis.ai and when you build your model (free) you can test it via the testing console here: https://dev.projectoxford.ai/docs/services and then you could use their Bot Framework; however I am building my own in JQuery/Bootstrap (have a look at this to see what I am building here http://onlinebotbuilder.com) and handling the json from the server via a post to the Cognitive Services API (which you would do in Python). Currently they allow 10k utterances per month; which for testing is plenty. Tip: When creating your model start with 2 intents and train your model to identify those. Keep it simple, and then expand scope as you go. Hope this helps.