2016-05-15 4 views
5

में देरी से प्रतिक्रिया कैसे दे सकता हूं, मैं उपयोगकर्ता को फॉर्म भरने के लिए माइक्रोसॉफ्ट बॉट फ्रेमवर्क फॉर्मफ्लो का उपयोग कर रहा हूं। यह पूरा करने के बाद कि संवाद समाप्त हो जाती है और विधि ResumeWith पैरामीटर के लिए निर्दिष्ट (इस मामले quoteComplete में) निष्पादित किया जाता है:मैं माइक्रोसॉफ्ट बॉट फ्रेमवर्क

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

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

quoteComplete में मैं बॉट चाहते उपयोगकर्ता है कि यह एक उद्धरण हो रही है बताने के लिए और जो भी हो कुछ सेकंड लेता है उद्धरण प्रदर्शन करने के लिए एक async कॉल तो किया जाता है और यह की वापसी पर मैं बोली के मूल्य के साथ एक और संदेश को दिखाने के लिए बॉट हैं:

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

मैं भी रख कर कई उत्तर भेजने के लिए दस्तावेज में सलाह निम्नलिखित की कोशिश की Delay().ContinueWith में इस:

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

हालांकि मैं इस के लिए एक Access Denied त्रुटि मिलती है।

+0

क्या आपने कभी इसे हल किया था? –

+0

मुझे डर नहीं है - अभी भी उम्मीद है कि किसी को उत्तर देने वाला कोई चिपक जाएगा! :( –

उत्तर

2

निम्नलिखित तरीके से ग्राहक instantiating प्रयास करें हो जाता है आवक संदेश में जवाब भेजने का ConnectorClient उपयोग करने के लिए सक्षम होना चाहिए

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

+0

इसके लिए बहुत धन्यवाद , लेकिन मुझे आश्चर्य है कि क्या आप अपने उत्तर को स्पष्टीकरण के साथ अपडेट कर सकते हैं कि यह क्यों जरूरी है? अन्यथा मैं बस इतना और जादू कर रहा हूं! :) –

0

आप एक बार अपने async कार्य आप एक परिणाम

Here's प्रलेखन के लिए लिंक

+0

मैंने अपने ओपी में अपने दूसरे प्रयास पर यही प्रयास किया, लेकिन एक्सेस अस्वीकृत हो गया। क्या संदेश बनाने का कोई आसान तरीका है - यह स्पष्ट नहीं है कि जब मैं संदेश शुरू कर रहा हूं तो मैं CreateReplyMessage का उपयोग कैसे करूं। –

संबंधित मुद्दे