2016-08-04 24 views
1

Ich versuche, auf die ursprüngliche Nachricht in einer LuisIntent-Klasse in einer LuisModel Klasse zuzugreifen, die ich in einem Microsoft Bot Framework (Version 3) C# -Projekt verwendet . Jedoch kann ich es selbst nicht herausfinden, und auch keine Vorschläge in a related StackOverflow question funktionieren (weil MBF Version 1 betrifft).Zugriff auf ursprünglichen (Benutzer) Nachrichtentext in einer LuisIntent-Methode (MBF-Version 3)

Ich habe versucht, a related issue on GitHub, ohne Erfolg zu kommentieren.

Kann jemand die Benutzermeldung erhalten, die die Methode ausgelöst hat?

+0

Luis gibt die aktuelle Nachricht in Abfrage, so überprüfen args.query haben. Die Argumente sind alle im JSON-Format, Sie können es einfach protokollieren, um zu sehen, was von luis kommt und was geparst werden soll. – N0mi

Antwort

1

-Update (08/09/2016)

Seit neueste Version (3.2.0), vielen Dank für das Commit (https://github.com/Microsoft/BotBuilder/commit/f156a60880e86f7b853b1f94a5546386436ac3d0)

Jetzt sind wir in der Lage, die Aktivität direkt von der Absicht Handler zu erhalten

Beispielcode

public async Task Test(IDialogContext context, IAwaitable<IMessageActivity> origin, LuisResult result) 

Original-Antwort (05/08/2016)

Sie eine Eigenschaft, die Herkunft Aktivität zu speichern und ordnen sie in MessageReceived

public class YourDialog : LuisDialog<string> 
{  
    [NonSerialized] 
    private IMessageActivity _originActivity; 

    internal YourDialog() 
    { 
    } 

    [LuisIntent("IntentionConstant.Empty")] 
    public async Task HandleLuisResult(IDialogContext context, LuisResult result) 
    { 
     try 
     { 
      // you can access _originActivity here 

     } 
     catch (Exception ex) when(ex is ApplicationException) 
     { 
      throw; 
     } 
     catch (Exception ex) when (ex is TaskCanceledException) 
     { 
     } 
    } 

    protected override async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> item) 
    { 
     _originActivity = await item; 
     await base.MessageReceived(context, item); 
    } 
} 
+0

Danke - Ich suche schon seit Ewigkeiten! :) –

+0

@MartinKearn du bist willkommen. –

+0

@MartinKearn gibt es einen besseren Weg, es jetzt zu tun, überprüfen Sie mein Update –