如何根据实体创建自定义响应?

时间:2018-06-25 17:09:17

标签: dialogflow

我有一个特定实体的列表,如何为每个实体设置一个单独的响应?或针对特定实体的回复列表?

我在想,也许可以通过Google助手自定义有效载荷(?)

实现

2 个答案:

答案 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)

最新的答复,但是如果您不想不必使用实现网络挂钩并且只需要使用一个参数,也许有人会觉得这个答案很有用。

https://stackoverflow.com/a/55926775/1011956