Sto lavorando su un bot con il C# Bot Builder.Come concatenare più finestre di dialogo?
Ora, so che ci sono alcuni esempi su come gestire i dialoghi concatenati. Come FacebookAuthDialog o ChainedEchoDialog.
Cosa voglio fare: un utente deve passare attraverso una finestra di dialogo di autorizzazione e, una volta terminato, voglio mettere immediatamente l'utente nella "UserDialog" dove può utilizzare tutte le funzioni che necessitavano della sua autenticazione.
Ecco il mio codice:
public static readonly IDialog<string> dialog = Chain
.PostToChain()
.Switch(
new Case<Message, IDialog<string>>((msg) =>
{
var userInfo = new StorageClient().GetUser(msg.From.Id);
if (userInfo != null && userInfo.Activated)
return false;
else
return true;
}, (ctx, msg) =>
{
return Chain.ContinueWith(new AuthenticationDialog(),
async (context, res) =>
{
var result = await res;
return Chain.Return($"You successfully activated your account.");
});
}),
new Case<Message, IDialog<string>>((msg) =>
{
var userInfo = new StorageClient().GetUser(msg.From.Id);
if (userInfo != null && userInfo.Activated)
return true;
else
return false;
}, (ctx, msg) =>
{
var service = new LuisService();
// User wants to login, send the message to Facebook Auth Dialog
return Chain.ContinueWith(new UserDialog(msg, service),
async (context, res) =>
{
return Chain.Return($"");
});
}),
new DefaultCase<Message, IDialog<string>>((ctx, msg) =>
{
return Chain.Return("Something went wrong.");
})
).Unwrap().PostToUser();
Questo tipo di opere. Io chiamo questa finestra dalla MessageController con
await Conversation.SendAsync(message,() => ManagingDialog.dialog);
Ma questo doesnt sento proprio. Devo anche chiamare questa finestra due volte ogni volta che una finestra di dialogo è finita, perché quando l'utente inserisce qualcosa non succede nulla, poiché questo avvia solo la finestra di dialogo.
Ho provato a inserire un altro ContinueWith dopo l'esecuzione del caso AuthenticationDialog, ma non riuscivo a farlo funzionare.
Apprezzerei molto l'aiuto con alcuni snippet di codice. Sono completamente all'oscuro.
Saluti
Beh, potreste aver notato, che la domanda iniziale non c'è esattamente uguale a quello che ho chiesto qui. Ecco perché sono lo stesso ragazzo che ha posto la domanda lì. ;) – Eiren