Dialogflow(Api.Ai)无法识别自定义实体

时间:2018-12-06 22:16:43

标签: dialogflow actions-on-google chatbot

我最近一直在与Dialogflow合作,使聊天机器人执行一些简单的任务。例如,使用webhooks和youtube api时,用户要求向他显示视频,然后漫游器仅用youtube视频url进行回答。

E.G。 用户说 告诉我尼尔年轻的收获之月

代理商说 在这里您可以:https://www.youtube.com/watch?v=n2MtEsrcTTs

我通过使用一个名为“ YoutubeQuery”的自定义实体来执行此操作,我选中了“允许自动扩展”,而未选中“定义同义词”,然后我只添加了两个值“ Kavinsky Night Call”和“ Indigo Night Tamino”

Entity with example values

我的意图是,我做了几个这样的训练短语:

Training Phrases for my youtube intent

一切正常。

现在,我的问题是一个名为Orders的新代理

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

我定义了订单的ID实体,就像youtubeQuery一样。我添加了一些示例订单ID,我希望它们全部以OD开头,并在示例后有4位数字(DX0001,DX0009,DX9999) order id's entity

之后我做了意图 Intent of GetOrder

现在,除非我从训练短语或我在实体中定义的ID示例中给出确切的订单ID,否则它将始终给我一个带有空参数OrderID的响应 我先说“我的订单”开始我的意图,然后提示我“您的ID是什么?

intent start

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

returning empty

但是当我给出一个已经在训练短语中使用过的ID(例如第一个DX0808)时,它确实可以工作...

Works

如何在不将所有可能的订单ID(从DX0001到DX9999)添加到训练短语或实体中的情况下进行这项工作。 我的意思是它确实适用于我的youtube查询,我可以在其中放置任何可以“捕捉”价值的东西。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

似乎必需的参数是这里的问题,我的建议是:

  1. 创建意图以一句话获取订单ID而无需再次输入(必须关闭订单ID),并且ID始终存在,例如:“我的ID为DX0402”。包括仅提供ID的培训回复,例如“ DL3932”。下方:

enter image description here

  1. 例如,当客户想要提供ID但缺少ID时,为场景设置其他意图。客户说:“我的ID”,然后让您的漫游器要求ID作为响应。 “好,请提供您的身份证”

如果执行此操作,以防万一用户不提供ID,则会触发意图2,而在提供ID后,您将触发意图1。

希望这很有道理。