问题标签 [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.
microsoft-cognitive - 无法使用 LUIS API 创建实体层次结构
我们想使用 LUIS api 创建实体层次结构。根据API 文档,我们需要使用 JSON 正文创建一个到 Create Entity Extractor 端点的 POST:
但是,当我们运行此请求时,LUIS 只有一个名为“EntityName”的新实体,没有任何子实体。就好像孩子数组被忽略了。关于发生了什么的任何想法?
c# - 从停止的地方启动 FormFlow
在 AnnotatedSandwichBot 示例之后,可以使用以下方式处理表单填充取消:
当用户突然键入“再见”时,机器人会成功说You quit on FieldName
(以及随后在机器人模拟器上出现 FormCanceledException 的巨大堆栈跟踪)。
但是,如果我只是再说一遍,它将从开头开始表单,而不是从最后完成的步骤开始。我怎样才能使表格从那里开始 - 理想情况下打印“欢迎回来!”之类的东西?
node.js - 有没有人在使用 node.js botbuilder 和 LUIS 时尝试过向人类移交?
有没有人在使用 node.js botbuilder 和 LUIS 时尝试过向人类移交?任何地方都有示例代码吗?
c# - MS Bot Framework 卡在无限循环中发送消息
facebook
我使用 MS Bot Framework 的机器人在通道和emulator
通道上都陷入了无限循环向用户发送消息的问题。
我的机器人有一个 "root" ,有点像菜单,根据用户的选择IDialog
调用其他几个s。IDialog
子对话框以这种方式调用:
response
是IMessageActivity
用户发送的;ChildDialogComplete
是一种重新构建主菜单并以这些行结束的方法:
.
除了这个非常短的对话框之外,所有对话框都可以正常工作,这会导致无限循环 - 机器人会一次又一次地发送此消息,直到我停止 Web 应用程序。
}
如果你想知道什么SendCardToChat
是:
回顾一下:
- 我正在使用另一个对话框启动一个对话框
context.Forward()
- 该对话框应该向用户显示一条消息并立即终止,无需用户额外输入
- 相反,它不断发送“我们的信息柜台可以提供帮助!” 消息无限。
我最好的猜测是子对话以某种方式将用户的初始消息返回给对话,这会一次又一次地触发相同的对话。但这不应该发生,孩子IDialog
不应该向对话发送任何内容,除了HeroCard
我创建的。
或者,也许我正在寻找错误的方向,而 Bot Framework 只是不支持IDialog
s 做某事并立即终止而没有context.Wait()
?
c# - 执行 context.Wait() 时出现 Bot Framework 错误:值不能为空。参数名称:等待
我有一个带有“根”对话框的机器人,它使用context.Call()
或context.Forward()
取决于用户的选择运行子对话框,如下所示:
子对话框退出后,控件将传递给此方法,ChildDialogComplete
. 它输出一个提示并等待用户的回复。
调试时,方法的最后一行context.Wait()
在模拟器中导致此异常:
异常:System.ArgumentNullException:值不能为空。参数名称:等待Microsoft.Bot.Builder.Internals.Fibers.Fiber1.-PollAsync>d__13.MoveNext()
--- 从先前抛出异常的位置结束堆栈跟踪 ---
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Microsoft.Bot.Builder.Internals.Fibers.Wait 2.Microsoft.Bot.Builder.Internals.Fibers.IAwaiter.GetResult() 在 Microsoft.Bot.Builder.Dialogs。 Chain.LoopDialog1.d__3.MoveNext()
--- 从先前抛出异常的位置结束堆栈跟踪 ---
...等等
ChildDialogComplete
当对话框退出时,“自然”运行时不会发生此错误。它仅在我尝试从根对话框的另一部分手动调用此方法时发生,如下所示:
其中context
和argument
是 IDialog ( IDialogContext context, IAwaitable<IMessageActivity> argument
) 中方法的两个标准参数。
在传递给该方法之前,之前已编辑过argument
。await
但我认为这不是问题,因为异常发生在context.Wait()
似乎与IAwaitable
.
node.js - 具有较低分数意图的 Botframework 响应
我有一个机器人,它使用两个 LUIS 应用程序作为 LuisRecognizers 来猜测客户端的意图。我的问题是为什么机器人会响应得分最低的意图?我仔细检查了这一点,如果我通过 Luis dashbord 手动检查分数,那么我收到类似:分数为 0.92 的 IntentA 和分数为 1 的 IntentB。如果我通过机器人框架传递相同的输入,它会响应分数较低的 IntentA。我错过了什么吗?我尝试使用intentThreshold、recognizeMode 或recognizeOrder,都在文档中提到,但没有收到更好的结果。
node.js - 使用 aiml 与 nodejs 构建聊天机器人
我需要为我的网站客户提供有关所提供课程、费用、课程详情和时间安排等方面的疑问。
有了aiml
,我可以直接把我的业务逻辑放在没有任何 AI 或 ML 的情况下,就像 Microsoft Bot Framework(Node.js
版本)一样,我看到我将不得不编写许多瀑布方法风格的编码链接函数来完成客户查询。
那么我的问题是,如果我手动编写链式函数,它如何变得智能或机器学习?如果我选择使用 Microsoft Bot Framework,我应该在哪里填写我的一系列问题和答案?
我对不同的方法感到困惑。哪种方法适合我的要求?
c# - The type arguments for method IDialogStack.Wait(ResumeAfter resume) cannot be inferred from the usage
I am using an IDialog
in my bot and one of my methods that is executed by the Bot Framework via context.Wait()
had two arguments, as usual:
I want to add a third, optional argument to this method, which I will specify if I run this method directly from some place in my code (as opposed to when the Bot Framework runs it after context.Wait()
and receiving a message from user).
So I change the method as follows:
Because of that, now all the context.Wait
calls are shown as invalid:
That error disappears if I remove the third argument from the method declaration.
The message shown by Visual Studio is:
The type arguments for method IDialogStack.Wait(ResumeAfter resume) cannot be inferred from the usage. Try specifying the type arguments explicitly.
I assume that means I should call context.Wait
as context.Wait<SOMETHING>
, but I have no idea what to write instead of SOMETHING
.
c# - C# | MS 机器人生成器 | DefaultIfException 的使用
我正在尝试查找有关如何在 MS Bot builder SDK 中使用 DefaultIfException 的一些文档。据我所知,没有关于其用法的文档。
我们试图避免向用户发布“对不起,我的机器人代码有问题”的消息。使用 DefaultIfException 执行它所说的并“停止传播异常”,但是我不确定如何发布我自己的错误消息,而不是什么都没有。
如果我们有办法告诉机器人框架使用自定义错误对话框类或类似的东西,那就太好了。
编辑代码示例:
我们的自定义对话框类在哪里,它只是
await Conversation.SendAsync(activity, () => new RootDialog().DefaultIfException());
实现RootDialog()
IDialog<object>
您会注意到,如果您实现IDialog<object>
了您可以访问public async Task StartAsync(IDialogContext context)
. 在这个方法中,我们调用context.Wait(MessageReceivedAsync);
,然后它有:public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
在此方法中,我们处理消息,并将处理包装在 try-catch 中,然后我们在其中处理错误。
需要明确的是——我们实际上并没有使用 DefaultIfException,因为它不允许我们使用自己的错误消息。但是如果你只是想停止错误传播,你可以只使用 DefaulIfException