如何在Dialogflow中执行WebHook中的槽验证? [英] How to perform slot validation in webhook in Dialogflow?

查看:18
本文介绍了如何在Dialogflow中执行WebHook中的槽验证?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用后端代码(WebHook)执行意图中的槽验证。

我已经看到如何使用Web挂钩执行插槽填充,但我想知道如何验证插槽数据,并在验证失败时重新提示用户。

示例:
用户:我想知道您在伦敦的服务。
BOT:我们在伦敦不提供服务,请输入其他城市名称。

推荐答案

简而言之:如果验证失败,请重置对话框上下文,再次触发您的意图,并且可以选择使用默认值保留其他实际有效的参数(这样您就不需要再次提示用户这些参数)。

您无需声明该意图的传入上下文即可实现此目的。请注意,您可以在意图中使用上下文,即使它们未声明为该意图的传入/传出上下文。

在本例中,我向用户请求2个参数(carmakemodel)。当然,需要根据您的意图设置Enable webhook call for slot filling

步骤:

  1. 在Dialogflow的Intent中,声明一个事件。这可用于从您的履行代码触发此意图:

  1. 在参数中,为您希望在重置意图后能够保留的每个参数声明一个默认值:

  1. 将默认值设置为帮助器上下文中的参数。如果此帮助器上下文确实存在,则将设置默认值,否则将保持为空。这将允许您重置意图并保留已有的其他参数。在本例中,我使用上下文show-car-details-data,并将传入上下文中参数model的默认值设置为_model

  1. 在您的填槽实现方式中,您可以验证您的参数,并通过重置意图来重新提示用户。为此,您需要1)清除当前对话框上下文,2)调用setFollowupEvent以再次触发您的意图,以及3)可选地设置一些可用于分配默认值的助手上下文(这样您就不需要重新提示用户输入那些有效的上下文)。 我正在使用Dialogflow Fulfillment Node.js Library
// clear dialog contexts:
agent.contexts.forEach( e => {
  if ( e.name.endsWith('_id_dialog_context') ) agent.context.delete(e.name);
});
// workaround bug: https://github.com/dialogflow/dialogflow-fulfillment-nodejs/issues/160
agent.add('');
// set follow up event: this triggers your intent again
agent.setFollowupEvent('show-car-details');
// optionally set helper context to set default values and avoid re-prompt of already valid values
// in this example, keep make since it was a valid parameter
// clear model because it was invalid. User will be prompted again on model, but not on make
agent.context.set('show-car-details-data', 1, { '_make': make, '_model': '' });

这篇关于如何在Dialogflow中执行WebHook中的槽验证?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆