发送时可以传递参数
event
而不是
text
.
您需要将javascript对象转换为proto结构。有一个包裹
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
}
};
const result = await sessionClient.detectIntent(request);
console.log(result);
}
现在您需要创建一个参数,其值为:
#your-context.name