Dialogflow es Google DialogFlow-->数字序列实体仅匹配特定长度的字符

Dialogflow es Google DialogFlow-->数字序列实体仅匹配特定长度的字符,dialogflow-es,google-home,Dialogflow Es,Google Home,我有一个类型为:@sys.number-sequence的实体,它匹配一个代码4长度的数字,例如:Speaked 1 2 3 4或1234 在意图中,如果用户所说的代码长度为1、2、3、5或6个字符,而不仅仅是4个字符,则此模式不匹配。因此,在“用户说:”部分,我必须添加以下所有内容: 1. 12 123 1234 12345 123456 并将每一个映射到我的数字序列实体 。。。处理1到6个长数字序列的所有置换 这显然是一个非常老套和丑陋的解决方案 有没有一种方法可以定义一个数字序列类型来匹配

我有一个类型为:@sys.number-sequence的实体,它匹配一个代码4长度的数字,例如:Speaked 1 2 3 4或1234

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

。。。处理1到6个长数字序列的所有置换

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

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

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

在对话框流类型的文档中,我没有看到任何与数字序列长度有关的内容:

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


您可以做的是编写一个webhook,在代码中获取这个参数@sys.number-sequence,并在那里进行验证。如果不是您想要的位数,您可以发送回复,说请输入6位数或说您输入了正确的代码。

我使用1的原因是它实际上可以允许任何长度的数字。所以它接受所有这些:1,11,111,11111111111。如果将1111而不是1作为占位符,则它只接受4位数字,并拒绝其他所有数字。对此进行了多次测试。因此,对于1位数字,它更灵活,允许任何长度的输入。出于验证目的,您的答案仍然有效——在webhook中进行验证。但我最终还是用了一个占位符1——现在它匹配了所有长度的数字序列。谢谢。用@sys.number-sequence试试5212、62127212号,它的响应方式会让你大吃一惊。对于5212,它会给你5.5的值:D