Enable single-sentence query mode
Currently all queries are treated as multi-sentence and hence it expects multiple queries to be passed in. Sometimes to avoid the complexity of writing skills that can handle multi-sentence queries, it makes sense to turn this feature off. I expect this to be a flag in configuration object for the Bot, something like:
var options = {
query: {mode: 'single'}
};
or something more flat and simpler:
var options = {
singleQueryMode: true
};
Could we replace how queries are processed altogether? Instead of sentences array being composed of strings, it could contain actual NLPQuery objects. These objects could be processed using a QueryProcessor.
There could be two built in QueryProcessor classes; SingleSentenceQueryProcessor and MultiSentenceQueryProcessor. The latter becomes the default.
Each QueryProcessor class should have a process method that is asynchronous and calls back using (err, processedQueries). The processedQueries parameter contains list of NLPQuery objects.
The NLPQuery object could have a getSentence (and getValue) methods that return the raw sentence. This way the query processors can provide extra attributes that can then be used by the skills when they get request.sentences in metadata.
After all this, options could look like:
const options = {
query: {
processor: new MyAwesomeQueryProcessor()
}
};