多个指令(Dialog.UpdateDynamicEntities 和 Dialog.ElicitSlot)

物联网 亚历克斯
2021-06-09 15:19:04

目前似乎无法在 Responsebuilder 中添加两个指令。

场景:

我的技能有一个可选的类型选项列表的插槽“UserSelection”。

Intent 本身搜索对象,如果对象不止一个,它会为 UserSelection 创建 UpdateDynamicEntities 指令。在这种情况下,我想动态更新选择列表并让用户选择其中之一。

因此我的代码如下所示:

  // TO MANY RECORDS. LET USER CHOOSE ONE
  var List = ''
  selection = true;
  replaceEntityDirective = {};
  replaceEntityDirective.type = 'Dialog.UpdateDynamicEntities';
  replaceEntityDirective.updateBehavior = 'REPLACE';
  replaceEntityDirective.types = [];
  var values = [];
  var propertyValues = [];
  var name = 'UserSelection';
  query.records.forEach(element => {
    var item = element._fields;
    var id = item.id;
    var value = item.name;
    var synonyms = [];
    var name = { value, synonyms };
    values.push({ id, name });
    List = List + item.name + ', <break time="0.5s"/>';
  });
  speechOutput = requestAttributes.t('SELECTION', List);
  reprompt = speechOutput;

返回 handlerInput.responseBuilder .speak(speechOutput) .addDirective(replaceEntityDirective) .addElicitSlotDirective('UserSelection') .reprompt(reprompt) .getResponse(); 这导致异常

    "error": {
        "type": "INVALID_RESPONSE", 
        "message": "No other directives are allowed to be specified with a Dialog directive. The following Directives were returned: [Dialog.UpdateDynamicEntities]" 
   } 

我在文档中找不到任何限制,所以我对异常感到好奇。如果这是当前的限制,关于如何解决我的问题的任何想法?

为什么我使用选项列表而不是 AMAZON.SearchQuery。我认为 Picklist 在识别方面比 SearchQuery 更准确。会有意义。当然我可以使用 AMAZON.SearchQuery ,它不太准确,我必须在代码中关心它。

有任何想法吗?

0个回答
没有发现任何回复~