首页 > 解决方案 > 当我在任何浏览器中将 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 的消息时,它会向我发送错误消息。

标签: javascriptbotframeworkazure-language-understandingweb-chat

解决方案


只是为了确认 WebChatYOUR_SECRET_HERE和 DirectLineYOUR_DIRECT_LINE_SECRET应该是两个不同的值。

在您能够检索值之前,YOUR_DIRECT_LINE_SECRET您需要通过 Azure 门户 > MyBot 资源 > 通道将您的机器人连接到 Direct Line 通道,有关如何执行此操作的详细说明可在此处获得。

作为旁白

将来,如果您可以发布详细的错误消息(在本例中来自开发人员工具的控制台日志)来演示您遇到的错误,而不仅仅是说“它不起作用”,那将非常有帮助。

这里有问题指南。


推荐阅读