Rivr™ is a lightweight open-source dialogue engine that enables developers to easily create enterprise-grade, Java-based, VoiceXML applications.
Rivr is a Java library for VoiceXML application development. Simply write the dialogue as a normal Java program and Rivr takes care of generating VoiceXML documents dynamically during execution; this ensures user responses are available to the dialogue in a synchronous manner.
Why work with Rivr?
Your Code is your Application.
Centralized and unified development code base. Java/JVM-centric approach where code is king. No Templates. No Session Management.
Leverage your Workflow.
Integrates with your current workflow and tool set: Code coverage, unit tests, continuous build server, WAR deployment, and so on.
Embrace OO Principles.
Abstraction, reuse, composition, modularization, aggregation. Built-in with your choice of Java, Scala, Groovy, JPython, JRuby or Clojure.
Several active production deployments, including major financial institutions and utilities. Integrates the lessons from over 10 years of hands-on experiences with large corporate organizations.
Rivr is flexible
Rivr is designed not to get in your way. It can be integrated with any enterprise framework or other existing framework (like Spring). Many points of control have been defined in Rivr, so you are never stuck. You can provide your own implementations for many concepts and you can override many classes to fit your custom context.
Rivr even works with VoiceXML proprietary extensions. You can customize generated VoiceXML as required by your VoiceXML platform and exploit vendor-specific features.
Write callflows as programs
The callflow logic is expressed directly in the code. For example, if the call flow required a question to be asked no more than 3 times, this can be implemented with a simple for loop. No need to fiddle with the VoiceXML Form Interpretation Algorithm (FIA).
Application logic is centralized in the Java code
With Rivr, no dialogue logic resides on the VoiceXML side. Dialogue rules can be expressed and controlled from the Java side. The dialogue state is maintained on the server.
Allows for unit and coverage testing
Since Rivr dialogues are regular Java methods, they can be unit tested as any other regular Java code. It is simple to check with JUnit that a dialogue asks the expected questions and reacts correctly for any simulated user input. By combining the unit tests with a code coverage tool, we can rapidly setup an automated call flow coverage verification solution.
Early application development (prior to VoiceXML)
Development can start as soon as the dialogue specification is available. Rivr offers a VoiceXML simulation tool, the dialogue runner, which allows developers to interactively test the dialogues they are developing. Unit testing can also starts as soon as we have a working dialogue (which can be within minutes).
Dialogue abstraction, modularity and reuse
The fact that a dialogue is pure Java code, it’s easy to make them abstract. For example, one can define a dialogue as a Java method taking input parameters which will condition the dialogue execution. Those dialogues can be placed into reusable Java packages and shared between applications.
It’s even possible to define meta-dialogues, i.e. high-order dialogue composing dialogues together. This level of abstraction is very hard to obtain when using VoiceXML directly but is easily achieved with Rivr.
No additional tools required
Rivr only requires standard Java tools, no special software or other design-time environment. Java already offers tons of tools that can be applied to the Rivr dialogues: debuggers, profilers, coverage tools, javadoc, etc.
Rivr is designed not to get in your way. It can be integrated with any enterprise framework or other existing framework (like Spring). Many points of control has been defined in Rivr, you are never stuck. You can provide your own implementations for many concepts and you can override many classes to fit your custom context.
Rivr even works with VoiceXML proprietary extensions. You can customize generated VoiceXML as required by your VoiceXML platform and exploit vendor-specific features. These are a few ways to do that.
Easily create VoiceXML applications with the Java VM tools you’ve learned to know and love.
The features that make Rivr so popular
Support for all VoiceXML primitives including DTMF, speech rec, TTS, recordings, subdialogs, objects, scripts, transfers. Works on standards-compliant platforms such as Genesys, Cisco and Avaya.
Simplifies both data and control flow management with your choice of JVM language from Java or Scala to Groovy, JRuby, JPython or Clojure.
Any PaaS, your own Stack
Own the deployment process within your environment of choice from dev, staging to prod over Google App Engine, Redhat OpenShift, Amazon Beanstalk, Heroku, Cloudbees or your own private stack.
Free to use. Apache2 Licensed. Forks and contributions welcomed.
Any Servlet Container
Integrates with JBoss, Jetty, WebSphere, Tomcat, etc.
Bring your own testing and mocking framework including JUnit, TestNG, and Mockito.
Integrates with your back-end, the way you want, with the tool you want (JAX-WS, JNDI, JDBC, JAX-RS).
Use your own dependency injection framework, from Spring to Guice.
Full control over generated VoiceXML for custom platform support.
Interested in exploring more of our solutions…
Need more information?
Write to us and find out all that RIVR can do for you.