首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BOT框架带有标头属性的Directline调用

BOT框架带有标头属性的Directline调用
EN

Stack Overflow用户
提问于 2018-08-30 20:59:07
回答 2查看 442关注 0票数 0

我想调用我的BOT框架Directline,它具有附加的标头属性以及直接行的秘密。如何在我的BOT框架代码中提取它,并将其放在IBOTStore中供将来使用。我想知道是否可以在意图级别中读取header属性?

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

代码语言:javascript
复制
 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框架

代码语言:javascript
复制
 public async Task None(IDialogContext context, LuisResult result)
    {
        try
        {...............}

感谢您的提前支持!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-05 17:26:37

正如@Fei所述,自定义标头被剥离,无法到达应用程序,因此这不是发送信息的好方法。

在活动上发送自定义数据的一个好方法是通过通道数据。对于非直接线路频道,有一个关于如何做这里的教程.幸运的是,对于Direct,对于channelData属性上的数据没有预先格式化的模式,您需要将JSON保存在其中,因此您可以从本质上形成您想要的数据。

票数 1
EN

Stack Overflow用户

发布于 2018-08-31 05:51:50

我想调用我的BOT框架Directline,它具有附加的标头属性以及直接行的秘密。如何在我的BOT框架代码中提取它,并将其放在IBOTStore中供将来使用。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52105266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档