使用createSessionEntityType,我创建了一个会话实体,如果我使用listSessionEntityType,它将添加到已经存在的实体类型中,我可以查看创建的新实体,但是如果我尝试使用我的DialogFlow,它无法识别它。
举个例子: 我创建了一个名为 kitchen 的实体,现在如果我尝试访问它说"打开厨房灯"厨房不会被灯光实体类型识别。
这很奇怪,因为当我使用listSessionEntitytypes时,我在该列表中看到了厨房,但是当我说话时,我的DialogFlow没有将其识别为实体。 这是我正在处理的代码:
function createSessionEntityType() {
const sessionEntityTypesClient = new
dialogflow.SessionEntityTypesClient();
const entityType = 'any';
const sessionPath = `sessionpath`;
const sessionEntityTypePath = `sessionentitypath`;
const entities = [{
"value": "Library",
"synonyms": ["Study room"]
}];
const entityOverrideMode = "ENTITY_OVERRIDE_MODE_OVERRIDE";
const sessionEntityTypeRequest = {
parent: sessionPath,
sessionEntityType: {
name: sessionEntityTypePath,
entityOverrideMode: entityOverrideMode,
entities: entities,
},
};
sessionEntityTypesClient
.createSessionEntityType(sessionEntityTypeRequest)
.then(responses => {
console.log('SessionEntityType created:', responses);
});
}
意图图片
虽然不完全清楚,但看起来问题是您的意图实际上并未使用您正在创建的实体类型。意向中任何类似"房间"的单词都不会突出显示或与实体类型匹配。
您需要先创建实体类型,然后可以使用 API 更新其中的特定值。完成此操作后,您还可以突出显示短语中的相关单词,以将它们与特定的实体类型匹配,即使您没有任何实体。
即使您必须创建实体类型,因为您要在会话中更新实体,因此它们永远不会显示在对话流 UI 中。但是,在创建实体的同一会话中说出短语的用户仍应获得匹配项。
请检查您的所有语法和函数调用定义,要从会话实体实体调用实体值数组必须按照语法调用实体值。