我试图从一个timex键来的LUIS响应中获取日期,但我只能设法进入列表并无法将其转换回字典。 有没有办法达到键值对。LUIS Timex日期
private const string EntityCustomerID = "CustomerID";
private const string EntityDateOfBirth = "builtin.datetimeV2.date";
private const string EntityNumber = "builtin.number";
private const string DateKeyName = "timex";
private const string ResolutionKeyName = "values";
public async Task Verification(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
{
var message = "";
EntityRecommendation customerIdEntityRecommendation;
EntityRecommendation customerDobEntityRecommendation;
if(result.TryFindEntity(EntityCustomerID, out customerIdEntityRecommendation))
{
message = $"Your customer ID is '{customerIdEntityRecommendation.Entity}'";
}
if (result.TryFindEntity(EntityDateOfBirth, out customerDobEntityRecommendation))
{
object dateObject;
if (customerDobEntityRecommendation.Resolution.TryGetValue(ResolutionKeyName, out dateObject))
{
IEnumerable enumerable = dateObject as IEnumerable;
if(enumerable != null)
{
foreach (object element in enumerable)
{
}
}
//string dateString = (string)dateObject;
//string dateTransformed = DateTime.ParseExact(dateString, "yyyy-MM-dd", null).ToString("MM/dd/yyyy");
//message = dateTransformed;
}
}
await context.PostAsync(message);
context.Wait(MessageReceived);
}
编辑1:我找到了一种通过使用下面的代码
foreach (object element in enumerable)
{
var jObject = (JObject)element;
var dict = jObject.ToObject<Dictionary<string, object>>();
var timexValue = dict[DateKeyName];
}
标记时,请小心,这显然是C#语法(改变了它你) –
@FelixPalmen我几乎可以发誓,我已经选择了C#,它可能是一个诚实的人的错误。感谢您纠正。 – user6083088
这是你在找什么=> https://github.com/Microsoft/BotBuilder/pull/2964? –