2016-08-15 9 views
0

У меня есть чатбот на C#, который принимает сообщение пользователя, а с помощью LUIS решает, что у пользователя есть. Когда определенное намерение найдено, оно начинает FormFlow. Я смог успешно заполнить поля в форме из первоначального сообщения пользователя с использованием сущностей LUIS. Однако я застрял в сущности Date и Time. Когда LUIS предоставляет сущности, они отправляют их в виде двух отдельных объектов (builtin.datetime.time & builtin.datetime.time), но мне нужно их сохранить в одном поле формы (DateTime). Как я могу сущность Time AND Date получить в поле DateTime?Получение LUIS DateTime Entity в FormFlow

В настоящее время я знаю, как сохранить только одно поле (сэкономить время и по умолчанию до сегодняшней даты или сохранить дату и значение по умолчанию - 12 утра).

Вот как я в настоящее время сохранить дату сущность моей формы поля

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

ответ

0

Вы можете использовать Хронический Parser (он используется в некоторых из примеров в официальном botbuilder источника GitHub код)

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

Чтобы дату и время в один даты и времени объекта слияния, см пример кода ниже

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

Надеется, что это помогает.

+0

Он не смог найти определение для разбора я должен использовать определенную директиву? – Wolfer

+0

Добавили ли вы 'nChronic' в свой проект? и вам нужно проверить импорт тоже –

+0

Я думал, что шаблон BotBuilder V3.0 уже был включен в проект – Wolfer

0

Огромное спасибо @ kienct89, поскольку он помог мне разобраться, но мне не нужно было использовать Chronic. я получил результаты, которые я хотел с помощью следующего кода, с удовольствием в поле комментариев, если есть лучший способ, чтобы написать этот

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

 Смежные вопросы

  • Нет связанных вопросов^_^