无法使用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获取了令牌。 而且我可以在网页上看到聊天窗口,但是说connecting一段时间后,它变成了Taking longer than usual to connect,就像这样:

the chat looks like this now

在Chrome控制台中,出现错误消息Failed to connect Error: Connection response code 500。当我检查Chrome的“网络”标签时,可以看到生成的令牌的状态为200,并且websocket连接处于打开状态,如下所示:

enter image description here

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

我刚刚注意到,当使用网络浏览器转到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为假的原因?

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

解决方法

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

请确保您验证以下内容:

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

请检查troubleshooting guide,它似乎今天已更新。 (仍旧的日期反映了一些方式,不确定原因)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...