This document describes how a developer can enable their XOWi App to interact with external web services. A simple example: you have 2 light switches in your house, one in the basement and one on the porch, and you want to interact with them by voice. That is, you want to be able to find out if they are On or Off and also you want to turn them On or Off by just speaking.

Here is how you would proceed with XOWi.

First, you download the App, install it and register your account.

Second, create your web accessible middleware in your cloud that can execute commands that return the status of the light switches as well as turn the lights on and off.

And third, go to the XOWi web portal at http://www.xowi.me/portal and login using the same credentials that you registered the application with. Within your account, you would create a Module of type Web Service. Within that module, you would specify: (1) what the user would need to speak to invoke that module (for instance, "Control lights."), (2) what the App will say in response to the invocation (for instance, "Room control. What would you like to do?", (3) what the App should listen for once it has spoken (for instance, "Porch lights," "Basement lights,"), and (4) the parameters of the web service to invoke depending on what the user said.

Upon invocation of the web service, your middleware (for instance the one that can give you the status of your lights or control your lights) would execute its actions and then return with a response. The response from your middleware is expected to be in JSON format, as described in this document below.

In a nutshell, with XOWi, you can engage the user in multi-turn, multi-step conversational interactions, where the interactions are described externally in your cloud. XOWi in essence is a voice browser that can handle playing audio prompts, listen for spoken responses, and interact with external web services for further actions and instructions.

The documentation will describe how to create a Web Service Module, what elements to specify within the module, and what format is expected from the web service. The document also describes how to trigger a Voice Alert through a simple RESTful URL call.