Вы можете передавать параметры при отправке event
вместо text
.
Вам потребуется преобразовать объект javascript в протоструктуру.Существует пакет 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