talkify icon indicating copy to clipboard operation
talkify copied to clipboard

Enable single-sentence query mode

Open manthanhd opened this issue 9 years ago • 1 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
};

manthanhd avatar Nov 11 '16 12:11 manthanhd

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()
  }
};

manthanhd avatar Nov 13 '16 12:11 manthanhd