使用createSessionEntityTypes我创建了一个会话实体,如果我使用listSessionEntityTypes可以添加到已经存在的实体类型中,我可以查看创建的新实体,但是如果我尝试使用DialogFlow,它将无法识别该实体。
例如: 我创建了一个名为kitchen的实体,现在如果尝试访问它说“打开厨房灯”,则light实体类型无法识别kitchen。
这很奇怪,因为当我使用listSessionEntitytypes时,我在该列表中看到了kitchen,但是当我讲话时,我的DialogFlow并未将其识别为Entity。 这是我正在处理的代码:
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);
});
}
答案 0 :(得分:0)
虽然还不清楚,但问题似乎在于您的Intent实际上并未使用您正在创建的实体类型。意向中的“房间”之类的单词都不会突出显示或与实体类型匹配。
您需要先创建实体类型,然后才能使用API更新其中的特定值。完成此操作后,即使其中没有任何实体,您也可以突出显示短语中的相关词以使其与特定的实体类型匹配。
即使您必须已创建实体类型,由于您正在更新会话中的实体,它们也永远不会显示在Dialogflow UI中。在创建实体的同一会话中说短语的用户仍应获得匹配项。
答案 1 :(得分:0)
请检查所有语法和函数调用定义,以根据语法从会话实体objectEntityValue数组中调用实体值。