- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 microsoft/BotFramework-WebChat ,但我无法正确滚动它。
通常当机器人响应时,用户被迫手动滚动到聊天记录的底部。
我找不到任何关于钩子(Hook)的文档,可以让我调用 API 来滚动它。
有没有办法让聊天窗口自动滚动?
HTML:
<div id="bot-button" style="display:none" >
<p id="need-help" class="triangle-isosceles">Hey! Need any help?</p>
<div id="bot-open" token="temptoken">
<span>
<img id="avatar" src="/img/avatar.png"/>
<i id="message-count">2</i>
</span>
</div>
<div id="bot-close"><img src="/img/close.png" height="20px"/>Close</div>
<div id="webchat" role="main"></div>
</div>
<script src="https://cdn.botframework.com/botframework-webchat/master/webchat.js"></script>
<script src="/js/chat.js"></script>
JavaScript:
(async function () {
// In this demo, we are using Direct Line token from MockBot.
// To talk to your bot, you should use the token exchanged using your Direct Line secret.
// You should never put the Direct Line secret in the browser or client app.
// https://learn.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-direct-line-3-0-authentication
var bearer_token = document.getElementById("bot-open").getAttribute("token");
const res = await fetch('https://directline.botframework.com/v3/directline/tokens/generate', {
method: 'POST',
headers: {
"Authorization": "Bearer " + bearer_token
}
});
const {
token
} = await res.json();
// We are using a customized store to add hooks to connect event
const store = window.WebChat.createStore({}, ({
dispatch
}) => next => action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
// When we receive DIRECT_LINE/CONNECT_FULFILLED action, we will send an event activity using WEB_CHAT/SEND_EVENT
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
value: {
language: window.navigator.language
}
}
});
}
return next(action);
});
const styleOptions = {
bubbleBackground: 'rgba(0, 0, 255, .1)',
bubbleFromUserBackground: 'rgba(0, 255, 0, .1)',
hideUploadButton: true,
botAvatarInitials: 'DA',
};
window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({
token
}),
userID: guid(),
store,
styleOptions
}, document.getElementById('webchat'));
sizeBotChat();
document.querySelector('#webchat > *').focus();
})().catch(err => console.error(err));
function sizeBotChat() {
let bot_container = document.getElementById("bot-button");
if (isMobileDevice()) {
bot_container.style.width = "100%";
bot_container.style.bottom = "0px";
bot_container.style.right = "0px";
let max_height = screen.height - 50;
document.getElementById("webchat").style.maxHeight = max_height + "px";
console.log(screen.height);
} else {
bot_container.style.width = "400px";
bot_container.style.right = "50px";
document.getElementById("webchat").style.maxHeight = "400px";
}
}
CSS (通过在 head 元素中插入链接的 javascript 加载):
.triangle-isosceles {
position: relative;
padding: 15px;
color: black;
background: white;
border-radius: 10px;
}
/* creates triangle */
.triangle-isosceles:after {
content: "";
display: block;
/* reduce the damage in FF3.0 */
position: absolute;
bottom: -15px;
right: 30px;
width: 0;
border-width: 15px 15px 0;
border-style: solid;
border-color: white transparent;
}
#avatar {
height: 50px;
}
#need-help {
display: none;
}
/* based on badge progress-bar-danger from bootstrap */
#message-count {
display: inline-block;
min-width: 10px;
padding: 3px 7px 3px 7px;
font-size: 12px;
font-weight: 700;
line-height: 1;
color: white;
text-align: center;
white-space: nowrap;
vertical-align: middle;
border-radius: 10px;
background-color: #d9534f;
position: relative;
top: -20px;
right: 20px;
}
#bot-button {
position: fixed;
bottom: 50px;
right: 0px;
width: 100%;
}
#bot-open {
height: 50px;
width: 100%;
text-align: right;
}
#bot-close {
background-color: blue;
background-image: url("https://localhost/img/avatar.png");
background-repeat: no-repeat;
color: white;
height: 22px;
display: none;
height: 50px;
padding: 15px 15px 0 0;
text-align: right;
vertical-align: middle;
}
/* hide chat on load */
#webchat {
display: none;
max-height: 400px;
overflow: scroll;
}
#webchat div.row.message {
margin: 0;
}
最佳答案
如果用户没有向上滚动,开发人员将 WebChat 设计为将对话滚动到底部。如果用户向上滚动,当机器人发送新消息时,聊天的右下角应该会出现一个“新消息”按钮。
您可以通过使用自定义中间件(看起来您已经是)来修改此行为,并在用户收到来自机器人的消息时将对话中的最后一个元素滚动到 View 中。请参阅下面的代码片段。
const store = window.WebChat.createStore(
{},
({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
document.querySelector('ul[role="list"]').lastChild.scrollIntoView({behavior: 'smooth', block: 'start'});
}
...
return next(action);
}
);
希望这对您有所帮助!
关于html - Microsoft BotFramework-WebChat 滚动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55121857/
有没有办法将 Onchange 事件添加到网络聊天(版本 V4)中呈现的自适应卡片输入字段中。在结帐屏幕中更改数量值(数字类型的自适应卡输入字段)的示例应更新总计值(自适应卡文本字段) 为了保持简单.
有没有办法将 Onchange 事件添加到网络聊天(版本 V4)中呈现的自适应卡片输入字段中。在结帐屏幕中更改数量值(数字类型的自适应卡输入字段)的示例应更新总计值(自适应卡文本字段) 为了保持简单.
我使用 Microsoft Bot Framework 开发了一个聊天机器人,并通过 DirectLine 将其包含在我的网站中: BotChat.App({
我想换聊天头像,还有bot的头像,但是设置背景图不行 var styleSet = window.WebChat.createStyleSet({ backgroundColor: '#f3f
我正在使用自定义的 Microsoft Bot 框架 WebChat Client .当我的机器人无法为用户提供解决方案时,它能够与代理进行实时聊天服务。 我需要允许代理“先睹为快”当前正在输入 We
我正在使用 microsoft/BotFramework-WebChat ,但我无法正确滚动它。 通常当机器人响应时,用户被迫手动滚动到聊天记录的底部。 我找不到任何关于钩子(Hook)的文档,可以让
我正在尝试将此网络聊天小部件连接到 rasa ( https://github.com/mrbot-ai/rasa-webchat ),但我得到了这个 error在我的控制台中,还有这个 error在
我正在使用 Microsoft 的 C# Bot 框架开发一个机器人。在他/她发送任何内容之前,我试图向用户发送一条欢迎消息作为介绍。 经过研究,我使用 HandleSystemMessage 函数并
我有一个机器人,当使用模拟器时可以在本地运行,但如果我尝试使用 WebChat 或 Skype。它只能以一种方式工作(也就是说,请求来自网络聊天和 Skype,但不会返回给它们)。我的代码更复杂,但当
var response = MessageFactory.Attachment(new Attachment { Name = @"application.png", Conte
我需要维护聊天历史记录,并在页面刷新或关闭并打开窗口后将它们加载回窗口中。 问题:按钮/轮播/自适应卡/英雄卡事件/属性未加载(即,当我单击按钮或任何事件时,操作未发生)。描述:为了达到要求,我有两个
所以,我正在按照教程 here 进行操作关于如何设置 Twilio Flex WebChat。虽然它确实有效,但我稍后需要更改友好名称。 我的应用程序的工作方式是,它在用户登录之前显示网络聊天,因为脚
我们的网站上有一个网络聊天窗口,可以最小化/重新打开(这会保留相同的 token ,如果仍然有效)或关闭/重新打开(这确保我们检索新的 token )。当我们向机器人发送特定事件时,我们的机器人应该向
我正在努力实现网络聊天,并提出了一个我希望可以轻松解决的问题。 如何更改发件人/收件人的颜色以区分它们?我试图将颜色保存到我的数据库中,但问题是我如何确定我是发送者,接收者的颜色需要不同。 这就是我实
通过否决 BotFramework 网络聊天客户端的 defaultStyleOptions.js,我正在自定义客户端。这对一部分来说效果很好。将鼠标悬停在自适应卡片操作上或悬停发送按钮时,我无法修改
我在 Node.js 中使用 botbuilder 创建了一个简单的聊天机器人。由于给定的环境,我通过自定义 iframe 包含了聊天机器人。前端是带有 DirectLine 的 WebChat。如何
我需要帮助使用来自 Microsoft 的 BotFramework 的 webchat v4 通过 Javascript 将消息发送回机器人。 我的机器人代码是用 C# (.NET Framewor
我正在尝试发送以下消息 this指南,但我得到 403。该机器人使用 Web App Bot 模板部署在 Azure 上。 我获得了不记名 token curl -X POST \ https:/
按照我能找到的与网络聊天和直线相关的所有 MS 指南,但无论我从 botchat.js 尝试什么,我都会不断收到以下错误: Object doesn't support property or met
我正在尝试将表情符号添加到机器人的网络聊天响应中。我试过 Markdown ,但这似乎不起作用。在 WebChat 的响应中包含表情符号的最佳方式是什么? 最佳答案 要使用表情符号,您可以使用 Uni
我是一名优秀的程序员,十分优秀!