带标题属性的BOT Framework Directline API调用

问题描述 投票:0回答:2

我想将我的BOT框架Directline API与其他标题属性以及直接线密码一起调用。如何在我的BOT框架代码中提取它并将其放在IBOTStore中以备将来使用。我想知道我是否可以在意图级别读取头属性?

这是我解析alexa API请求的示例代码:

 var directLineSecret = ConfigurationManager.AppSettings["directlinesecret"];
        _client = new DirectlineClient(directLineSecret, "alexa" + Guid.NewGuid().ToString().Replace("-", ""));

var client = new HttpClient
        {
            BaseAddress = new Uri("https://directline.botframework.com")
        };

        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("BotConnector", _secret);
        client.DefaultRequestHeaders.Add("ETag", "*");
        client.DefaultRequestHeaders.Add("channel", _from);

        var response =
            await client.GetAsync("/api/tokens/", HttpCompletionOption.ResponseHeadersRead)
            .ConfigureAwait(false);
        response.EnsureSuccessStatusCode();

        response =
            await client.PostAsJsonAsync("/api/conversations/", new object())
            .ConfigureAwait(false);
        response.EnsureSuccessStatusCode();

        var conversationInfo =
            await response.Content.ReadAsAsync<JObject>()
            .ConfigureAwait(false);

        _conversationId = (string)conversationInfo["conversationId"];
        var scopedToken = (string)conversationInfo["token"];

        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("BotConnector", scopedToken);

BOT框架

 public async Task None(IDialogContext context, LuisResult result)
    {
        try
        {...............}

感谢您的预支!

botframework direct-line-botframework
2个回答
1
投票

正如@Fei Han所说,自定义标题被剥离并且没有到达应用程序,因此这不是发送信息的好方法。

在活动上发送自定义数据的好方法是通过渠道数据。对于非Direct Line频道,有一个关于如何做here的教程。幸运的是,对于Direct Line,没有预先格式化的channelData属性上的数据,您需要保留JSON,因此您可以根据需要实际构建数据。


0
投票

我想将我的BOT框架Directline API与其他标题属性以及直接线密码一起调用。如何在我的BOT框架代码中提取它并将其放在IBOTStore中以备将来使用。

根据我的测试,我们在Direct Line API请求中指定的其他自定义标头将被剥离,bot应用程序将不会收到自定义标头。

如果您想传递一些有用的信息并将其保存在Bot数据存储中,以便您可以在机器人应用程序中的LUIS对话框或其他代码逻辑中检索它。您可以尝试通过Direct Line API发送event活动,在请求正文中指定有用信息,然后在您的bot应用程序中,您可以从event活动中提取数据并将数据存储在UserDataConversationData

© www.soinside.com 2019 - 2024. All rights reserved.