【问题标题】:Failed to connect (500) to bot framework using Direct Line无法使用 Direct Line 将 (500) 连接到机器人框架
【发布时间】:2020-09-01 08:54:32
【问题描述】:

我们有一个在 Azure 中运行的机器人(Web App Bot),我正试图将其嵌入网站。该机器人基于 Bot Builder V4 SDK Tamplate CoreBot v4.9.2。起初我使用iframe 嵌入身体。这可行,但没有提供我们需要的功能,所以现在我将其更改为使用 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 获取了一个令牌。 我可以在我的网页上看到聊天窗口,但是说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 再次神奇地变为 true 并再次连接到直线。

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

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

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

【问题讨论】:

    标签: botframework azure-bot-service direct-line-botframework


    【解决方案1】:

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

    确保您验证以下事项:

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

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

    【讨论】:

    • 感谢您的回复。 ib 和 ob 现在是真的,所以这很好。我遇到了一个新问题,我会尝试自己解决。如果我无法弄清楚,我会回来报告。
    • 现在 ib 和 ob 似乎随机变为 false 并在一段时间后再次变为 true。请参阅问题中的编辑 2。我不知道该怎么办了。
    • @Martijn 我有时会遇到同样的问题,但是在多次刷新页面后,我能够使其正常工作。我认为应用服务配置中常规设置区域中的always on 设置可能会导致此问题。
    猜你喜欢
    • 1970-01-01
    • 2018-03-20
    • 2017-01-26
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2018-08-16
    相关资源
    最近更新 更多