【发布时间】: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