You can say that the bot framework can be classified into the following concepts.

Connector

The Bot Framework is basically a RESTful API that is used to communicate between the Bot and the channel. Here, the channel could be anything like Skype, Slack, Kik etc. Basically, the connector library is used to perform an interaction between the Bot and the user.

Activity

The means to facilitate the communication between a bot and a user is called activity. This is used by the connector. An Activity is an object which could be a message or any other type.

Dialog

A dialog in bot framework is used to model a conversation and conversation flow. You can have a dialog within a dialog to model a meaningful conversation. The main purpose of having a nested dialog model is because of the reusability. The Dialog in the Dialog Context is maintained in dialog stack, that is, a conversation.

FormFlow

Sometimes, the input from a user is more complex than just a message. In those cases, a form flow is used. For example, if you want to take multiple inputs from the user like customer review or some general information regarding a complex question, the FormFlow can automatically generate a dialog to maintain a guided conversation.

State

As obvious by its name, the state is associated with a user. The Bot Framework maintains the state of the user that is in communication with the bot at any given time. If the user leaves, you can always reload the state of the user and see where he/she left and continue the conversation from there.