quindi adesso sto usando Microsoft.Bot.Builder.Dialogs.Conversation.SendAsync
e Microsoft.Bot.Builder.Dialogs.Conversation.ResumeAsync
per implementare un modo per mettere in pausa e riprendere la conversazione ma sembra impossibile "uscire" o tornare allo stato precedente. È bloccato nella finestra di dialogo della conversazione.Bot Framework: come uscire dalla conversazione?
Devo solo implementare un comando "Annulla"? In tal caso, quali dati devo cancellare in modo che torni allo stato originale?
public static readonly IDialog<string> dialog = Chain
.PostToChain()
.Switch(
new Case<Message, IDialog<string>>((msg) =>
{
var regex = new Regex("login", RegexOptions.IgnoreCase);
return regex.IsMatch(msg.Text);
}, (ctx, msg) =>
{
return Chain.ContinueWith(new ChatDialog(msg),
async (context, res) =>
{
var token = await res;
//var valid = await Helpers.ValidateAccessToken(token);
//var name = await Helpers.GetProfileName(token);
var name = "User";
context.UserData.SetValue("name", name);
return Chain.Return($"You are logged in as: {name}");
});
})
).Unwrap().PostToUser();
quindi se io mando un 'login' andrà e iniziare una nuova conversazione ChatDialog
ma sembra rimanere bloccati in questo stato. Anche se provo a inviare un altro comando, continuerà a chiedere l'accesso. Devo implementare un'altra classe Case
per gestire un comando 'Annulla'? O dovrebbe annullare automaticamente la conversazione quando l'utente invia lo stesso comando 'login' più di una volta? Sembra abbastanza difficile dover inviare un comando "annulla" separatamente.
Solo a chiedersi, hai trovato una soluzione? Sto avendo lo stesso problema. – K48