node.js - 添加训练短语时的 Dialogflow v2 Nodejs 客户端库 UpdateIntent
问题描述
我正在尝试使用updateIntent
作为 Node.js 的 Dialogflow v2 客户端库的一部分的函数。我尝试使用它的原因是能够将训练短语添加到意图中。
我似乎无法通过这一关。这是我正在使用的代码!:
我的 GetIntent 函数:
async function getIntent(intentId) {
try {
let responses = await intentsClient.getIntent({name: intentId, intentView: 'INTENT_VIEW_FULL'})
const response = responses[0]
// console.log(response)
return new Promise((resolve, reject) => {
resolve(response)
})
} catch (err) {
return new Promise((resolve, reject) => {
reject(err)
})
}
}
我的 UpdateIntent 函数:
async function updateIntent(intent) {
const request = {
intent: intent,
languageCode: 'en-US',
updateMask: {
paths: ['trainingPhrases']
},
intentView: 'INTENT_VIEW_FULL'
}
try {
let responses = await intentsClient.updateIntent(request)
return new Promise((resolve, reject) => {
resolve(response)
})
} catch (err) {
console.log(err)
return new Promise((resolve, reject) => {
reject(err)
})
}
}
调用它的函数:
async function testUpdateTraining () {
try {
let intent = await getIntent('projects/small-talk-1-406ae/agent/intents/ac7f0b68-de5c-4b6f-9393-358dd2b0c1bd')
let trainingPhrase = { parts: [{ text: 'How should I behave on the trails?'}],
type: 'EXAMPLE'}
intent.trainingPhrases.push(trainingPhrase)
try {
let updatedIntent = await updateIntent(intent)
} catch (e) {
console.log(e)
console.log('failed to update the intent')
}
} catch (err) {
console.log('failed to get intent')
}
}
现在奇怪的是 - 我从客户端库调用中得到 200 响应。Api 文档指出,在成功响应后,您将获得一个意图对象。我得到一个带有训练短语的意图对象......
[![{ inputContextNames: \[\],
events: \[\],
trainingPhrases:
\[ { parts: \[Array\],
name: 'ad0d1f6a-78cf-4e0b-84ca-ec62a45c75dc',
type: 'EXAMPLE',
timesAddedCount: 0 },
{ parts: \[Array\],
name: 'e33cce4b-96ee-4e35-a151-5b09ff603817',
type: 'EXAMPLE',
timesAddedCount: 0 },
{ parts: \[Array\],
name: '7d9b7c56-5fa8-4791-986f-e57b9f90d431',
type: 'EXAMPLE',
timesAddedCount: 0 } \],
outputContexts: \[\],
parameters: \[\],
messages:
\[ { platform: 'PLATFORM_UNSPECIFIED',
text: \[Object\],
message: 'text' } \],
defaultResponsePlatforms: \[\],
followupIntentInfo: \[\],
name: 'projects/small-talk-1-406ae/agent/intents/ac7f0b68-de5c-4b6f-9393-358dd2b0c1bd',
displayName: 'faq.offroad.card1answer',
priority: 500000,
isFallback: false,
webhookState: 'WEBHOOK_STATE_UNSPECIFIED',
action: 'faq.offroad.card1answer',
resetContexts: false,
rootFollowupIntentName: '',
parentFollowupIntentName: '',
mlDisabled: true }][1]][1]
这就是对话流所具有的。这里只有两个训练短语,我以编程方式添加的那个没有出现。 所以我的问题是,如何格式化请求,以便可以毫无问题地更新训练短语?有没有我可以跑掉的例子?
解决方案
在尝试了很多之后,了解到我的代码有效,因为我删除了更新掩码。还有语言代码,因为它给了我一个错误。代码如下,工作正常。检查它。
这是 getIntent 函数:
async function getIntent(intentId) {
try {
let responses = await intentsClient.getIntent({
name: intentId,
intentView: 'INTENT_VIEW_FULL'
})
const response = responses[0];
console.log(util.inspect(response, false, null, true /* enable colors */ ));
return new Promise((resolve, reject) => {
resolve(response)
})
} catch (err) {
return new Promise((resolve, reject) => {
reject(err)
})
}
}
调用它的函数:
async function testUpdateTraining () {
try {
let intent = await getIntent('<your_ID>')
let trainingPhrase = {
parts: [{
text: 'let me call you?'
}],
type: 'EXAMPLE'
}
intent.trainingPhrases.push(trainingPhrase)
try {
let updatedIntent = await updateIntent(intent)
} catch (e) {
console.log(e)
console.log('failed to update the intent')
}
} catch (err) {
console.log('failed to get intent')
}
}
UpdateIntent 函数:
async function updateIntent(intent) {
const request = {
intent: intent,
intentView: 'INTENT_VIEW_FULL'
}
try {
let responses = await intentsClient.updateIntent(request)
return new Promise((resolve, reject) => {
resolve(responses)
})
} catch (err) {
console.log(err)
return new Promise((resolve, reject) => {
reject(err)
})
}
}
推荐阅读
- r - 计算一定范围内的行数
- javascript - 如何使用 Bootstrap 5 和 JQuery(或纯 JS)在多个选项卡中共享按钮组的状态?
- c# - DateTimeOffset.ToString() 格式化输出在环境中不一致
- python - 删除熊猫中的一系列字符
- python-3.x - 连接到 PySpark 会话时出现以下错误
- reactjs - React Apollo 3 graphQL 理解重新渲染的机制
- django - django 应用程序的 Heroku 部署后数据库错误
- css - SASS 动态字符串变量
- python - 有什么方法可以在不改变图像纵横比的情况下使用 python pptx 包在 pptx 中拟合图像
- python - 连接到远程计算机上的 Jupyter Notebook 时出现问题