会话实体未在dialogflow实体中更新

时间:2018-10-10 19:45:57

标签: node.js session dialogflow actions-on-google api-ai

使用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);
    });
  }

Intent picture

2 个答案:

答案 0 :(得分:0)

虽然还不清楚,但问题似乎在于您的Intent实际上并未使用您正在创建的实体类型。意向中的“房间”之类的单词都不会突出显示或与实体类型匹配。

您需要先创建实体类型,然后才能使用API​​更新其中的特定值。完成此操作后,即使其中没​​有任何实体,您也可以突出显示短语中的相关词以使其与特定的实体类型匹配。

即使您必须已创建实体类型,由于您正在更新会话中的实体,它们也永远不会显示在Dialogflow UI中。在创建实体的同一会话中说短语的用户仍应获得匹配项。

答案 1 :(得分:0)

请检查所有语法和函数调用定义,以根据语法从会话实体objectEntityValue数组中调用实体值。