问题标签 [web-chat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
707 浏览

botframework - 在用户开始与我的机器人聊天之前,如何向机器人发送一些初始数据?

我的问题是,如何在用户开始聊天之前代表用户向机器人发送一些数据。

因为不同的客户端会有不同的端点,我希望机器人先获取这个端点并将其保存为 UserState,然后使用这个端点进行 API 调用。

我正在使用“ https://github.com/microsoft/BotFramework-WebChat ”这个网络聊天作为我的客户端,它使用秘密创建直接线路,我是否可以在下面的 html 文件中添加一个发布活动来发送一些数据?

谢谢!

0 投票
1 回答
381 浏览

authentication - 从 HTML 文件中的 JavaScript 向 Bot Framework v4 的 Microsoft Web Chat 控件进行身份验证的正确方法是什么?

我的目标是使用运行此 Microsoft Bot Framework v4 网络聊天控件的 JavaScript 创建一个 HTML 页面

https://github.com/Microsoft/BotFramework-WebChat

如此 StackOverflow 问题的评论中所述

自适应卡中的 Microsoft Bot Framework 图像大小

我试着按照这里的示例代码

https://github.com/compulim/BotFramework-MockBot

具体来说

BotFramework-WebChat-master\samples\01.a.getting-started-full-bundle

但无法让它工作。在上面链接的另一个问题中,微软支持人员告诉我以另一种方式进行身份验证:

您需要在标头中使用 Authorization: Bearer向https://directline.botframework.com/v3/directline/tokens/generate发出 POST 请求。或者,您可以直接使用 const token =

但是,在上面提到的示例代码中,它说

要与您的机器人交谈,您应该使用使用您的 Direct Line 密码交换的令牌。您永远不应该将 Direct Line 密码放在浏览器或客户端应用程序中。

如果上面建议的代码是包含在 HTML 文件中的 JavaScript,那么任何加载该页面的人都可以从查看源代码中看到它。

使用 DirectLine 秘密似乎违反了不公开此秘密的规则,我读过它可以提供对所有对话的访问,而不仅仅是当前对话。

如果普通视图中的 JS 代码使用 DirectLine secret 获取令牌,然后使用令牌进行身份验证,使用令牌似乎没有完成任何事情,因为 DL secret 被暴露了。为什么不直接使用 DL secret?

Microsoft 推荐的最简单的对上面链接的网络聊天控件进行身份验证的方法是什么?

谢谢!

0 投票
1 回答
292 浏览

c# - 对于知识库中不存在的问题,在网络聊天中出现“无法发送重试”错误

我在 C# 中使用 Azure 创建了一个机器人。这个机器人可以很好地解决我知识库中存在的问题。但是当我尝试不同的问题时,它会couldn't send retry在该问题下方给出错误并回复该问题,因为Sorry, my bot code is having an issue. 它应该回复No match found而不是Sorry, my bot code is having an issue. 另一个问题是这个机器人有时会为一些不存在于 Kb 而不是No answer found in KB.

在网络聊天频道中,它显示以下问题 - There was an error sending this message to your bot: HTTP status code InternalServerError。任何帮助将不胜感激。

0 投票
2 回答
358 浏览

botframework - SAPCAI 快速回复显示为附件

我使用 SAPCAI(SAP Conversational AI 是一个类似于 Azure Bot Service 的法国开发平台)来构建我的聊天机器人,但我在我的 Web 应用程序上使用了 Bot-Framework Webchat。因此,我没有任何 C# 或 JS 代码。问题是 SAPCAI 快速回复显示为“附件”。我该如何解决?

预期的 伊姆古尔

得到 伊姆古尔

0 投票
0 回答
1397 浏览

botframework - 如何从网络聊天中隐藏用户消息但从后面发送?

我正在尝试建立用户和代理之间的连接。但是我需要在将输入消息从后面发送到机器人时隐藏它。

我能够连接到同一个对话并“停止”机器人并使用它来发送代理的消息。所以右边是用户的文本,左边是代理的文本(通过机器人)。

我有两个网络聊天,一个用于代理,一个用于用户。

我在用户的网络聊天中使用此代码:

但问题出在代理的网络聊天中。我不知道如何隐藏输入消息,所以现在在代理的网络聊天中,我看到代理消息重复。

在用户 Webchat 中已解决。

但在代理中,我希望是一样的:



现在在我的代理网络聊天中是这样的:



解决方案:

这是关于在 SEND_MESSAGE 类型中发送带有 SEND_MESSAGE_BACK 的消息并将 action.payload.text 设置为空,因此 SEND_MESSAGE 和 POSTBACK 类型的操作不会在右侧打印任何内容。

0 投票
1 回答
472 浏览

node.js - 如何检测 Webchat/DirectLine 中的对话结束?

我在 Node.js 中使用 botbuilder 创建了一个简单的聊天机器人。由于给定的环境,我通过自定义 iframe 包含了聊天机器人。前端是带有 DirectLine 的 WebChat。如何在父窗口中检测到对话框的结束?

我找不到关于如何在 WebChat/DirectLine 中捕捉对话结束的正确方法。

我在 iframe 中使用以下代码呈现我的聊天:

在 Node.JS 中,我使用以下代码结束对话:

运行 endDialog 后,我想提交 iFrame 的父级。谁能给我一些指导?

0 投票
0 回答
164 浏览

botframework - 通过 WebChat 以编程方式将文件发送到机器人

我已将网络聊天插入 webview 以在 android 应用程序中显示机器人,我希望用户将用相机拍摄的照片发送给机器人。

问题是附加文件的默认按钮打开资源管理器而不是相机,所以我实现了一个按钮来启动相机,现在我需要以编程方式将拍摄的图片发送给机器人。

我已经设法使用我自己的网络聊天商店版本向机器人发送文本:

有没有办法做到这一点?

[编辑] 我在WebChat 的代码中看到了类似的文件,但我不确定它是否可以使用以及如何使用:

0 投票
1 回答
1854 浏览

reactjs - 在 React 网站中添加 microsoft/BotFramework-WebChat,合并 Web Chat 组件的自定义构建

我想将https://github.com/Microsoft/BotFramework-WebChat/tree/v3集成到我的反应应用程序中。

我已按照以下方法运行 npm install 但它无法正常工作。我已将我的文件设置为 package.json 中的 botchat.js:

在 Botframework 文档中给出如下

在您的 React 网站中,合并 Web Chat 组件的自定义构建 最简单的方法是克隆(或分叉)此存储库,对其进行更改,构建它,然后在项目的 package.json 中引用您的本地构建,如下所示:

运行 npm install 会将您的本地 repo 复制到 node_modules,并且 import/require 对“botframework-webchat”的引用将正确解析。

你可能还希望使用 npm version 和 npm publish 将你的 repo 发布为它自己的完整的、版本化的 npm 包,无论是私下还是公开。

不同的项目有不同的构建策略,你的可能与上面有很大的不同。如果您想出一种您认为具有广泛应用的不同集成方法,请考虑为此自述文件提交拉取请求。

对于建筑,我遵循以下流程

  • 建立网络聊天
  • 克隆(或分叉)这个 repo
  • npm 安装
  • npm run build(在每次更改的基础上构建 npm run watch,构建生产 npm run prepublish)

这将构建以下内容:

我想自定义我的 Botframework 并执行它

0 投票
1 回答
458 浏览

javascript - Bot Framework:如何阻止 ChoicePrompt 重新提示

我通过 React 开发了一个网页,其中一个 Webchat-Bot 和 React App 交互。React 应用程序包含一个计时器,它应该停止在那一刻运行的任何对话框。它通过 Direct-Line 发送事件来执行此操作。无论如何,我得到了不想要的行为,如果机器人逻辑位于瀑布中,其中步骤是(选择-)提示,则问题会被重新提示。(因为它没有从用户那里收到所需的答案)。我的问题是:

如何阻止 ChoicePrompt 重新提示?

当 Bot 接收到“超时”事件时,它会停止当前对话await endDialog()并开始一个发送新消息的新对话。在下一个用户输入之后,弹出之前的提示。所以我假设,后台的提示仍在等待答案之一,并且因为它没有收到它,所以它会重新开始或重新提示。

我试图将 maxRetries 设置为 0:

弹出事件的代码片段..

0 投票
1 回答
168 浏览

c# - .NET Core 2.2-如何使用反向通道在用户在 Webchat 中键入之前显示机器人欢迎消息

我正在尝试让我的聊天机器人显示初始欢迎消息,而无需用户先键入以在网络聊天中发起对话。

我找到了使用反向通道的解决方案:这里

但由于 ApiController 类已被弃用,.NET core 2.2因此我无法使用此解决方案。

消息控制器.cs

因此,在解决方案中提供的上述示例代码中,当前上下文中不存在“对话”和“请求”。我正在寻找适用于.NET core 2.2.