发送时可以传递参数event
代替text
.
您需要将 javascript 对象转换为 proto 结构。有一个包pb-util https://www.npmjs.com/package/pb-util这将处理编码/解码
const { struct } = require('pb-util');
const request = {
session: sessionPath,
queryInput: {
event: {
name: eventName,
parameters: struct.encode({ name: 'John' }),
languageCode
}
}
};
之后,您将需要根据您的意图使用以下语法创建一个参数。#eventName.name
另一种方法是创建一个上下文,使用dialogflow.ContextsClient
& client.createContext()
并将参数添加到上下文中,然后使用queryInput
要求。
async function request() {
const contextClient = new dialogflow.ContextsClient({ keyFilename: '..' });
const sessionClient = new dialogflow.SessionsClient({ keyFilename: '..' });
const contextData = {
name: contextClient.contextPath('[PROJECT]', '[SESSION]', '[YOUR-CONTEXT]'),
parameters: struct.encode({ name: 'John' }),
lifespanCount: 1
};
const context = await contextClient.createContext({
parent: sessionPath,
context: contextData
});
const request = {
session: sessionPath,
queryInput: {
text: {
text: query,
languageCode
}
},
queryParams: {
contexts: context // You may want to add the other contexts here
}
};
const result = await sessionClient.detectIntent(request);
console.log(result);
}
现在您需要创建一个参数,其值为:#your-context.name