应该如何在机器人框架版本 4 中编写版本 3 机器人代码中的 LUIS 意图方法?

我正在尝试按照Microsoft Docs 中的这篇文章将我们的版本 3 代码迁移到版本 4。


但是,我不确定如何重写 Luis 对话框。必须做什么?


我在 onturnasync 中添加了以下代码,现在不确定如何重写 AfterFAQ resume 方法。


请帮助我重写这些现有的 Luis 方法:


      //The LUIS dialog service call the back the method if the conversation is part of Greeting intent

    [LuisIntent("Greetings")]

    public async Task Greetings(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)

    {

        needMoreInformation = false;

        qnaInvalidMessageCount = 0;

        var messageToForward = await activity;

        string[] supportList = { "HELP", "FEEDBACK", "SUPPORT", "ESCALATE", "AGENT" };

        string qnaAnswer;


        if (messageToForward.Text == null || supportList.Any(x => x == messageToForward.Text.ToUpper()))

        {

            await context.PostAsync("Please reach out to ...");

            context.Wait(MessageReceived);

        }

        else if (GreetingColl.TryGetValue(messageToForward.Text.Trim().ToLower(), out qnaAnswer))

        {

            await context.PostAsync(qnaAnswer);

            context.Wait(MessageReceived);

        }

        else

        {

            await context.Forward(new QnAGreetingsDialog(), AfterFAQDialog, messageToForward, CancellationToken.None);

        }


    }

修改代码:


 public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))

    {

        if (turnContext.Activity.Type == ActivityTypes.Message)

        {

          ...

           var luisResults = await botServices.LuisServices[LuisKey].RecognizeAsync(turnContext, cancellationToken);

                    var topScoringIntent = luisResults?.GetTopScoringIntent();

                    var topIntent = topScoringIntent.Value.intent;                        


                                 

守候你守候我
浏览 98回答 1
1回答

泛舟湖上清波郎朗

如果您的问题是关于 Bot Framework core v4,PFB 获取意图的步骤:首先,您需要在 bot 框架中使用密钥将 LUIS 服务注入到服务中。使用以下代码获取识别器结果对象var&nbsp;luisResults&nbsp;=&nbsp;await&nbsp;services.LuisServices[LuisKey].RecognizeAsync(turnContext,&nbsp;default(CancellationToken));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LUIS 密钥是注入 LUIS 服务时使用的密钥。这是使用 RecognizerResult 对象获取意图的方法。luisResults.GetTopIntent(luisThresholdScore).intent;
打开App,查看更多内容
随时随地看视频慕课网APP