Wie gelangen Sie zum ursprünglichen Meldungstext in einer Microsoft Bot Framework-LuisIntent-Methode?

8

Ich versuche, auf den vollständigen Originaltext innerhalb einer Methode zuzugreifen, die als LuisIntent innerhalb eines LuisDialog markiert ist.

Die Dokumentation zeigt diese Methoden als zwei Argumente:

%Vor%

Keiner von beiden stellt den ursprünglichen Text der Nachricht öffentlich dar. Das Kontextobjekt enthält die Nachricht jedoch in einer privaten Eigenschaft ( context.data.message.text ), auf die nicht zugegriffen werden kann.

Gibt es eine Möglichkeit, in context darauf zuzugreifen, oder kann es in den Dialogkonstruktor übergeben werden?

    
Gene Reddick 07.04.2016, 16:51
quelle

4 Antworten

5

Sie können die Funktion MessageReceived (...) des LuisDialogs außer Kraft setzen, die Felder der Nachricht, die Sie als Elementvariablen benötigen, behalten und auf diese Felder in Ihren Intent-Handlern zugreifen. Im Folgenden habe ich den SimpleAlarmDialog geändert, um zu zeigen, wie Sie in einem der Intent-Handler auf 'message.Text' zugreifen können:

%Vor%     
Shahin Shayandeh 11.04.2016, 21:00
quelle
8

Mit der neuen Version von Bot Framework (1.0.2) verfügt das Objekt LuisResult jetzt über einen Abfrage -Parameter, der die ursprüngliche an LUIS gesendete Abfrage enthält.

    
fdezjose 14.04.2016 10:53
quelle
1

Wenn Sie in die Methode eindringen, können Sie in der Schnellübergabe sehen, dass das Kontextobjekt eine nicht öffentliche Eigenschaft hat bis hin zu context.data.mesage.Text (beachten Sie den Rechtschreibfehler von "message"). Da die Eigenschaft nicht öffentlich ist, können Sie mit der Reflektion schummeln, um an sie heranzukommen (siehe GetInstanceField in Wie erhalte ich den Wert eines privaten Feldes in C #? )

%Vor%     
Andy Thomas 11.04.2016 16:46
quelle
0

Sie können das tun, indem Sie die Query-Eigenschaft von LuisResult verwenden,

%Vor%     
Kunal Mukherjee 04.07.2017 06:36
quelle

Tags und Links