2016-11-14 6 views
5

मैं लुइस का उपयोग करके एक बॉट बनाने की कोशिश कर रहा हूं लेकिन यह मेरे विचार से बहुत कठिन है। अब तक मैं और एक इकाई मेरी LUIS आवेदन बना सकते हैं और एक आशय बनाने में कामयाब रहे और मैं कुछ बयान कि ठीक से काम करने लगते हैं बनाया है।माइक्रोसॉफ्ट बॉट फ्रेमवर्क, लुइस और एक्शन पैरामीटर

मैंने फिर अपना बॉट बनाया और इसे लुइस तक लगा दिया। जब मैं अपने बॉट का परीक्षण करता हूं तो यह उम्मीद के अनुसार काम कर रहा है। मजेदार भाग के लिए अब। मैं पैरामीटर को संभालना चाहता हूं। लुइस पर मैं अपने आशय की जाने वाली कार्रवाई कहा:

enter image description here

आप देख सकते हैं मैं एक शीघ्र जोड़ लिया है। मेरी बॉट में मेरे कोड वर्तमान में इस तरह दिखता है:

/// <summary> 
/// Tries to find the category 
/// </summary> 
/// <param name="result">The Luis result</param> 
/// <param name="alarm"></param> 
/// <returns></returns> 
public string TryFindCategory(LuisResult result) 
{ 

    // Variable for the title 
    EntityRecommendation title; 

    // If we find our enenty, return it 
    if (result.TryFindEntity(PiiiCK.Category, out title)) 
     return title.Entity; 

    // Default fallback 
    return null; 
} 

[LuisIntent("Choose category")] 
public async Task ChooseCategory(IDialogContext context, LuisResult result) 
{ 

    // Get our category 
    var category = TryFindCategory(result); 
    var response = "The category you have chosen is not in the system just yet."; 

    switch (category) 
    { 
     case "camera": 
      response = $"You need help buying a { category }, is this correct?"; 
      this.started = true; 
      break; 
     default: 
      if (!string.IsNullOrEmpty(category)) response = $"Sorry, PiiiCK does not deal with { category.Pluralise() } just yet."; 
      break; 
    } 

    // Post our response back to the user 
    await context.PostAsync(response); 

    // Execute the message recieved delegate 
    context.Wait(MessageReceived); 
} 

मुझे लगता है कि आप अनुमान लगा सकते हैं जहाँ मैं इस के साथ जा रहा हूँ। यदि उपयोगकर्ता टाइप करता है तो मुझे कैमरा खरीदने में सहायता करें, यह श्रेणी श्रेणी चुनें और सही इकाई चयनित होगी। लेकिन यदि वे टाइप करते हैं तो मुझे खरीदने में सहायता करें, यह अभी भी सही इरादे पर जायेगा, लेकिन इसमें कोई चयनित इकाई नहीं होगी। मैं अपने बॉट को यह देखना चाहता हूं और में पाठ का उपयोग करें मैंने LUIS में बनाया था और जब उपयोगकर्ता इकाई का चयन करता हूं, तो मैं इसे उस पैरामीटर के साथ LUIS पर वापस जाना चाहता हूं।

मुझे नहीं पता कि यह कैसे करें और मुझे इस पर कोई ट्यूटोरियल नहीं मिल रहा है। किसी भी मदद की सराहना की जाएगी (यहां तक ​​कि लिंक!)

+0

क्या आप अपने LUIS मॉडल की एक छवि जोड़ सकते हैं ताकि हम आपके इच्छित इरादे/entites को समझ सकें?TryFindCategory क्या कर रहा है? –

+0

वर्तमान में केवल 1 इरादा है (श्रेणी चुनें) और 1 इकाई (श्रेणी)। TryFindCategory बस https://github.com/Microsoft/BotBuilder/blob/master/CSharp/Samples/AlarmBot/Dialogs/AlarmLuisDialog.cs लाइन 60 से निकालें जहां बूलियन होने की बजाय मैं केवल इकाई या शून्य को वापस कर देता हूं। – r3plica

उत्तर

1

सबसे पहले, आपको यह सुनिश्चित करने की ज़रूरत है कि श्रेणियों में आपके उच्चारण में, आप उन्हें श्रेणी इकाई के रूप में लेबल कर रहे हैं। यह केवल उस शब्द/शब्दों का चयन करके किया जाता है जो आपकी इकाई का प्रतिनिधित्व करते हैं और फिर अपना उच्चारण सबमिट करने से पहले वास्तविक श्रेणी पर क्लिक करते हैं।

Labeling utterances

कि कार्रवाई पैरामीटर आपके द्वारा जोड़े पर स्वतंत्र है। क्रिया पैरामीटर की जांच करने के लिए, आपको वास्तविक मंशा के माध्यम से नेविगेट करने की आवश्यकता है। IntentRecommendation में Actions संग्रहण संपत्ति है; जिसमें Parameters संग्रह संपत्ति शामिल है। यहाँ जोड़ने के लिए

Action parameters

कुछ है, कि develop शाखा में, BotFramework टीम सिर्फ समर्थन LUIS v2 API के लिए जोड़ा गया है और कुछ नया capabilitites जोड़ा है।

उदाहरण के लिए, यदि आपके इरादे को पैरामीटर की आवश्यकता है और उनको प्रदान नहीं किया गया है तो अब लुइसडियलोग कार्य करेगा। उस परिदृश्य में (जो ऐसा लगता है तुम्हारा है), लुइसडियलोग automatically launchLuisActionDialog होगा और उपयोगकर्ता को पैरामीटर में परिभाषित प्रॉम्प्ट संदेश का उपयोग करके अनुपलब्ध पैरामीटर के लिए पूछेगा।

कृपया ध्यान दें कि यह अभी तक Nuget पैकेज के रूप में प्रकाशित नहीं है।

+0

क्या यह सहायक था? –

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