我有一个特定实体的列表,如何为每个实体设置一个单独的响应?或针对特定实体的回复列表?
我在想,也许可以通过Google助手自定义有效载荷(?)
实现答案 0 :(得分:2)
您的问题有些含糊,但是听起来您将在Intent中将参数设置为某个值,这些值来自自定义Entity类型,并且您希望每个值都有不同的响应。
您无法通过“意图”的“响应”部分进行处理-您需要使用实现网络挂钩。
如果您正在使用actions-on-google库(建议您可能正在使用),并且参数名为val
,则代码片段可能看起来像这样:
app.intent('choose.value', (conv, {val}) => {
switch( val ){
case 'red':
agent.add('I like red too!');
break;
case 'blue':
agent.add('Blue is pretty cool!');
break;
default:
agent.add(`Not sure what to say about ${val}.`);
}
})
如果您使用的是dialogflow-fulfillment库,它将类似于:
var chooseVal = function( agent ){
var val = agent.parameters.val;
switch( val ){
case 'red':
conv.ask('I like red too!');
break;
case 'blue':
conv.ask('Blue is pretty cool!');
break;
default:
conv.ask(`Not sure what to say about ${val}.`);
}
}
如果您使用的是multivocal,则可以添加一个构建器,该构建器根据颜色设置Outent
环境设置,并在配置中设置Outout和Intent的响应:
new Multivocal.Config.Simple({
Local: {
en: {
Response: {
"Outent.red": [
"I like red too!",
"Red is nifty."
],
"Outent.blue": [
"Blue is pretty cool!",
"I really groove blue"
],
"Intent.choose.value": [
"Not sure what to say about {{Parameter.val}}"
]
}
}
}
});
var outentBuilder = function( env ){
env.Outent = `Outent.${env.Parameter.val}`;
return Promise.resolve( env );
};
Multivocal.addBuilder( outentBuilder );
答案 1 :(得分:0)
最新的答复,但是如果您不想不必使用实现网络挂钩并且只需要使用一个参数,也许有人会觉得这个答案很有用。