首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用显示项目计数的所需参数的意图

使用显示项目计数的所需参数的意图
EN

Stack Overflow用户
提问于 2019-02-06 04:38:20
回答 2查看 255关注 0票数 0

试着为我的第一个会话助理做一个有几个参数的意图。一切都是在对话框中构建的,对于我的一些功能,我使用的是实现。

描述我的助理最简单的方式是电影票预订。

我需要存储@number_of_tickets,“电影院,”电影。最后两个(“电影”和“电影”)很容易用实体来解决,但是与@number_of_tickets有很大的差距。所有这些参数都应该是强制性的。

我的目标是允许这样的功能:

  1. 给我订一张IMax星球大战的票(票子=1= @number_of_tickets,星球大战=电影,IMax =@影院)
  2. 在IMax给我订两张星球大战的票(两张票= @number_of_tickets,“星球大战”=“电影”,IMax=@电影院)
  3. 给我订“星球大战”在IMax ->的票,你想订多少张?

我试过使用复合实体,但它不像我所期望的那样工作。

我如何在对话框中启用这样的功能?

有没有办法要求@number_of_tickets介于1到5之间?

EN

回答 2

Stack Overflow用户

发布于 2019-02-06 07:55:06

上述问题可通过以下步骤实现:解决办法:

步骤1:

为电影和电影创建实体:

电影:

电影:

步骤2:

创建一个包含三个参数的意图:

(如果您只想从1到5分配,那么您可以创建一个实体,比如电影和电影,条目从1到5,并用相同的参数映射票证数量)

步骤3:

将所有参数强制执行,并为所有参数定义提示,如下所示:

电影预言片:

电影预告:

提示票数:

结果:

票数 1
EN

Stack Overflow用户

发布于 2019-02-06 12:12:11

这可能不是显而易见的,但你的两个问题的答案可以通过记住意图捕捉用户说什么,而不是你对他们所说的做什么。你可以有多种意图捕捉不同的短语,并在你的实践中以大致相同的方式处理它们。(这些都要求你在幕后有某种实现网络钩子。)

,我如何假设默认为1张票?

有几种方法。

第一种情况是,您可以设置一个意图来捕获表示单个票证的短语,以及一个显式要求数字的不同意图。所以也许有一个意图(可能是book.single)

  • 我想买一张IMax星球大战的票
  • “星球大战”的IMax展怎么样?
  • 让我看看IMax的“星球大战”

以此类推。虽然你也有不同的意图(可能是book.multiple)

  • 我想要两张IMax星球大战的票
  • 两张IMax星球大战的票

等。

在您的实践中,您可能有一些函数需要三个参数

代码语言:javascript
复制
bookTickets( num, movie, cinema );

在book.single的意图处理程序中,您可以使用

代码语言:javascript
复制
bookTickets( 1, movieParameter, cinemaParameter );

在book.multiple的意图处理程序中,这将通过

代码语言:javascript
复制
bookTickets( countParameter, movieParameter, cinemaParameter );

在每种情况下,实现仍然会调用相同的函数来执行实际的工作,但是处理程序会根据需要设置值。

我怎么才能限制订多少张票?

这涉及到一些你没有提到的事情--如果他们试图订购更多的东西,你想要发生什么?你想引导他们进行一次集体订单对话吗?断然拒绝?任何你想要的--在你尝试实现它之前,确保你已经计划好了这条对话的道路。

在这种情况下,这不是您想要在对话框意图中强制执行的东西。在你的实践中处理它是最容易的。在那里,您将对各种参数应用任何逻辑,并返回一条消息,提示它们下一个答复。

逻辑最好在实践中处理。

实际上有几个地方,这在你的例子中是很重要的。第一,你将如何处理超过5张票的要求?在book.multiple的处理程序中,您将检查请求了多少。如果包含在1到5之间,您可以调用上面的book函数。但如果没有,你可能想回复说:“对不起,你最多只能预订5张票,你想要多少张票?”

你还需要一个新的意图来捕捉回复。它可能很简单,只需取一个数字,但是为了确保它只在发送回此提示符时应用,您可能需要设置一个输出上下文,指示您要提示的票数,然后将其设置为收集一个号码的意图的输入上下文。

在预订门票之前,是否还有其他情况需要应用逻辑?很多--在每一种情况下,你可能都希望确保有一个新的意图,可以捕捉他们想要的东西。例如,如果他们想预订的电影没有在那家电影院放映呢?如果你已经知道那部电影卖光了呢?

,但是后续的意图呢?

通常最好避免跟踪意图,原因完全相同--意图代表用户所说的内容,不应该试图建模您的代码逻辑。跟踪意图没有什么特别之处--你可以在最高层创建一个同样工作的意图,但只有当你提示某些事情时才有效。多么?再来一遍!

因此,如果您提示可能的显示时间(“您想要2:00,4:00,还是6:00显示?”)您还可以包含一个上下文(例如"promptTime“),然后有一个意图将其作为输入上下文并与时间相匹配。

结论

  • 意图表示用户所说的内容。
  • 你的实现代码和他们说的一样
  • 您可以在您的实践中提示他们提供更多或不同的信息。
  • 上下文可以影响您期望的答复。
  • 多个意图处理程序可以调用相同的函数来完成工作。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54546698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档