如何在 MessagesController 之外调用 LUIS 对话框 class

How to call a LUIS Dialog outside of the MessagesController class

我想从 MessagesController 外部调用 LUIS 对话框 class。我在 MessageController class:

中创建了一个根对话框
 if (activity.Type == ActivityTypes.Message) {
 await Conversation.SendAsync(activity, () => new MessageDialogHandler());

在我的 MessageDialogHandler class 中,我正在处理附件和文本输入。

if (activity.Attachments?.Count() > 0) {
            FaceAnalysis faceAnalysis = new FaceAnalysis();
            await faceAnalysis.AnalyseImageAsync(context, argument);
        }
else if(activity.Text.Length > 0) {
//here needs to be the code to call a LUIS dialog.
}

我有一个标准的 LUIS class:

[LuisModel("App-ID", "SubscriptionKey")]
[Serializable]

public class LuisDialog : LuisDialog<object> {

如何从我的 MessageDialogHandler class 中调用该 LUIS 对话框? 是的,我确实读过这个 post 但它对我没有帮助。

感谢任何想法。

您只需要对 LuisDialog 执行 context.Forward 消息。

await context.Forward(
      new LuisDialog(), 
      LuisDialogCompleted, 
      activity, 
      System.Threading.CancellationToken.None);

要了解有关如何调用对话框的更多信息,请参阅