Używam programu Microsoft Bot Framework FormFlow, aby poprosić użytkownika o wypełnienie formularza. Po ukończeniu go, że Dialog kończy i sposób określony dla parametru ResumeWith
(w tym przypadku quoteComplete
) jest wykonywany:Jak można uzyskać opóźnioną odpowiedź w programie Microsoft Bot Framework
var quoteForm = new FormDialog<Quote>(new Quote(),
quoteFormBuilder.BuildForm, FormOptions.PromptInStart);
context.Call<Quote>(quoteForm, quoteComplete);
W quoteComplete
Chcę bot poinformować użytkownika, że jest coraz cytatów i że może ona trwa kilka sekund. Wywołanie asynchroniczne wykonywanie cytat jest następnie zrobić i na jego powrocie chcę bot pokazać kolejną wiadomość z wartością Cytat:
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");
});
Próbowałem również po poradę w dokumentacji do wysyłania wielu odpowiedzi, umieszczając to w Delay().ContinueWith
:
var message = context.MakeMessage();
message.Text = "Your quote is for £133.54";
var connector = new ConnectorClient();
connector.Messages.SendMessage(message);
Jednakże pojawia się błąd Access Denied
do tego.
Czy kiedykolwiek to rozwiązałeś? –
Obawiam się, że nie - wciąż mam nadzieję, że ktoś z odpowiedzią się zepsuje! :( –