###### Abstract
A more complete and specific definition is provided in [2; 3], which defines a chatbot as \"an intelligent conversational system that is able to process the human language and formulate a response which has to be relevant to the user input sentence\". Although the original idea of a chatbot comes from the Turing test, in which a computer program talks with humans trying to convince them that their interlocutor is not artificial [4], in current applications, chatbots are simply designed to provide information and satisfy humans' requests [5; 6], providing them with a more user-friendly interface in comparison, for instance, to a st  
Figure 1: The number of courses activated in the years 2018, 2019, and 2020. The vertical lines of green dashes represent the beginning and the end of the first Italian lockdown. The yellow dotted line indicates the introduction of new restrictions in Autumn 2020.  
website [7]. In our context, the chatbot has to answer the students' most frequently asked questions, so as to significantly reduce the workload of tutors, who are the ones that usually assist the learners. The chatbot implementation improves the flexibility and scalability of the assistance system implemented, allowing dealings with peaks in requests with few tutors. As reported by [8], from an architectural point of view chatbots are composed by three main modules:  
* The **User Interface**, which allows the user to dialogue with the service, by talking or typing their questions. * The **Application Core**, which contains the logic that allows the dialogue with the user, analyzing the text or the speech, defining the conversation flow and the exchange of information. In this module, the chatbot must keep track of the context and the previous interaction with the user: for example, in the question \"How can I activate it?\" the chatbot has to reference the pronoun \(it\) to a previous entity the user has mentioned. This task is often referred as Dialogue State Tracking [9]. * The interface with the **External Services**, which allows the application core to connect with databases, human operators and other services in order to satisfy the users' requests. Focusing on the structure and implementation of the Application Core, the work in [6] presents a division of chatbots into several categories. The _template-based_ chatbots select responses, computing the similarity between the user request and a predefined template using pattern matching techniques. The _corpus-based_ chatbots integrate knowledge engineering techniques to store information which can be used to satisfy the users' requests [10] or exploit word embedding techniques [11] for better computing the similarity between questions and answers [12]. Sequence-to-sequence (Seq2 Seq) models, in which a deep learning model (such as a Recurrent Neural Network) elaborates the request and then automatically generates the answer, are defined by [6] as _RNN-based_ chatbots. However, in our opinion, other Seq2 Seq models based on the Transformer architecture [13] (such as Meena by Google [14]) can also be included in this category for their ability to generate an answer without a set of predefined questions. A similar capability but with a different implementation defines the _RL-based_ chatbots, which use Reinforcement Learning for response generation. Given the urgency to implement this kind of system, the company decided to use one of the cloud-based services that allows the fast development of a virtual assistant. Most of these services can be defined (according to the schema presented in [6]) as _intent-based_ chatbots. The main activity that an intent-based chatbot has to perform is to recognize the _intentions_ of the user, which can be expressed in many different ways. However, other important information can be found in the user request, such as times, addresses and other type of _entities_. Using intentions and entities, a NLU engine can formulate a specific answer that can effectively help the user with their request.