Comandi Rapidi - RetiSpA/botler GitHub Wiki
I Comandi Rapidi sono un ottimo strumento per velocizzare la conversazione, qualora un utente esperto volesse cambiare rapidamente da uno scenario all'altro.
Sono mappati in LUIS come entità, e vengono controllati all'inizio di ogni turno, se presenti grazie alla metodo nella classe CommandRecognizer
public static async Task<bool> ExecutedCommandFromLuisResultAsync(LuisServiceResult luisServiceResult, BotlerAccessors accessors, ITurnContext turn)
{
var entities = luisServiceResult.LuisResult.Entities;
var listent = luisServiceResult.LuisResult.Entities;
IList<ICommand> listCommands = new List<ICommand>();
ICommand command = null;
string commandExecuted = string.Empty;
foreach(var ent in entities)
{
command = CommandFactory.FactoryMethod(turn, accessors, ent.Key);
if(command != null)
{
listCommands.Add(command);
}
}
// We want to handle 1 command at time
if (listCommands.Count != 1) return false;
else
{
await listCommands[0].ExecuteCommandAsync();
return true; // Command found and executed
}
}
}
NOTA:Vedere LUIS per vedere come sono creati i comandi dal lato di LUIS, e per una lista completa dei comandi attualmente attivi.