【发布时间】:2020-11-30 19:15:49
【问题描述】:
我正在构建一个机器人,到目前为止,这种体验对我来说一直充满挑战。这很可能是因为我来自 v1 并且我正在尝试以 v4 风格重建我的机器人,这似乎是一个完全不同的框架。
我发现那里有很多文档,但它被分为理论和实践,可能是由于您可以使用不同的开发框架(即 Node、C#)。但是不得不在这些文章之间来回切换是没有帮助的,
经过一番折腾,我的情况开始变得更体面了,但我仍然觉得还有很大的改进空间。目前我无法分享整个项目,但我在这里创建了最重要代码的要点:https://gist.github.com/jsiegmund/831d5337b1a438133991070daba8a27e
所以我对这段代码的问题/疑问如下:
-
添加对话框的方式,主要是添加提示以检索答案的需要令人困惑。我明白了这个想法,但不是内部运作。例如:我现在有以相应对话步骤的相同方法名称命名的提示,这是它应该工作的方式吗?按照惯例,似乎有一些神奇的代码将所有东西联系在一起?当瀑布步骤也包含提示时,对我来说会更有意义。
-
向对话框提供信息以便跳过步骤的正确方法是什么?我在主对话框中设置了 LUIS 意图,然后打开此对话框进行小时预订。假设我的用户说“我想为客户 X 预订 8 小时”,我希望对话框将金额预填充为 8,并将客户预填充到 X。
-
这里的客户/项目解决可能是一个不那么标准的要求。这些来自第三方应用程序,通过 API/SDK 检索。因此,根据登录用户,我需要访问该应用程序并检索该用户的数据。这以键/值对的形式返回,其中键是 GUID。我不希望用户输入 GUID,所以我创建了这些带有客户姓名的操作按钮,但是为了将 ID 值带入下一步,它现在在聊天中“写入”GUID 而不是客户姓名。使用这个名字很棘手,因为我不能完全依赖那些是独一无二的。此外,为了选择项目,我需要客户 GUID 并保存最终条目,我还需要 ID。但我不希望用户看到这些。
-
我现在制作卡片的方式对我来说也很奇怪。我首先需要为卡片添加一个对话框,然后在调用
stepContext.PromptAsync时,我还需要将卡片作为附件提供。对我来说感觉重复,但删除任何一个步骤都会失败。正常的样式提示对我不起作用,因为它不处理键/值,而只是处理字符串(参见数字 3)。
好的,这些是我正在努力解决的一些问题。我到了那里,它现在有效,但正如我所说,我无法摆脱我做得不对的感觉。如果有人能对此有所启发,将不胜感激。
【问题讨论】:
-
仅提出一个问题可能有点多,而且种类繁多,您能否将其归结为您想要回答的一个特定问题并将其分解为多个问题?真的很难这样回答,所以对每个人都有帮助。
标签: botframework bots azure-language-understanding adaptive-cards