Make your web conversable
Speech-inquirer.js lets you create conversational web apps. It wraps the Web Speech API and exposes a interface based on the famous command line library Inquirer.
This library requieres Speech Synthesis API and Speech Recognition API. Check canisue to see the actual browser support for both.
npm install speech-inquirer --save
var speechInquirer = require('speech-inquirer');
speechInquirer
.prompt([
/* Pass your questions in here */
])
.then(answers => {
// Use user feedback for... whatever!!
});
[Chrome Deprecation] speechSynthesis.speak() without user activation is deprecated and will be removed in M71, around December 2018. See https://www.chromestatus.com/features/5687444770914304 for more details.
Start conversation (inquiry session)
- questions (Array) containing Question Object
- returns a Promise
A question object is a hash
containing question related values:
- type: (String) Type of the prompt. Defaults:
input
- Possible values:input
,confirm
,list
- name: (String) The name to use when storing the answer in the answers hash. If the name contains periods, it will define a path in the answers hash.
- message: (String|Function) The question to print. If defined as a function, the first parameter will be the current inquirer session answers. Defaults to the value of
name
(followed by a colon). - default: (String|Number|Boolean|Array|Function) Default value(s) to use if nothing is entered, or a function that returns the default value(s). If defined as a function, the first parameter will be the current inquirer session answers.
- choices: (Array|Function) Choices array or a function returning a choices array. If defined as a function, the first parameter will be the current inquirer session answers.
Array values can be simple
strings
, orobjects
containing aname
(to display in list), avalue
(to save in the answers hash) and ashort
(to display after selection) properties. The choices array can also contain aSeparator
. - validate (TODO): (Function) Receive the user input and answers hash. Should return
true
if the value is valid, and an error message (String
) otherwise. Iffalse
is returned, a default error message is provided. - filter (TODO): (Function) Receive the user input and return the filtered value to be used inside the program. The value returned will be added to the Answers hash.
- transformer (TODO): (Function) Receive the user input, answers hash and option flags, and return a transformed value to display to the user. The transformation only impacts what is shown while editing. It does not modify the answers hash.
- when (TODO): (Function, Boolean) Receive the current user answers hash and should return
true
orfalse
depending on whether or not this question should be asked. The value can also be a simple boolean.
A key/value hash containing the client answers in each prompt.
- Key The
name
property of the question object - Value (Depends on the prompt)
confirm
: (Boolean)input
: User input (filtered iffilter
is defined) (String)list
: Selected choice value (or name if no value specified) (String)
var speechInquirer = require('speech-inquirer');
speechInquirer
.prompt([{
type: "list",
name: "color",
message: "Choose a color",
choice: [
"red",
"green"
]
}])
.then(answers => {
alert(answers.color);
});
Documentation Add documentation for every API change. Feel free to send typo fixes and better docs!
You can develop your own extensions for speech-inquirer.js. Just register a new question, a function that expects a question object and return and answer object.
speechInquirer.registerQuestion("input", handleInput)
MIT