首页 > 解决方案 > 在消息控制器外部以编程方式调用 LUIS

问题描述

我正在编写一个使用提示对话框与用户交互的机器人应用程序。这里的想法是,当用户选择某个选项时,应向 LUIS 发送一条消息,该 LUIS 将通过 ML 处理请求。想了两种方法来完成它。1 - 直接调用 LUIS 2 - 模拟用户条目以确保消息将通过消息控制器,最后是将进行 LUIS 调用的根对话框 有意义吗?我已经尝试过这样的事情,但没有奏效。

public virtual async Task ChoiceReceivedAsync_MainMenuOption(IDialogContext context, IAwaitable<MainMenuOption> activity)
    {
              ...
                        IMessageActivity message = Activity.CreateMessageActivity();
                        message.Text = "Como e a seguranca da escola?";
                        message.TextFormat = "plain";
                        message.Locale = "en-Us";              
                        var luisAttributes = new LuisModelAttribute(BellaMain.GlobalVariable.LuisModelID, BellaMain.GlobalVariable.LuisSubscriptionKey);
                        var luisService = new LuisService(luisAttributes);
                        await Conversation.SendAsync(message, () => new Dialogs.RootDialog(luisService));
    }

有任何想法吗?

谢谢

标签: frameworksbotframeworkbotsazure-language-understanding

解决方案


不建议尝试通过模拟要发送到机器人的新 Activity 来调用 LUIS。相反,您应该通过使用 HttpClient 的简单请求调用 LUIS。

以下是 LUIS Endpoint API 的示例

复制粘贴示例:

using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;

namespace CSHttpClientSample
{
    static class Program
    {
        static void Main()
        {
            MakeRequest();
            Console.WriteLine("Hit ENTER to exit...");
            Console.ReadLine();
        }

        static async void MakeRequest()
        {
            var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            // Request headers
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

            // Request parameters
            queryString["timezoneOffset"] = "{number}";
            queryString["verbose"] = "{boolean}";
            queryString["spellCheck"] = "{boolean}";
            queryString["staging"] = "{boolean}";
            queryString["bing-spell-check-subscription-key"] = "{string}";
            queryString["log"] = "{boolean}";
            var uri = "https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/{appId}?q={q}&" + queryString;

            var response = await client.GetAsync(uri);
        }
    }
}

推荐阅读