问题标签 [botbuilder]

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 回答
809 浏览

botframework - 如何使用机器人框架为机器人获取用户的 Facebook 电子邮件?

我有一个正在 Microsoft Bot Framework 帮助下构建的机器人。我可以看到 session.message.user.id 为我们提供了用户 ID,而 session.message.user.name 为我们提供了用户名,但如果我要将其与 Facebook 连接,我如何获取用户的电子邮件?

提前感谢您的帮助

0 投票
1 回答
101 浏览

botframework - 是否有 REST 样式的 API 可用于在 Microsoft Bot Framework 中自动注册机器人?

我想在 MS Bot Framework ( https://dev.botframework.com/bots/new ) 中自动注册机器人,但我找不到任何 REST 端点或客户端库来这样做。

是否可以自动注册机器人?还是必须通过门户网站手动完成?

0 投票
1 回答
242 浏览

bots - 当我单击卡片中的按钮时,如何识别特定的附件?

我正在做一个机器人项目。我怎样才能实现这样的功能?

在此处输入图像描述

在这里,当我单击 Search Flights 的 Show Me 按钮时,它会提供航班相关信息,当我单击 Search Hotel 的 Show Me 按钮时,它会提供酒店相关信息。

在我当前的工作机器人中,当我现在单击“保留”时(如上图中的“显示我”按钮),我收到的 JSON 响应没有所选附件的信息,如下图所示。

在此处输入图像描述

那么,我怎样才能在我的机器人中做同样的事情呢?

为此,我在我的项目中编写以下代码行

0 投票
1 回答
68 浏览

node.js - Bot Builder Messenger 按钮在点击对话流时未正确路由

我有一个带有多个卡片和按钮的 HeroCard 轮播。如果在显示轮播后立即点击这些按钮,则会正确路由。但是,如果在对话的稍后阶段点击它们,则路由不起作用。

如果按钮被不按顺序轻按(即在显示轮播后的某个时间而不是立即轻按),我如何才能让按钮正确路由对话?

0 投票
1 回答
401 浏览

.net - 在 Azure 上发布机器人 V3 后使用 Bot Framework Emulator 时出错

我使用 Bot Builder 1.1.0 版创建了一个非常简单的机器人,它在本地和在 Azure 上发布后都运行良好。但是,当我更改为版本 3(并更改了相应的代码)时,我的机器人在本地工作,但在我在 azure 上发布后它无法正常工作(在机器人模拟器上)。我不知道我是否以错误的方式使用模拟器,或者我是否错误地发布了它。

我更改了 webconfig 的 BotId、MicrosoftAppId 和 MicrosoftAppPassword 标签。

当我在 Azure 页面上使用“测试与您的机器人的连接”按钮时,它会响应“已接受”。

在模拟器上,我将 Bot Url 用作“ https://XXXXXX.azurewebsites.net/api/messages ”,将 Emulator URL 用作“ http://localhost:9000/ ”以及相应的 AppId 和 AppPassword。模拟器的版本是3.0.0.59

当我尝试发起对话时,我收到 500 InternalError {"An error has occurred"}

有什么问题的任何想法?

谢谢

0 投票
1 回答
863 浏览

node.js - Docker 上的 Bot 框架模拟器和 Bot Builder for Node.js 的其他问题

我正在努力使bot-framework-emulator和 Bot Builder for Node.js Builder 在 Linux 下工作。

由于 Linux 的 bot-framework-emulator 需要单声道,我决定在 Docker 下使用以下 Dockerfile 运行它:

我用命令启动它(也暴露端口 9000):

docker run -it --rm -p 9000:9000 bfemulator

它开始很好,似乎工作。这是第一个问题。bot-framework-emulator页面声明:

对于在 Mac 和 Linux 上开发的人们,我们创建了一个仅使用单声道的控制台版本。

这是否意味着它不包含作为 bot emu 的 Windows 变体的 Web 界面?因为netstat -al报告 BFEmulator.exe 正在侦听端口 9000,但是当我访问 localhost:9000 时无法从 docker 主机访问。从 docker 容器内部也无法访问它。

第二个问题是我什至不能使用 BFEmulator 的控制台模式。在我的主机上,我正在运行 nodejs docker bot 示例,该示例在部署到“Microsoft Bot Framework”时运行良好。

这是示例代码:

但是当使用 BFEmulator 运行时,上面的 bot 服务器会报告:

我知道v3/botstate/emulator/users在机器人示例中没有声明路径。所以我的问题是可以将模拟器与nodejs bot builder一起使用吗?

0 投票
1 回答
3578 浏览

c# - 区分是否在 Microsoft Bot Framework 中使用 context.Call() 或 context.Forward() 调用了 IDialog

我在使用 MS bot 框架构建的 bot 中有一个子对话框,其开头如下 - 标准方式:

使用两种不同的方式调用此对话框,具体取决于用户在上一个屏幕中是点击显示“航班”的按钮还是立即输入航班号。这是父对话框中的代码:

问题:我如何(从内部FlightsDialog)知道该对话框是否是使用context.Call()or调用的context.Forward()?这是因为在 的情况下context.Forward()StartAsync()不应输出要求用户输入航班号的提示 - 他们已经这样做了。

我最好的想法是在ConversationData或用户数据中保存一个标志,如下所示,并从 IDialog 访问它,但我认为可能有更好的方法?

0 投票
1 回答
332 浏览

c# - Bot Framework 中的错误 500,InvalidOperationException:异步模块或处理程序已完成,而异步操作挂起

我有一个使用 C# / MS Bot Framework 构建的机器人,它在 Azure 上运行。它工作正常,但 Azure 中的 HTTP 日志显示大量失败的 HTTP 请求,约占总数的 20%。

当我启用失败的请求跟踪时,这就是我在日志中看到的:

网址:/api/messages

在执行当前 Web 请求期间生成了未处理的异常。可以使用异常堆栈跟踪来识别有关异常起源和位置的信息

[InvalidOperationException:异步模块或处理程序已完成,而异步操作仍处于挂起状态。]

我无法从日志中提取更多详细信息,包括堆栈跟踪(它是空的)。

该机器人也在模拟器中正常工作。通过 Facebook 与机器人交谈时会出现失败的请求,即使用户可以与机器人正常交互,尽管请求看似失败。

我无法弄清楚代码的哪一部分甚至可能导致这个问题,而我的其他机器人似乎没有这个问题。

我怀疑可能是我context.Done(this)用来终止对话,但这似乎是使用它的正常做法。

代码的哪一部分可能导致此问题的任何指针或想法,或如何提取有关错误的更多详细信息,将不胜感激。谢谢。

0 投票
0 回答
262 浏览

c# - 如何在 BotBuilder 上的 FormFlow 期间不提示?

我正在尝试设计一个 FormFlow,其中一个字段是很难处理的自由文本。提示用户描述一项,但是:

  • 描述必须至少 200 字长
  • 不应要求描述作为单个消息发送

所以我做了一个字符串字段,提示用户输入描述。如果描述太短,我会根据前一个字段使用FieldReflectorwith再次提示输入更多文本。.SetActive

问题是我不知道如何默默地做到这一点(我宁愿只在第一次警告最少的单词量,然后继续抓取内容直到满足长度要求)。

我还尝试validate在每次验证检查时使用 , 修改在其他地方聚合输入。但是通过这种方式,机器人也必须在下一次尝试之前(显然)说出一些反馈。

我必须设计一种巧妙的方法来停止填充此字段,可能会检测到停止使用 LUIS 的意图,但目前的目标是使此字段易于填充多条消息并且不会中断。

0 投票
1 回答
282 浏览

c# - 任务不工作的 BotBuilder 异步计数器实现

我试图通过保持响应直到消息变得稀疏来使我的 Bot 更加流畅。

我的想法很简单:每次收到消息时,我都会生成一个延迟任务来通知未来我是否应该回复最近的活动。

问题是,_patience计数器只会增加而不会减少,我不知道为什么。我在没有提及框架的情况下发布了这个问题,但是在尝试找到带有控制台应用程序的 MWE 之后,一切正常。现在我相信有些东西与框架保存状态的方式有关,但我不确定。

_patience您可以通过发送一些消息然后Ping在 Bot Emulator 中发送一些活动来证明这一点只会增加。