Conversation Support

Violet is designed to easily build common Voice User Experience Patterns using Conversational Flows and require minimal coding.

Included Plugins

Complexity in voice scripts is hidden using plugins. Plugins support connecting to data stores like Postgres and, and we are working on enabling more to be built.


Examine one of our built-out samples to get ideas on how to build scripts. We are looking forward to hearing how you customize or create your own scripts.

Respond to Users

Declare what you would like to respond to from the user and what your response would be when the intent is triggered.

      <expecting>Whats next on my todo</expecting>
      <say>Next item on your list is [[todoSvc.getNextItem()]]</say>
  `, todoSvc);

Get Input from Users

Declare input variables and use them when expecting an input from users.

violet.addInputTypes({'todoItem': phrase});
    <expecting>Remind me to do [[todoItem]]</expecting>
    <resolve value="[[todoSvc.add(response, 'todoItem')]]">
      <say>Added [[todoItem]] to your list</say>
`, todoSvc);

User Decisions

Sophisticated conversations are supported 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 -->
        <!-- other choices -->
    <!-- other cases -->


We are listening on Gitter. Drop by if you have Questions or Comments.