无法使用 Direct Line 连接 (500) 到机器人框架

Failed to connect (500) to bot framework using Direct Line

我们在 Azure(Web App Bot)中有一个机器人 运行,我正试图将其嵌入网站。该机器人基于 Bot Builder V4 SDK Tamplate CoreBot v4.9.2。起初我使用 iframe 嵌入 bod。这有效但没有提供我们需要的功能,所以现在我将其更改为使用 DirectLine。

我在网页上的代码如下所示:

<script crossorigin="anonymous"
    src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>

<div id="webchat" role="main"></div>

<script>
  (async function () {
    const res = await fetch('https://[my bot name here].azurewebsites.net/.bot/v3/directline/tokens/generate', 
      {
        method: 'POST',
        headers: new Headers({
          'Authorization': "Bearer [my token here]"
        })
      });
    const { token } = await res.json();

    window.WebChat.renderWebChat(
      {
        directLine: await window.WebChat.createDirectLineAppServiceExtension({
          domain: 'https://[my bot name here].azurewebsites.net/.bot/v3/directline',
          token
        })
      },
      document.getElementById('webchat')
    );

    document.querySelector('#webchat > *').focus();
  })().catch(err => console.error(err));
</script>

经过一番努力,我设法从 https://[my bot name here].azurewebsites.net/.bot/v3/directline 获取了一个令牌。 我可以在我的网页上看到聊天 window,但是说了一会儿 connecting 然后它变成了 Taking longer than usual to connect,像这样:

在 Chrome 控制台中有一个错误提示 Failed to connect Error: Connection response code 500。当我检查 Chrome 的网络选项卡时,我可以看到生成的令牌已完成,状态为 200,并且 websocket 连接已打开,如下所示:

------------编辑---------

我刚刚注意到,当使用网络浏览器转到 https://[my bot name here].azurewebsites.net/.bot 时,结果 json 是

{"v":"1.0.0.0.55fa54091a[some key?]","k":true,"ib":false,"ob":false,"initialized":true}

ib 和 ob 应该为真但为假,这可能是问题的一部分。

------------编辑 2-------- 好的,现在我开始发疯了。 Ashish 帮助了我,在某些时候 ib 和 ob 是真的。昨天的大部分时间都是如此。在昨天的某个时候,他们在短时间内(不超过 2 小时)变成了错误。我检查了是否有人触发了发布管道,但没有最近的发布。在那之后 ib 和 ob 再次神奇地变为真并连接到直线再次工作。

今天早上 ib 和 ob 又是假的。再次没有最近的版本。我不知道是什么原因造成的。

有人知道这里发生了什么或如何解决这个问题吗?我如何找到导致 ib 和 ob 为假的原因?

感谢任何帮助!提前致谢。如果您需要更多信息,请询问,我会 post 提供。

如果 *.bot 端点显示的 ib 和 ob 值为 false,这意味着 bot 和 Direct Line 应用服务扩展无法相互连接。

确保您验证以下内容:

  1. 仔细检查使用命名管道的代码已经添加到 机器人。
  2. 确认机器人能够启动并且完全 运行。有用 工具是在 WebChat 中测试,连接一个额外的频道,远程 调试或日志记录。
  3. 重新启动整个 Azure App Service 机器人 托管在其中,以确保所有进程的干净启动。

请查看troubleshooting guide,好像今天更新了。 (仍然旧日期反映了一些如何,不知道为什么)