2016-04-26 11 views
10

मैं अपने इरादे के साथ FormBuilder का उपयोग करने की कोशिश कर रहा हूं क्योंकि मैंने उन्हें लुइस में बनाया था। मुझे ऐसा करने के लिए प्रलेखन नहीं मिल रहा है।लूइस को बॉट बिल्डर में एकीकृत करने के लिए

मैं निम्नलिखित बातें करना चाहते हैं:

  1. एक उपयोगकर्ता एक वाक्यांश जो लुइस साथ व्याख्या की है में प्रवेश करेंगे।
  2. यदि वाक्यांश में सभी इकाइयां नहीं दी जाती हैं तो फॉर्म निर्माता अंतराल को भर देगा।

मैं यह कैसे कर सकता हूं? क्या कोई ट्यूटोरियल है? मैं लोगों को LuisDialogs के बारे में बात करता हूं, लेकिन मुझे नहीं पता कि कहां से शुरू करना है।

+0

मुझे पता चला कि यह एक अच्छा लेख है: http://www.c-sharpcorner.com/article/an-interactive-bot-application-with-luis-using-microsoft-bot/ – PhuocLe

उत्तर

16

संक्षेप में:

  • सबसे पहले आप luis.ai. पर एक खाता बनाने के लिए
  • तो फिर तुम इस दस्तावेज़ का पालन करने की जरूरत है: (। यह शास्त्रीय संवाद के साथ शुरू होता है, लेकिन लुइस एकीकरण के साथ समाप्त होता है) http://docs.botframework.com/sdkreference/csharp/dialogs.html

यहाँ कुछ कदम हैं (लेकिन आप निश्चित रूप से गाइड मैं जुड़ा हुआ का पालन करना चाहिए):

मूल रूप से यह एक वर्ग जो LuisDialog<object> विरासत है और आप अपने लुइस आईडी के साथ यह की चोटी पर एक विशेषता डाल करने के लिए है और गुप्त

[LuisModel("c413b2ef-382c-45bd-8ff0-f76d60e2a821", "6d0966209c6e4f6b835ce34492f3e6d9")] 
[Serializable] 
public class SimpleAlarmDialog : LuisDialog<object> 
{ [...] 

फिर आप अपनी कक्षा में विधि जोड़ते हैं और LuisIntent(...) विशेषता के साथ उन्हें सजाने के लिए।

[LuisIntent("builtin.intent.alarm.turn_off_alarm")] 
public async Task TurnOffAlarm(IDialogContext context, LuisResult result) 
{ [...] 

विधि के अंदर, आप अगर एक इकाई इस तरह के कोड का उपयोग पाया गया था खोज सकते हैं: संवाद शुरू करने के लिए

EntityRecommendation title; 
if (result.TryFindEntity(Entity_Alarm_Title, out title)) 
{ 
    what = title.Entity; 
} 
else 
{ 
    what = DefaultAlarmWhat; 
} 

अंत में, आप अपने नियंत्रक के अंदर इस कॉल करनी होगी:

public async Task<Message> Post([FromBody]Message message) 
    { 
     if (message.Type == "Message") 
     { 
      // return our reply to the user 
      return await Conversation.SendAsync(message,() => new EchoDialog()); 
     } 
     else 
     { 
      return HandleSystemMessage(message); 
     } 
    } 
+0

धन्यवाद! मैंने पिज्जाबॉट उदाहरण को देखा है और मैं अपना कोड काम करने में कामयाब रहा :-) – Aldentev

+0

बिल्कुल सही! क्या आप उत्तर को उपयोगी के रूप में चिह्नित कर सकते हैं ताकि अन्य लोग एक ही प्रश्न वाले पर भरोसा कर सकें? :) –

+0

यदि इकाई प्रदान नहीं की जाती है, तो मैं उपयोगकर्ता को केवल दूसरे चरण में इकाई जानकारी प्रदान करने के लिए कैसे संकेत दे सकता हूं? क्या मुझे लुइस मॉडल को अद्यतन करने की आवश्यकता है ताकि वह इकाई के रूप में केवल 1 शब्द ले सके और इसे इरादे से जोड़ सके? – Vikram

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