botframework v4 में LUIS datetimeV2 इकाइयों के साथ कार्यरत

वोट
0

मैं प्रेषण उपकरण के साथ उपयोग कर रहा हूँ Botframework v4 सी # लुइस और QnA निर्माता से परिणाम प्राप्त करने के लिए। मेरी LUIS कुछ परिणामों को datetimev2 संस्थाओं जो मैं काफी यकीन है कि कैसे ठीक संसाधित करने के लिए नहीं कर रहा हूँ है।

मैं अंदर हल हो गई datetime मूल्य दिखाई दे रही है AdditionalProperties, वहाँ एक अंतर्निहित वर्ग है कि मैं करने के लिए इस वस्तु डाल सकता है? वहाँ समझाने कि कैसे botframework v4 के भीतर सामान्य रूप में संस्थाओं के साथ काम करने के लिए कर रहे हैं किसी भी नमूने? इस से संबंधित सभी दस्तावेज़ अभी भी केवल v3 के लिए होने लगते हैं।

LUIS

09/10/2019 को 12:55
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
1

datetimeV2 मुश्किल होता है और उपयोगकर्ता इनपुट के आधार पर तर्क refactor करने के लिए किया था (वहाँ साल के बिना तारीख, रिश्तेदार दिनांक और इतने पर कर रहे हैं)

कोड (जे एस) जो datetime संभालती है:

const datetime = _.get(
          luisQuery.entities.filter(e => e.type && e.type.includes("builtin.datetimeV2")), 
          '[0].resolution.values[0].timex', 
          null);

const hasYear = (datetime) => {
    return !datetime.includes("XXXX");
};

const makeUseOfDateTime = (datetime) => {
    if (datetime.length === 4) {
        datetime += "-12-31";
    } else if (datetime.length === 7) {
        datetime += "-31";
    }

    // do something with datetime
};

hasYearजांच करता है कि साल उपयोगकर्ता द्वारा पेश किया गया था, makeUseOfDateTimeइस वर्ष के अंत infers (यदि केवल साल प्रदान की) और इस महीने के अंत infers (केवल वर्ष और महीने प्रदान कर रहे हैं)

09/10/2019 को 14:47
का स्रोत उपयोगकर्ता

वोट
0

मैं समाप्त हो गया इन का उपयोग करLuisResolutionExtensions सामान्य में datetime मूल्यों और लुइस संस्थाओं को निकालने के लिए।

public static DateTime ProcessDateTimeV2Date(this EntityModel entity)
{
    if (entity.AdditionalProperties.TryGetValue("resolution", out dynamic resolution))
    {
        var resolutionValues = (IEnumerable<dynamic>) resolution.values;
        var datetimes = resolutionValues.Select(val => DateTime.Parse(val.value.Value));

        if (datetimes.Count() > 1)
        {
            // assume the date is in the next 7 days
            var bestGuess = datetimes.Single(dateTime => dateTime > DateTime.Now && (DateTime.Now - dateTime).Days <= 7);
            return bestGuess;
        }

        return datetimes.FirstOrDefault();
    }

    throw new Exception("ProcessDateTimeV2DateTime");
}

public static string ProcessRoom(this EntityModel entity)
{
    if (entity.AdditionalProperties.TryGetValue("resolution", out dynamic resolution))
    {
        var resolutionValues = (IEnumerable<dynamic>) resolution.values;
        return resolutionValues.Select(room => room).FirstOrDefault();
    }

    throw new Exception("ProcessRoom");
}
15/10/2019 को 17:47
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more