dialogflow-es - 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 时捕获他们的输入?
解决方案
我也遇到过这个问题。我所做的是使用@sys.any 参数并在我的履行代码中进行正则表达式检查。在这里您可以删除任何标点符号和空格。如果您决定这样做,我建议您删除任何输出上下文并在您找到与该正则表达式匹配的情况下以编程方式设置它们。如果没有匹配,我将设置与该意图的输入上下文相同的上下文。这非常有效。
推荐阅读
- sql - 外键中的数据类型问题?
- git - RHEL 上的 git add/stat 非常慢
- reactjs - React - 获取不同行中对象的值
- opentsdb - 如何在 openTSDB 中将密集的时间序列转换为稀疏的时间序列?
- django - ModuleNotFoundError pycharm
- jinja2 - Jinja2 - 输出键:嵌套字典的值格式
- sql - 如何处理数据仓库中重复id包含略有不同值的维度表?
- node.js - 尝试使用 .insert 从多个集合 mongo 获取数据,但继续收到“不是函数”错误
- javascript - WordPress 使用 json_encode 将帖子从 php 发送到 js,并将 ID 发布到 div
- android - 即使应用程序未运行,我如何检查数据?