首页 > 解决方案 > Dialogflow 正则表达式实体类似于@sys.any

问题描述

我有很多意图提取一个几乎可以是任何东西的参数。一个例子是公司名称。那里有很多变化:“VWR”、“1-800-Flowers”、“#1 Mufflers”。此列表可以包含多种语言的名称。

我现在正在使用@sys.any 实体,但如果文本包含数字或标点符号,它就不能正常工作。我得到这个参数,例如:“1 - 800 - Flowers”。数字和标点符号周围有空格。

我期待正则表达式实体能够解决我的问题,但在保存时它会抛出并且错误说它太宽泛了。\S+[\s\S]*\S+将捕获任何语言的任何内容。以下是错误:“com.google.apps.framework.request.BadRequestException: Validate entity with entityName 'RegexAny' and entityId '149486a3-7a49-4171-b23c-860f7d47b713' failed because of the following reasons: Regular expression match is too broad : \S+[\s\S]*\S+."

我怎样才能绕过这个无用的限制并在用户输入 id 时捕获他们的输入?

标签: dialogflow-es

解决方案


我也遇到过这个问题。我所做的是使用@sys.any 参数并在我的履行代码中进行正则表达式检查。在这里您可以删除任何标点符号和空格。如果您决定这样做,我建议您删除任何输出上下文并在您找到与该正则表达式匹配的情况下以编程方式设置它们。如果没有匹配,我将设置与该意图的输入上下文相同的上下文。这非常有效。


推荐阅读