javascript - 当我在任何浏览器中将 bot 框架 v4 与 js 集成时,LUIS 不起作用
问题描述
我使用我的虚拟助手模板在 C# .net Core SDK v4 中创建了一个聊天机器人,并且网络聊天与 iframe 配合得很好
<iframe src='https://webchat.botframework.com/embed/NAME_OF_BOT?s=YOUR_SECRET_HERE' style='min-width: 400px; width: 100%; min-height: 500px;'></iframe>
但是当我在任何浏览器中将它与 js 集成时,LUIS 不起作用
<div id="webchat" role="main"></div>
<script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
<script>
window.WebChat.renderWebChat(
{
directLine: window.WebChat.createDirectLine({
secret: 'YOUR_DIRECT_LINE_SECRET'
}),
},
document.getElementById('webchat')
);
</script>
我该怎么做才能使它起作用?我已经尝试通过添加 webchat 和 diretcline 的秘密来使其工作
这是它发送给我的错误的位置:
public class DefaultAdapter : BotFrameworkHttpAdapter
{
public DefaultAdapter(
BotSettings settings,
ICredentialProvider credentialProvider,
IBotTelemetryClient telemetryClient,
BotStateSet botStateSet)
: base(credentialProvider)
{
OnTurnError = async (turnContext, exception) =>
{
await turnContext.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"{exception.Message}"));
await turnContext.SendActivityAsync(new Activity(type: ActivityTypes.Trace, text: $"{exception.StackTrace}"));
await turnContext.SendActivityAsync(MainStrings.ERROR);
telemetryClient.TrackException(exception);
};
Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container)));
Use(new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: true));
Use(new ShowTypingMiddleware());
Use(new SetLocaleMiddleware(settings.DefaultLocale ?? "en-us"));
Use(new EventDebuggerMiddleware());
Use(new AutoSaveStateMiddleware(botStateSet));
}
}
在 startup.cs 文件中:
// Configure adapters
// DefaultAdapter is for all regular channels that use Http transport
services.AddSingleton<IBotFrameworkHttpAdapter, DefaultAdapter>();
当机器人进入用户数据请求流(不需要 LUIS 和 QnA)时,它会很好地响应我,但是当我发送需要使用 LUIS 和 QnA 的消息时,它会向我发送错误消息。
解决方案
只是为了确认 WebChatYOUR_SECRET_HERE
和 DirectLineYOUR_DIRECT_LINE_SECRET
应该是两个不同的值。
在您能够检索值之前,YOUR_DIRECT_LINE_SECRET
您需要通过 Azure 门户 > MyBot 资源 > 通道将您的机器人连接到 Direct Line 通道,有关如何执行此操作的详细说明可在此处获得。
作为旁白
将来,如果您可以发布详细的错误消息(在本例中来自开发人员工具的控制台日志)来演示您遇到的错误,而不仅仅是说“它不起作用”,那将非常有帮助。
这里有问题指南。
推荐阅读
- php - 2个数组的粗体保留时间
- visual-studio-code - 关闭在 Visual Studio Code 中调试时出现的错误窗口
- smalltalk - 为什么这个简单的类方法不起作用
- java - 输入菜单屏幕方法始终返回 0
- javascript - 如何修复 requestAnimationFrame() 函数中的参数编辑问题
- javascript - 当仅选中某个复选框时,必须写入 textarea
- c# - 需要将一个类转换为另一个具有不同值集合的类
- jms - 计算 MDB Jms 中的重新交付
- c - 静态数组 - 我应该在哪里定义它?
- ios - ionic 4 应用程序在 ios 上显示白屏,错误代码为 1100