:- ensure_loaded('$REGULUS/PrologLib/compatibility'). %====================================================================== :- use_module('$REGULUS/Examples/Toy1Specialised/Prolog/input_manager'). :- use_module('$REGULUS/Examples/Toy1Specialised/Prolog/dialogue_manager'). :- use_module('$REGULUS/Examples/Toy1Specialised/Prolog/output_manager'). :- ensure_loaded('$REGULUS/Examples/Generic/Prolog/top_loop.pl'). :- use_module('$REGULUS/PrologLib/utilities'). :- use_module('$REGULUS/RegulusSpeechServer/Prolog/regulus_sockettalk'). %====================================================================== toy1_app(Port) :- RecognitionPackage = '$REGULUS/Examples/Toy1Specialised/Generated/toy1_specialised_recogniser', initial_dialogue_state(InitialState), top_loop(Port, RecognitionPackage, 'audio.OutputVolume=200', "Ready to start", InitialState, process_recogniser_output). %====================================================================== process_recogniser_output(RecogniserOutput, InState, OutState) :- format('~N~n Old state: ~w', [InState]), RecogniserOutput = recognition_succeeded(Confidence, Words, [value=LF]), format('~N~n Words from recogniser: "~w" (confidence: ~d)~n', [Words, Confidence]), format('~N LF: ~w~n', [LF]), lf_to_dialogue_move(LF, InState, DialogueMove), format('~N Dialogue move: ', []), portray_clause(DialogueMove), update_dialogue_state(DialogueMove, InState, AbstractAction, OutState), format('~N Abstract action: ~w', [AbstractAction]), abstract_action_to_action(AbstractAction, Action), convert_strings_to_quoted_atoms(Action, PrintFormForAction), format('~N Concrete action: ~w', [PrintFormForAction]), perform_action(Action), format('~N~n New state: ~w~n', [OutState]), !. process_recogniser_output(RecogniserOutput, InState, OutState) :- format('~N~nUnable to process recogniser output: ~w~n', [RecogniserOutput]), Action = say("Sorry, something went wrong"), perform_action(Action), InState = OutState, !. %====================================================================== perform_action(Action) :- ( ( Action = say_string(String), is_prolog_string(String) ) -> String1 = String ; String1 = "Sorry, something went wrong" ), regulus_sockettalk_say_tts(String1), !. perform_action(Action) :- format('~N~nUnable to perform action: ~w~n', [Action]), !.