问题标签 [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.
botframework - 如何使用机器人框架为机器人获取用户的 Facebook 电子邮件?
我有一个正在 Microsoft Bot Framework 帮助下构建的机器人。我可以看到 session.message.user.id 为我们提供了用户 ID,而 session.message.user.name 为我们提供了用户名,但如果我要将其与 Facebook 连接,我如何获取用户的电子邮件?
提前感谢您的帮助
botframework - 是否有 REST 样式的 API 可用于在 Microsoft Bot Framework 中自动注册机器人?
我想在 MS Bot Framework ( https://dev.botframework.com/bots/new ) 中自动注册机器人,但我找不到任何 REST 端点或客户端库来这样做。
是否可以自动注册机器人?还是必须通过门户网站手动完成?
node.js - Bot Builder Messenger 按钮在点击对话流时未正确路由
我有一个带有多个卡片和按钮的 HeroCard 轮播。如果在显示轮播后立即点击这些按钮,则会正确路由。但是,如果在对话的稍后阶段点击它们,则路由不起作用。
如果按钮被不按顺序轻按(即在显示轮播后的某个时间而不是立即轻按),我如何才能让按钮正确路由对话?
.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"}
有什么问题的任何想法?
谢谢
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一起使用吗?
c# - 区分是否在 Microsoft Bot Framework 中使用 context.Call() 或 context.Forward() 调用了 IDialog
我在使用 MS bot 框架构建的 bot 中有一个子对话框,其开头如下 - 标准方式:
使用两种不同的方式调用此对话框,具体取决于用户在上一个屏幕中是点击显示“航班”的按钮还是立即输入航班号。这是父对话框中的代码:
问题:我如何(从内部FlightsDialog
)知道该对话框是否是使用context.Call()
or调用的context.Forward()
?这是因为在 的情况下context.Forward()
,StartAsync()
不应输出要求用户输入航班号的提示 - 他们已经这样做了。
我最好的想法是在ConversationData
或用户数据中保存一个标志,如下所示,并从 IDialog 访问它,但我认为可能有更好的方法?
c# - Bot Framework 中的错误 500,InvalidOperationException:异步模块或处理程序已完成,而异步操作挂起
我有一个使用 C# / MS Bot Framework 构建的机器人,它在 Azure 上运行。它工作正常,但 Azure 中的 HTTP 日志显示大量失败的 HTTP 请求,约占总数的 20%。
当我启用失败的请求跟踪时,这就是我在日志中看到的:
网址:/api/messages
在执行当前 Web 请求期间生成了未处理的异常。可以使用异常堆栈跟踪来识别有关异常起源和位置的信息
[InvalidOperationException:异步模块或处理程序已完成,而异步操作仍处于挂起状态。]
我无法从日志中提取更多详细信息,包括堆栈跟踪(它是空的)。
该机器人也在模拟器中正常工作。通过 Facebook 与机器人交谈时会出现失败的请求,即使用户可以与机器人正常交互,尽管请求看似失败。
我无法弄清楚代码的哪一部分甚至可能导致这个问题,而我的其他机器人似乎没有这个问题。
我怀疑可能是我context.Done(this)
用来终止对话,但这似乎是使用它的正常做法。
代码的哪一部分可能导致此问题的任何指针或想法,或如何提取有关错误的更多详细信息,将不胜感激。谢谢。
c# - 如何在 BotBuilder 上的 FormFlow 期间不提示?
我正在尝试设计一个 FormFlow,其中一个字段是很难处理的自由文本。提示用户描述一项,但是:
- 描述必须至少 200 字长
- 不应要求描述作为单个消息发送
所以我做了一个字符串字段,提示用户输入描述。如果描述太短,我会根据前一个字段使用FieldReflector
with再次提示输入更多文本。.SetActive
问题是我不知道如何默默地做到这一点(我宁愿只在第一次警告最少的单词量,然后继续抓取内容直到满足长度要求)。
我还尝试validate
在每次验证检查时使用 , 修改在其他地方聚合输入。但是通过这种方式,机器人也必须在下一次尝试之前(显然)说出一些反馈。
我必须设计一种巧妙的方法来停止填充此字段,可能会检测到停止使用 LUIS 的意图,但目前的目标是使此字段易于填充多条消息并且不会中断。
c# - 任务不工作的 BotBuilder 异步计数器实现
我试图通过保持响应直到消息变得稀疏来使我的 Bot 更加流畅。
我的想法很简单:每次收到消息时,我都会生成一个延迟任务来通知未来我是否应该回复最近的活动。
问题是,_patience
计数器只会增加而不会减少,我不知道为什么。我在没有提及框架的情况下发布了这个问题,但是在尝试找到带有控制台应用程序的 MWE 之后,一切正常。现在我相信有些东西与框架保存状态的方式有关,但我不确定。
_patience
您可以通过发送一些消息然后Ping
在 Bot Emulator 中发送一些活动来证明这一点只会增加。