Får LUIS Datetime Entity inn FormFlow

stemmer
0

Jeg har en chatbot i C # som tar brukerne meldingen, og ved hjelp av LUIS bestemmer hva intensjonen brukeren har. Når en bestemt hensikt er funnet det starter en FormFlow. Jeg har vært i stand til å fylle felt i skjemaet fra brukerne opprinnelige meldingen med Luis enheter. Men jeg er fast på dato og klokkeslett enhet. Når LUIS gir enhetene sender dem som 2 separate enheter (builtin.datetime.time & builtin.datetime.time), men jeg trenger disse lagres under en Form Field (Datetime). Hvordan kan jeg ha foretaket klokkeslett og dato blir lagret på Datetime feltet?

Jeg har for tiden bare vite hvordan du lagrer bare ett felt (spare tid og standard til dagens dato, eller lagre dato og mislighold til 12 AM).

Her er hvordan jeg nå lagre dato enhet til min Form felt

        EntityRecommendation entityDateTime;
        result.TryFindEntity(builtin.datetime.date, out entityDateTime);
        if (entityDateTime != null)
            entities.Add(new EntityRecommendation(type: DateTime) { Entity = entityDateTime.Entity });
Publisert på 15/08/2016 klokken 19:06
kilden bruker
På andre språk...                            


2 svar

stemmer
0

Mye takket være @ kienct89, som han hjalp meg finne ut av ting, men jeg trengte ikke å bruke kronisk. Jeg fikk de resultatene jeg ønsket med følgende kode, glade til felt kommentarer om det er en bedre måte å skrive dette

        EntityRecommendation entityDate;
        EntityRecommendation entityTime;
        result.TryFindEntity("builtin.datetime.date", out entityDate);
        result.TryFindEntity("builtin.datetime.time", out entityTime);
        if ((entityDate != null) & (entityTime != null))
            entities.Add(new EntityRecommendation(type: "DateTime") { Entity = entityDate.Entity + " " + entityTime.Entity });

        else if (entityDate != null)
            entities.Add(new EntityRecommendation(type: "DateTime") { Entity = entityDate.Entity });

        else if (entityTime != null)
            entities.Add(new EntityRecommendation(type: "DateTime") { Entity = entityTime.Entity });
Svarte 22/08/2016 kl. 22:01
kilden bruker

stemmer
0

Du kan bruke Kronisk parser (det blir brukt i noen av eksemplene i offisielle botbuilder github kildekode)

URL: https://github.com/robertwilczynski/nChronic

Å fusjonere dato og klokkeslett i én enkelt datetime enhet, se eksempelkoden nedenfor

EntityRecommendation time;
EntityRecommendation date;

var timeFound = result.TryFindEntity(EntityConstant.EntityBuiltInTime, out time);
if (result.TryFindEntity(EntityConstant.EntityBuiltInDate, out date))
{
    return timeFound ? (date.Entity + " " + time.Entity).Parse() : date.Entity.Parse();
}

ChronicParserExtension.cs

public static Tuple<DateTime, DateTime> Parse(this string input)
{
    var parser = new Parser(new Options
    {
        FirstDayOfWeek = DayOfWeek.Monday
    });

    var span = parser.Parse(input);

    if (span.Start != null && span.End != null)
    {
        return Tuple.Create(span.Start.Value, span.End.Value);        
    }

    return null;
}

Håper det hjelper.

Svarte 16/08/2016 kl. 04:15
kilden bruker

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