首页 > 解决方案 > Dialogflow(Api.Ai)不识别自定义实体

问题描述

我最近一直在使用 Dialogflow 来制作聊天机器人来完成一些简单的任务。例如,使用 webhook 和 youtube api,用户要求向他展示视频,然后机器人只用 youtube 视频 url 回答。

EG 用户说给我看尼尔年轻的丰收月

代理说给你:https ://www.youtube.com/watch?v=n2MtEsrcTTs

我通过使用一个名为“YoutubeQuery”的自定义实体来做到这一点

具有示例值的实体

在我的意图中,我只是做了一些这样的训练短语:

我的 youtube 意图的训练短语

一切正常。

现在我的问题是我称之为 Orders 的新代理

我只想从firestore数据库中获取订单ID,但在到达那里之前我遇到了一个大问题

我定义了订单的 ID 实体,就像使用 youtubeQuery 一样。我添加了一些示例订单 ID,我希望它们都以 OD 开头并在示例之后有 4 位(DX0001、DX0009、DX9999) 订单 ID 的实体

后来我做了这个意图 GetOrder 的意图

现在,除非我给出训练短语中的确切订单 ID 或我在实体中定义的 ID 示例,否则它总是会给我一个带有空参数 OrderID 的响应你的身份证?

意图开始

因此,当我提供一个未在 Intent 的训练短语中使用的 ID 时,我会在参数中得到一个空值,如下所示:

返回空

但是当我给出一个在训练短语中使用过的 ID 时,例如第一个 DX0808,它确实有效......

作品

如何在不在训练短语或实体中添加从 DX0001 到 DX9999 的所有可能订单 I​​D 的情况下完成这项工作。我的意思是它确实适用于我的 youtube 查询,我可以将任何它“捕获”值的东西放在那里。请问有什么帮助吗?

标签: dialogflow-esactions-on-googlechatbot

解决方案


看起来所需的参数是这里的问题,我的建议是:

  1. 创建意图以在一句话中获取订单 ID 而无需再次提示(订单 ID 需要关闭)并且 ID 始终存在,例如:“我的 ID 是 DX0402”。包括仅提供 ID 的培训响应,例如“DL3932”,例如。以下:

在此处输入图像描述

  1. 当客户想要提供 id 但缺少 id 时,为场景设置其他意图,例如。客户说:“我的 id”并让您的机器人询问该 id 作为响应。“好的,给我你的身份证”

如果你这样做,如果用户没有提供 id,intent 2 将被触发,在提供 id 后你将触发 intent 1。

希望这是有道理的。


推荐阅读