在消息控制程序之外以编程方式调用LUIS

时间:2018-08-12 11:32:54

标签: frameworks botframework bots luis

我正在编写一个使用提示对话框与用户交互的机器人应用程序。 这里的想法是,当用户选择某个选项时,应该将消息发送到将通过ML处理请求的LUIS。 考虑完成它的两种方法。 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));
    }

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

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

Here is a sample from the 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);
        }
    }
}