【问题标题】:Google DialogFlow --> Number-Sequence entity only matches SPECIFIC length of charactersGoogle DialogFlow --> Number-Sequence 实体仅匹配特定长度的字符
【发布时间】:2018-02-20 16:33:11
【问题描述】:

我有一个类型为:@sys.number-sequence 的实体,它匹配长度为 4 的代码,例如:(口语)“1 2 3 4”或“1234”。

在 Intent 中,如果用户说出的代码长度为 1、2、3、5 或 6 个字符,而不仅仅是 4 个字符,则此模式不匹配。所以在“用户说:”部分,我必须添加以下所有内容: 1 12 123 1234 12345 123456 (并将每一个映射到我的数字序列实体)

... 处理 1 到 6 个长数字序列的所有排列。

这显然是一个非常老套和丑陋的解决方案。

有没有一种方法可以定义一个数字序列类型来匹配任何长度的数字序列,以便我可以更灵活地在短语结构中使用它?

换句话说:我只想定义一次占位符匹配,而不必为每个长度变化重新定义它......

我在 Dialog Flow 类型的文档中没有看到任何与“数字序列长度”有关的内容: https://dialogflow.com/docs/reference/system-entities

【问题讨论】:

    标签: dialogflow-es google-home


    【解决方案1】:

    @sys.number-sequence 这样的内置实体将帮助您仅按顺序查找数字。在 api.ai 中,您不能指定您想要 4 位或 6 位数字的长度。此外,针对任何数字的所有排列训练代理不是一个通用的解决方案。

    您可以做的是编写一个 webhook,在您的代码中获取此参数 @sys.number-sequence 并在那里进行验证。如果不是你想要的位数,你可以回复说Please enter 6 digit number或者说you have entered a correct code

    【讨论】:

    • 我使用“1”的原因是它实际上可以允许任意长度的数字。所以它接受所有:1、11、111、1111、11111。如果你把 1111 而不是 1 作为占位符,那么它只接受 4 位数字,并拒绝其他所有数字。 (测试了很多次)。因此,对于 1 位数字,它更加灵活,可以允许任何长度的输入。出于验证目的,您的答案仍然有效 - 在 webhook 中进行。但我最终使用了一个占位符“1” - 现在它匹配所有长度的数字序列。谢谢。
    • 用您的@sys.number-sequence 尝试编号 5212、6212,7212,您会被它的响应方式所震撼。对于 5212,它会给你 5.5 的价值:D
    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多