Sto utilizzando Microsoft Bot Framework FormFlow per ottenere un utente per completare un modulo. Dopo aver completato quella finestra di dialogo si conclude e il metodo specificato per il parametro ResumeWith
(in questo caso quoteComplete
) viene eseguita:Come posso dare una risposta ritardata in Microsoft Bot Framework
var quoteForm = new FormDialog<Quote>(new Quote(),
quoteFormBuilder.BuildForm, FormOptions.PromptInStart);
context.Call<Quote>(quoteForm, quoteComplete);
In quoteComplete
Voglio il bot per dire all'utente che si sta facendo un preventivo e che essa può richiede alcuni secondi. Una chiamata asincrona per eseguire la citazione viene poi fatto e su di essa la restituzione voglio il bot per mostrare un altro messaggio con il valore della citazione:
await context.PostAsync("I will now calculate your quote. I won't be long...");
context.Wait(MessageReceived);
//Simulate getting the quote
Task.Delay(5000).ContinueWith(t =>
{
context.PostAsync("Your quote is £133.54");
});
Ho provato anche seguendo i consigli nella documentazione per l'invio di risposte multiple mettendo questo nel Delay().ContinueWith
:
var message = context.MakeMessage();
message.Text = "Your quote is for £133.54";
var connector = new ConnectorClient();
connector.Messages.SendMessage(message);
Tuttavia ottengo un errore Access Denied
per questo.
Hai mai risolto questo? –
Ho paura di no - spero ancora che qualcuno con una risposta si scheggierà! :( –