2017-07-18 1 views
-1

Ich habe versucht, das Datum von LUIS Antwort, die in einem timex-Schlüssel kommt, aber ich habe es nur geschafft, um die Liste zu bekommen und nicht in der Lage, zurück ins Wörterbuch tippen. Gibt es eine Möglichkeit, zum Schlüssel-Wert-Paar zu gelangen.LUIS Timex Datum

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

EDIT 1: Ich fand einen Weg, die Daten über mit dem folgenden Code

foreach (object element in enumerable) 
{ 
var jObject = (JObject)element; 
var dict = jObject.ToObject<Dictionary<string, object>>(); 
var timexValue = dict[DateKeyName]; 
} 
+0

achten Sie bitte darauf, wenn Tagging, dies deutlich C# Syntax ist (geändert es für Sie) –

+0

@FelixPalmen ich fast könnte schwören, dass ich C# ausgewählt hatte, könnte es ein ehrlicher Mann Fehler gewesen. Danke für die Korrektur. – user6083088

+0

Ist das, was Sie suchen => https://github.com/Microsoft/BotBuilder/pull/2964? –

Antwort

2

Die Lösung für dieses diskutiert wird here zu erhalten. In der Zwischenzeit können Sie versuchen, den Code der fix zu verwenden. Etwas wie:

var children = myArray.Children(); 

if (children.Count() == 1) 
{ 
     return children.First().ToObject<IDictionary<string, object>>(); 
} 
else if (children.Count() > 0) 
{ 
     return children.Select(c => c.ToObject<IDictionary<string, object>>()).ToList(); 
} 
+0

Ich werde mein Bestes versuchen. Ich bin mir nicht sicher, was Repurpose bedeutet. Ich bin sehr neu in C# – user6083088

+1

Nehmen Sie den Code des Fix und machen es für Sie Szenario arbeiten. –

+0

Wie man den Code aktualisiert, ist das nicht in DLL gesperrt - Was fehlt mir hier? – user6083088