我的应用当前在“欢迎意图”响应期间加载会话实体类型。
因此,如果用户说:
与TestPoemApp交谈。
我的应用程序将响应:
嗨。您想听什么诗?
并且还会发送webhookResponse.SessionEntityTypes,这些webhookResponse.SessionEntityTypes定义了实体“ PoemType”(fulfillment method)的会话实体类型。用户然后可以说:
朗诵我的自定义诗。
其中“我的自定义诗”是实体“ PoemType”的会话实体类型。 RecitePoem Intent被触发,并且一切正常。
但是,如果用户说:
告诉TestPoemApp朗诵我的自定义诗。(也称为UserPhrase2)
这是行不通的,因为自绕过欢迎意图以来,在加载会话实体类型之前就立即触发了RecitePoem意图。 有没有办法在第一个响应之前或期间加载会话实体类型?
注意1:我尝试过的一件事是在服务器端插槽填充中使用事件。因此,当用户说出UserPhrase2时,RecitePoem Intent看到缺少必需的PoemType参数,并使用webhookResponse.SessionEntityTypes进行响应,以定义会话实体类型,并引发一个事件,该事件基本上只是重新触发RecitePoem Intent。这不起作用,因为我相信webhookResponse.SessionEntityTypes直到事件链的末尾才被读取(即直到重新触发的RecitePoem调用响应后才会读取SessionEntityTypes)。我相信这是因为"When the followupEventInput parameter is set for a WebhookResponse, Dialogflow ignores the fulfillmentText, fulfillmentMessages, and payload fields."并没有特别提到SessionEntityTypes,但是我猜想它们也将被忽略。
[注2:我可以为实体打开“允许自动扩展”功能,并且可以解决此问题,但是我想避免这种情况,因为我相信实际的,定义的会话实体类型会更好。
我结束了直接向DialogFlow支持发送消息并收到响应,因此我想在这里分享它:
很遗憾,截至目前,Dialogflow不支持会话实体在AoG深度链接调用上键入。当前,会话实体加载对话开始后。
似乎不可能。