Code structure overview¶
This page gives overview of the project to help navigating the dialog system code.
The project structure¶
dialog¶
Contains everything specific to the Dialog System functionalities.
resources/¶
Resources needed by the dialog system only.
src¶
integration-test: Contains integration tests for combined testing of several Dialog System units.
test: Contains unit tests for testing isolated Dialog System units.
main¶
context: Contains the Context and all classes only relevant in combination with Context.
dialog: Everything necessary to conduct the concept of a dialog: Personalities, Statemachine, Conversations, etc.
emotions: Contains information about possible emotions.
io: Contains Input- and OutputDevices.
linguistics: Contains NLU Wrappers + help classes for them and some very simple linguistic analyis.
logic: Contains deduction and inference.
memory: Contains memory wrappers and processing classes.
ros: Contains ROS wrappers and interfaces.
talk: Contains sentence-building logic.
util: Contains Dialog System wide utilities.
docs¶
Readthedocs documentation in reStructuredText format. The product of it’s compilation is this documentation.
submodules¶
The nlu and memory submodules are imported at a specific commit from other repositories. Please do not change anything but the checked out commit within the Dialog System repository. In order to change nlu/memory functionality, refer to their specific repositories.
Where to extend functionalities¶
Pick the corresponding interface, depending on which part of the system you want to extend. If you want to add new devices go for the input or output device interfaces. If you want to extend the linguistic analysis implement the Analyzer interface or extend the SentenceAnalyzer class. If you are happy with input, linguistics and output and just want to create more dialog, implement the Personality interface. For more advanced functionality like world interfaces you’d need to implement different functionalities in differnt places. Refer the project structure above and the Development tutorials for this.
Create a new … | By implementing … |
---|---|
Input Device | de.roboy.io.InputDevice |
NLP Analyzer | de.roboy.linguistics.sentenceanalysis.Analyzer |
State Machine | de.roboy.dialog.personality.Personality |
State | de.roboy.dialog.personality.states.State |
Action type | de.roboy.dialog.action.Action |
Output device | de.roboy.io.OutputDevice |
The interfaces are deliberately simple, containing only 0 - 2 methods that have to be implemented. Once you implemented your new classes include them in the personality used in de.roboy.dialog.Conversation
, or create your own personality. Some static things, especially more complicated I/O devices or input analyzers need to be added to roboy.dialog.ConversationManager
or other places. Please have a look at Development tutorials.