Voice - Setup Voice control of a form element
See the two examples below to get insights into how to implement various APIs. Be aware that in the examples we use HTML5 standard APIs, but these could just as well be 3rd party like Google Cloud Speech API
Be aware that Voice only works with elements input[type="text/password/email/radio"]
.
Be aware that examples are using bleeding-edge browser features like Web Speech API.
You need to instantiate Conversational Form manually, here is a snippet:
var dispatcher = new cf.EventDispatcher();
var microphoneInput = null;// see examples or description below.
var conversationalForm = window.cf.ConversationalForm.startTheConversation({
// your form element
formEl: document.getElementById("form"),
// your context
context: document.getElementById("cf-context"),
// custom event dispatcher
eventDispatcher: dispatcher,
// add the custom input (microphone)
microphoneInput: microphoneInput,
submitCallback: function(){
// remove Conversational Form
console.log("voice: Form submitted...", conversationalForm.getFormData(true));
alert("You made it! Check console for data")
}
});
You will notice a new attribute in the init method microphoneInput
, this is your interface into Voice control.
microphoneInput
can have the following methods and attributes, some optional some mandatory:
init
Optional method
init
is called one time, when the custom input is instantiated together with instantiation of the Conversational Form instance. init
can be used to hook into Conversational Form Events
init: () => {
...
}
awaitingCallback
Optional boolean
awaitingCallback
can be set to true
to include an API in-between user input and
set awaiting callback, as we will await the speak in this example
awaitingCallback: true
input
Mandatory method
Used to tap into an API when user talks into Microphone (using getUserMedia).
It takes 3 attributes, resolve and reject, both callback methods that are tied to a Promise. 3rd parameter is a mediaStream which can be used to send to external API (server..).
input: (resolve, reject, mediaStream) => {
}
cancelInput
Optional method
can be used to cancel the input call.
cancelInput: function() {
}
See Feature-support: Browser support
Example - Voice input
See the Pen Conversational Form - Voice input example by SPACE10 (@space10) on CodePen.
Example - Voice input and output
See the Pen Conversational Form - Voice input and output example by SPACE10 (@space10) on CodePen.