Enable single-sentence query mode
manthanhd opened this issue · comments
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()
}
};