Aggiungere un Comando - RetiSpA/botler GitHub Wiki
Aggiungere un Comando
Per aggiungere un nuovo comando oltre alla creazione dell'entità relativa aggiunta in LUIS vanno seguiti questi passi:
- Creare una classe concreta che implementi l'interfaccia ICommand
Esempio:
public class AreaRiservataCommand : ICommand
{
private readonly ITurnContext _turn;
private readonly BotlerAccessors _accessors;
public AreaRiservataCommand(ITurnContext turn, BotlerAccessors accessors)
{
_turn = turn ?? throw new ArgumentNullException(nameof(turn));
_accessors = accessors ?? throw new ArgumentNullException(nameof(accessors));
}
public async Task ExecuteCommandAsync()
{
var alreadyAuth = await AuthenticationHelper.UserAlreadyAuthAsync(_turn, _accessors);
if (alreadyAuth)
{
ISendAttachment send = SendAttachmentFactory.FactoryMethod(MenuDipedenti);
await send.SendAttachmentAsync(_turn);
await _accessors.TurnOffQnAAsync(_turn);
}
else
{
await _turn.SendActivityAsync(RandomResponses(AutenticazioneNecessariaResponse));
}
}
}
Si tratta del comando che mostra il menu riservato ai dipendenti che avrà al suo interno tutte le possibili funzionalità riservate agli utenti.
- Inserire la string con il nome del comando creato in LUIS, nel file Enviroment.cs nella class statica:
public static class Commands
{
...
public const string CommandAreaRiservata = "commandAreaRiservata";
...
}
- Aggiungere il riconoscimento di questa stringa nella classe CommandFactory per essere creato dal CommandRecognizer all'occorrenza.
public class CommandFactory
{
public static ICommand FactoryMethod(ITurnContext turn, BotlerAccessors accessors, string entity)
{
...
if (AreaRiservataCommandFound(entity))
{
return new AreaRiservataCommand(turn, accessors);
}
...
}
...
private static bool AreaRiservataCommandFound(string ent)
{
return ent.Equals(CommandAreaRiservata);
}
...
E' questo è tutto, ovviamente implementare il metodo ExecuteCommand() secondo le esigenze.