目前似乎无法在 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 ,它不太准确,我必须在代码中关心它。
有任何想法吗?