我想调用我的 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);
机器人框架
public async Task None(IDialogContext context, LuisResult result)
{
try
{...............}
感谢您的提前支持!!
正如@Fei Han 所说,自定义标头被剥离并且不会到达应用程序,因此这不是发送信息的好方法。
发送活动自定义数据的一种好方法是通过通道数据。对于非 Direct Line 频道,此处提供了有关如何执行此操作的教程。幸运的是,对于 Direct Line,channelData 属性上的数据没有预先格式化的架构,您需要将 JSON 保存在其中,因此您基本上可以根据需要形成数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句