Create Conversation Flows using an HTML-like language and Javascript (Node.js).
Code with built-in support for UX patterns, local browser-based testing, and plugins to
simplify logic.
Design and iterate on Conversational Flows - using primitives inspired by Voice User Experience Patterns. Voilet automates the conversational state management.
Application Logic is injected into conversation flow - so your code remains well organized and integrated. You can hide additional complexity by developing widgets and/or plugins.
Examine one of our built-out samples to get ideas on how to build scripts. We are looking forward to hearing about other samples you would like to see and about scripts you have built.
Define conversations - using nested user decisions and voice-based ‘forms’ - with an HTML-inspired Conversation Flow Language and integrate with applicaion logic.
var violet = require('violet').script();
var todoSvc = {...};
violet.addFlow(`<app><!-- conversation --></app>`, todoSvc);
Declare when you want your conversation triggered by user choices (intents) and what you would like to respond with.
<app>
<choice>
<expecting>Whats next on my todo</expecting>
<say>Next item on your list is [[todoSvc.getNextItem()]]</say>
</choice>
</app>
Define input variables and use them in your conversations when expecting an input from users.
violet.addInputTypes({'todoItem': phrase});
<app><choice>
<expecting>Remind me to [[todoItem]]</expecting>
<resolve value="[[todoSvc.add(response, 'todoItem')]]">
<say>Added [[todoItem]] to your list</say>
</resolve>
</choice></app>
Build sophisticated conversations by grouping user choices into (potentially nested) decisions.
<app><choice><expecting>Remind me to do [[todoItem]]</expecting>
<check value="[[todoSvc.getCategoryCount() > 1]]">
<case value="true">
<decision><prompt>Which category</prompt>
<choice><expecting>Category [[categoryNo]]</expecting>
<!-- choice implementation -->
</choice>
<!-- other choices -->
</decision>
</case>
<!-- other cases -->
</check>
</choice></app>