Standalone Apps

Standalone applications can be made for OVOS, these applications are not skills, instead they are launched by the user

The main use case for these applications is in desktops, when you want to add a voice interface to a regular application

OVOSAbstractApplication

ovos-workshop provides the OVOSAbstractApplication class, you can use all methods and decorators from regular Skills in applications built from this

from ovos_workshop.app import OVOSAbstractApplication


class MyApplication(OVOSAbstractApplication):
    def __init__(self, skill_id: str = "my_app",
                 bus: Optional[MessageBusClient] = None,
                 resources_dir: Optional[str] = None,
                 gui: Optional[GUIInterface] = None,
                 **kwargs):
        """
        Create an Application. An application is essentially a skill, but
        designed such that it may be run without an intent service.
        @param skill_id: Unique ID for this application
        @param bus: MessageBusClient to bind to application
        @param resources_dir: optional root resource directory (else defaults to
            application `root_dir`
        @param gui: GUIInterface to bind (if `None`, one is created)
        """
        super().__init__(skill_id, bus, resources_dir, gui=gui, **kwargs)


    def do_app_stuff(self):
        pass

    @intent_handler("app_action.intent")
    def do_intent_stuff_in_app(self, message):
        pass


if __name__ == "__main__":
    # launch your application
    from ovos_utils import wait_for_exit_signal

    app = MyApplication()

    # wait for user to exit
    wait_for_exit_signal()

NOTE: from OVOS perspective Voice Apps are just like skills and need to have a unique skill_id