如何在Dialogflow中执行WebHook中的槽验证? [英] How to perform slot validation in webhook in Dialogflow?
本文介绍了如何在Dialogflow中执行WebHook中的槽验证?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用后端代码(WebHook)执行意图中的槽验证。
我已经看到如何使用Web挂钩执行插槽填充,但我想知道如何验证插槽数据,并在验证失败时重新提示用户。
示例:
用户:我想知道您在伦敦的服务。
BOT:我们在伦敦不提供服务,请输入其他城市名称。
推荐答案
简而言之:如果验证失败,请重置对话框上下文,再次触发您的意图,并且可以选择使用默认值保留其他实际有效的参数(这样您就不需要再次提示用户这些参数)。
您无需声明该意图的传入上下文即可实现此目的。请注意,您可以在意图中使用上下文,即使它们未声明为该意图的传入/传出上下文。
在本例中,我向用户请求2个参数(carmake
和model
)。当然,需要根据您的意图设置Enable webhook call for slot filling
。
步骤:
- 在Dialogflow的Intent中,声明一个事件。这可用于从您的履行代码触发此意图:
- 在参数中,为您希望在重置意图后能够保留的每个参数声明一个默认值:
- 将默认值设置为帮助器上下文中的参数。如果此帮助器上下文确实存在,则将设置默认值,否则将保持为空。这将允许您重置意图并保留已有的其他参数。在本例中,我使用上下文
show-car-details-data
,并将传入上下文中参数model
的默认值设置为_model
:
- 在您的填槽实现方式中,您可以验证您的参数,并通过重置意图来重新提示用户。为此,您需要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屋!
查看全文