# Rhasspy visual conversation helper This application is supposed to work as a visual helper for Rhasspy conversations on setups that have a screen or even a touchscreen. See more information and detailed instructions on https://server47.de/rhasspy/ ## Setup instructions ### Download jar file Download the jar file of the program and put it in a folder, e.g. under _/home/pi/RhasspyVisualConversationTool_ ### Make sure java is installed _which java_ should return something. If it doesn't install a java runtime environment, e.g. with _apt install openjdk-11-jre_ ### Configuration file Create _RhasspyVisualConversationTool-settings.ini_ with the following content: ``` language=de-DE sslDebug=false keystoreFilename= keystorePassword=changeme logFolderPath=/var/log/rhasspyVisualConversationTool logLevel=5 mqttClientServerHostname=mqtt.yourServer.com mqttClientServerPort=1883 mqttClientUseSsl=false mqttClientUseAuthentication=false mqttClientUsername= mqttClientPassword= siteId= ``` If you have set _mqttClientUseSsl=true_ it's at least likely you have your own PKI. In that case create a java keystore and put your root certificate in it. Then save the keystore in the folder of the jar and config file and put its filename for _keystoreFilename_ . ### Create start script I suggest to use this path: _/home/pi/Desktop/startConversationTool.sh_ Put this content into the file (adapt the folder if you changed it above): ``` #!/bin/bash while(true) do cd /home/pi/RhasspyVisualConversationTool/ /usr/bin/java -jar /home/pi/RhasspyVisualConversationTool/RhasspyVisualConversationTool.jar sleep 5 done ``` Make it runnable: _chmod 775 /home/pi/Desktop/startConversationTool.sh_ ### Make the script autostart with the graphical user interface Create this file: _/home/pi/.config/autostart/conversationTool.desktop_ with the following content: ``` [Desktop Entry] Type=Application Exec=/home/pi/Desktop/startConversationTool.sh ``` ### Test run When double-clicking your start script the app should come up and connect successfully. Restart your Raspberry Pi to make sure the script comes up automatically. ### Power settings for normal operation In my own use-case the screen is usually off and turns on only when a command is spoken. In case you want that, too: * The turning on is done by this application by briefly simulating mouse action. * After the dialogue has finished I want the screen to turn off again soon. * The default power off setting is 10 min. * To decrease that the easiest way will be to install xscreensaver: * _sudo apt install xscreensaver_ * Then open the configuration from the "Preferences" menu in the start menu and set the blank value to what is to your liking. ### How exactly does the application respond to events? #### Hotword detected It will wakeup when a message with a topic of this kind is published: _hermes/hotword/+/detected_ However it will only wake up if the message is targeted to the siteId specified in this instance's configuration file. #### Intent recognized If an intent is successfully recognized the text recognized will be displayed, so this topic is being watched for: _hermes/intent/#_ #### When text is asked to be spoken ...then it's also printed: _hermes/tts/say_ #### Session ends Session is ended when the appropriate event is recognized: _hermes/dialogueManager/sessionEnded_ #### Bonus material Up until here those are events built into Rhasspy. But I've come up with these additional events/commands: ##### Simply display text Your application just wants some text to be displayed, publish it under topic _hermes/tts/displayText_ using the same syntax as for the speak command. ##### Display selectable options CONSTRUCTION SITE, NOT FINISHED, YET If you'd like to publish a list of selectable options for the user send it for topic _hermes/tts/displayOptions_ Syntax