我们的聊天机器人的一些答案很长。网络聊天会自动滚动到底部,因此用户必须向上滚动才能到达气泡顶部并开始阅读。
我已经实现了一个自定义渲染器 (react) 来将答案包装到一个自定义组件中,该组件只是将答案包装到一个 div 标签中。我还实现了一段简单的代码来滚动到气泡的顶部。
const MyCustomActivityContainer = ({ children }) => {
const triggerScrollTo = () => {
if (scrollRef && scrollRef.current) {
(scrollRef.current as any).scrollIntoView({
behavior: 'smooth',
block: 'start',
})
}
}
const scrollRef: React.RefObject<HTMLDivElement> = React.createRef()
return (
<div ref={ scrollRef } onClick={ triggerScrollTo }>
{ children }
</div>
)
}
export const activityMiddleware = () => next => card => {
if (/* some conditions */) {
return (
<MyCustomActivityContainer>
{ next(card) }
</MyCustomActivityContainer>
); …Run Code Online (Sandbox Code Playgroud) 我有一个问题问你,
我已经在python中构建了一个bot,我需要知道是否有办法(或使用REST API的服务)将其嵌入到网站中.我不想使用slack/telegram/facebook messanger和其他人作为通信渠道.我想在网站上使用聊天环境,但我真的不想自己编写,我曾试图要求LiveChat,Chatlio和Tawk等服务,但支持说没有API.我正在考虑建立自己的聊天,但这需要花费大量时间.添加功能是非常好的,如果机器人无法回答问题,人工代理可以回答它.
从哪里可以开始?有什么建议?非常感谢你.
有谁知道如何在 QnA maker 中为答案添加 URL 链接?
就目前而言,我只能看到您可以添加直接文本。
如何在上一个 BotChat 对话中禁用输入/提交按钮操作 - Microsoft Bot Framework (C#) 中的 AdaptiveCards
我从我的机器人(.NET SDK)发送一个名为“locationRequest”的事件
Activity activity = new Activity
{
Type = ActivityTypes.Event,
Name = "locationRequest"
};
await stepContext.Context.SendActivityAsync(activity, cancellationToken);
Run Code Online (Sandbox Code Playgroud)
我想根据 React 中编码的 minizable-web-chat 在 WebChat 客户端应用程序中捕获此事件,并将布尔 locationRequested 设置为 True:
const store = createStore({}, ({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
}
});
}
else if(action.name == 'locationRequest'){
this.setState(() => ({
locationRequested: true
}));
}
return next(action);
});
Run Code Online (Sandbox Code Playgroud)
我无法赶上这个事件,有什么想法吗?
我正在尝试使用自适应卡,将其添加到我的路易斯响应中,并遵循指南:https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-add-富卡附件.
为什么我的按钮没有显示在我的机器人模拟器上?我错过了什么吗?看图:
我的代码:
[LuisIntent("Test")]
public async Task Test(IDialogContext context, LuisResult result)
{
Activity replyToConversation = (Activity)context.MakeMessage();
//Activity replyToConversation = message.CreateReply("Should go to conversation");
replyToConversation.Attachments = new List<Attachment>();
AdaptiveCard card = new AdaptiveCard();
// Add text to the card.
card.Body.Add(new TextBlock()
{
Text = "Adaptive Card design session",
Size = TextSize.Large,
Weight = TextWeight.Bolder
});
// Add text to the card.
card.Body.Add(new TextBlock()
{
Text = "Conf Room 112/3377 (10)"
});
// Add text to the card. …Run Code Online (Sandbox Code Playgroud) 我需要帮助使用来自 Microsoft 的 BotFramework 的 webchat v4 通过 Javascript 将消息发送回机器人。
我的机器人代码是用 C# (.NET Framework) 编写的,但在我的场景中的某个时刻,我需要触发一些 JavaScript 来向用户询问位置。我该怎么办?
const store = window.WebChat.createStore({},
({ dispatch }) => next => action => {
//console.log('action of type ' + action.type);
if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
var activityOut = action.payload.activity;
if (activityOut.type === 'message') {
// Store message
return next(action);
}
if (activityOut.type === 'event') {
// Handle based on event type
if (activityOut.name === 'getLocation') {
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition); …Run Code Online (Sandbox Code Playgroud) 任何人都可以向我解释创建网络聊天的可能性(即类似于whatsappweb),它可以在没有互联网连接的情况下工作,这些设备通过WiFi或蓝牙(即点对点)进行通信的唯一可能方式.如果地球上不可能那么可以解释为什么?
我遇到过像peer.js这样的javascript文件.但我认为它使用互联网.我希望它没有互联网连接.
提前致谢.
我需要一种在我的 angular 5 应用程序中嵌入网络聊天的方法。我已经尝试过这里描述的非反应网站方式:https : //github.com/Microsoft/BotFramework-WebChat 并且它有效。
有没有办法只使用组件而不是加载整个 js 文件来获取我的 Angualar 5 应用程序中的聊天窗口?
有没有办法将 Onchange 事件添加到在网络聊天(版本 V4)中呈现的自适应卡片输入字段。在结帐屏幕中更改数量值(类型为数字的自适应卡片输入字段)的示例应更新总值(自适应卡片文本字段)
为了简单起见......在下图中,一旦我更改了输入框中的数字,它应该在下面的文本框中更新。一切都应该发生在网络聊天 V4(React) 客户端

以下是我尝试过的选项,这里没有任何代码可以提交:
选项 1:尝试使用中间件将事件添加到来自机器人的卡片中的数量输入字段,但无法找到唯一标识输入字段以添加事件的选项(可以根据项目中的项目数量看到多个输入字段卡片)
选项 2:根据来自 bot 的卡片在前端创建一张新卡片,并将事件添加到该新卡片。是否可以中断发送到机器人的消息并从前端发送卡片?
选项3:在卡片上添加更新按钮,以便在后台计算总数并提交更新卡片给用户
下面是有效载荷:
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.0",
"type": "AdaptiveCard",
"body": [
{
"type": "TextBlock",
"text": "Output",
"weight": "Bolder",
"horizontalAlignment": "Center",
"size": "Large",
"id": "output",
"color": "Good"
},
{
"type": "Container",
"items": [
{
"$data": "{items}",
"type": "Container",
"items": [
{
"type": "TextBlock",
"text": " ",
"id": "line",
"spacing": "None"
},
{
"type": "Image",
"altText": "",
"id": "myimage",
"url": "{imgUrl}",
"spacing": "None",
"size": "Stretch",
"width": "1000px",
"height": …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Microsoft Bot Framework项目,以便将聊天机器人添加到我的网站.我需要将数据从聊天UI连续传递到Bot以获取用户详细信息和当前页面详细信息.因此我无法使用Web Chat客户端.
除了创建自己的聊天界面外,我还可以使用哪些其他方法?
我正在创建一个嵌入 iframe 源中的网络聊天。我想要的是更改该 iframe 中每个聊天消息(称为聊天气泡)的背景颜色。
这是我的代码:
<div id="webchat" role="main">
<iframe src='https://webchat.botframework.com/embed/...?s=SECRET_KEY_HERE'
style='min-width: 400px; width: 100%; min-height: 500px;'></iframe>
</div>
<script type="text/javascript">
const styleOptions = {
bubbleBackground: 'rgba(0, 0, 255, .1)',
bubbleFromUserBackground: '#ddd'
};
window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({ secret: 'MY_SECRET_KEY_HERE' }),
// Passing "styleOptions" when rendering Web Chat
styleOptions
}, document.getElementById('webchat'));
</script>
Run Code Online (Sandbox Code Playgroud)
问题:
我能够看到 Iframe,并且使用专用的密钥我能够聊天;但是,我无法看到应用于聊天气泡和页面加载的样式,我收到此错误:
未捕获的类型错误:无法读取未定义的属性“renderWebChat”
这是什么原因呢?
我想在bot框架下禁用网络聊天中的卡片按钮.例如,在一张卡片我有多个按钮,我想根据一些数据值禁用一些按钮.我怎样才能做到这一点?
web-chat ×13
botframework ×10
c# ×4
javascript ×3
bots ×2
reactjs ×2
angular ×1
asp.net-mvc ×1
button ×1
chatbot ×1
json ×1
p2p ×1
python ×1
react-native ×1