如何使用后端代码(webhook)意图执行插槽验证。
我已经看到了如何使用webhooks执行插槽填充,但是我想知道如何验证插槽数据并在验证失败时重新提示用户。
示例:
用户:我想知道您在伦敦的服务。
Bot:我们不在伦敦提供服务,请输入其他城市名称。
答案 0 :(得分:1)
步骤
答案 1 :(得分:1)
简而言之::如果验证失败,请重置对话框上下文,再次触发您的意图,还可以选择使用默认值来保留其他实际有效的参数(因此您无需重新输入再次提示用户)。
无需为此目的声明传入上下文。请注意,即使没有将上下文声明为该意图的传入/传出上下文,也可以在意图中使用上下文
在此示例中,我向用户请求2个参数(汽车make
和model
)。当然,您需要根据自己的意愿设置Enable webhook call for slot filling
。
步骤:
show-car-details-data
,并在该传入上下文中将参数model
的默认值设置为_model
: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': '' });