如何使用nodejs SDK更新Dialogflow(V2)中的现有Intent?

时间:2019-02-26 08:43:13

标签: node.js npm dialogflow

我正在使用Dialogflow nodejs SDK(V2)在我的nodjs应用程序中集成Dialogflow,因为我正在使用dialogflow npm节点库。我可以创建Intent并获取Intent列表,也可以查询。但是我找不到任何方法来更新现有的Intent并根据Intent ID获取Intent详细信息。

您能帮我还是指导我如何解决此问题?

谢谢。

1 个答案:

答案 0 :(得分:2)

要更新意图,首先,您需要获取意图详细信息。如果您具有意图名称或ID,则只需请求列出意图API并找到具有匹配意图名称的意图详细信息即可。

一旦您有想要更新的意图详细信息(此处称为existingIntent),就可以使用以下代码对其进行更新。

async function updateIntent(newTrainingPhrases) {
  // Imports the Dialogflow library
  const dialogflow = require("dialogflow");

  // Instantiates clients
  const intentsClient = new dialogflow.IntentsClient();
  const intent = existingIntent; //intent that needs to be updated

  const trainingPhrases = [];
  let previousTrainingPhrases =
    existingIntent.trainingPhrases.length > 0
      ? existingIntent.trainingPhrases
      : [];

  previousTrainingPhrases.forEach(textdata => {
    newTrainingPhrases.push(textdata.parts[0].text);
  });

  newTrainingPhrases.forEach(phrase => {
    const part = {
      text: phrase
    };

    // Here we create a new training phrase for each provided part.
    const trainingPhrase = {
      type: "EXAMPLE",
      parts: [part]
    };
    trainingPhrases.push(trainingPhrase);
  });
  intent.trainingPhrases = trainingPhrases;
  const updateIntentRequest = {
    intent,
    languageCode: "en-US"
  };

  // Send the request for update the intent.
  const result = await intentsClient.updateIntent(updateIntentRequest);

  return result;
}