2016-05-15 23 views
5

'da bir gecikme yanıtı nasıl verebilirim Bir kullanıcının formu doldurması için Microsoft Bot Framework FormFlow kullanıyorum. quoteComplete yılındaMicrosoft Bot Framework

var quoteForm = new FormDialog<Quote>(new Quote(), 
    quoteFormBuilder.BuildForm, FormOptions.PromptInStart); 

context.Call<Quote>(quoteForm, quoteComplete); 

Ben bir alıntı elde ettiğini kullanıcı anlatmak için bot istiyorum ve o olabilir o: Diyalog bitip (bu durumda quoteComplete olarak) ResumeWith parametresi için belirtilen yöntemi yürütülür bunu tamamlayan birkaç saniye sürer. alıntı gerçekleştirmek için bir zaman uyumsuz çağrı sonra yapılır ve 's dönüş ben alıntı değeri ile başka bir ileti göstermek için bot istiyorum:

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"); 
}); 

Ben de koyarak birden cevap göndermek için belgelerinde tavsiye aşağıdaki çalıştı Delay().ContinueWith bu:

var message = context.MakeMessage(); 
message.Text = "Your quote is for £133.54"; 
var connector = new ConnectorClient(); 
connector.Messages.SendMessage(message); 

Ancak bunun için bir Access Denied hata alıyorum.

+0

hiç bu çözdü mü? –

+0

Korkarım ki - hala bir cevap verilecek birinin çipuracağını umuyoruz! :( –

cevap

2

şu şekilde müşteri başlatmasını deneyin belgelere bağlantı alır sonra gelen mesaja bir yanıt göndermek için ConnectorClient kullanmak mümkün olmalıdır

using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message)) { var client = scope.Resolve<IConnectorClient>(); client.Messages.SendMessage(message); }

+0

Bunun için çok teşekkürler ama cevabını, bunun neden gerekli olduğuna dair bir açıklama ile güncelleyip güncelleyemediğini merak ediyorum, aksi halde sadece daha fazla SO büyüsünü kesip yapıştıyorum! :) –

0

Sen zaman uyumsuz görev size bir sonuç

Here's

+0

OP'mdeki ikinci denememde denedim ama Access Reddedildi. Mesajı oluşturmanın kolay bir yolu var - mesajı başlattığımda CreateReplyMessage'i nasıl kullanacağım belli değil –