Creating your own smart service (aka: skill or voice action) - SEPIA-Framework/sepia-docs GitHub Wiki
Introduction
There are many ways to customize your SEPIA assistant but the most interesting one probably is building your own voice triggers and smart-services (aka "skills" or "voice actions"). To do this you have a few options that will be explained in more detail below.
Requirements
- The Teach-UI for custom voice triggers can be used without any additional requirements
- To upload a custom smart service make sure the Assist-Server has SDK support enabled: Set
enable_sdk=true
in assist.*.properties or via Control-HUB - The server admin needs to add the role
developer
to any user that wants to upload a service.
Good to know
A custom smart service is only available to the user that uploaded it unless you've used the 'assistant' user (core-account) and set 'info.makePublic()' inside the service. If you want to share your service with other users consider submitting it to the SEPIA extensions repository.
Teach-UI inside the client
The Teach-UI available inside the official SEPIA app is the easiest possibility to create custom voice commands. Although this is technically not a new "service" it is still a very powerful feature especially when combined with SEPIA Mesh-Node plugins. If you want to learn a bit more check out this blog article: Control your Windows system remotely via voice. Here is a simple example that connects an existing SEPIA service with a custom trigger sentence:
Code-UI inside the Control-HUB
The Code-UI is part of the SEPIA Control-HUB (aka admin tools) and an easy way to open, edit and upload a custom smart service that was previously created (by you or any other user). It is basically an online code editor that can import services from the SEPIA extensions repository and upload them to your SEPIA server.
If you feel comfortable writing code (its Java but not toooo hard to understand ^^) then this is an easy way to quickly make smaller adjustments to your service and upload the new version to the server. You could also use it as a simple way of sharing your service with other users by sending them your code and asking them to copy-paste it into the Code-UI for testing.
SEPIA Services SDK, Web-API integration and Python-Bridge
The SEPIA Services SDK is a set of tools to create complex custom smart services, test them and upload them to the server.
If you are familiar with Java then you'll feel at home right away, just follow the SDK quick-start guide.
Since v2.3.1 SEPIA natively supports the integration of external web-APIs to handle parts of the NLU (natural-language-understanding) and offers a tool to create such a web-API called the Python-Bridge (a lightweight Python server that uses the FastAPI framework).
The Python-Bridge is also a very good starting point if you want to program most of your service logic in Python. To do this you can use the PythonBridgeDemo-service as a template and modify the getResult
method to call your Python server for a result.
Can I create my own smart service without programming?
Currently the only way to create complex new services is to use Java. This can be a bit overwhelming for users that usually don't program. We will try to simplify this process in the future by offering more templates and introducing methods to build the code via a graphical interface (like Blockly for example). In the meantime I recommend to take a closer look at the available examples given in the SDK or extensions repository. Often they are much easier to understand than the first look suggests :-)
Have fun and check back soon for updates :+1: !