Чтобы отправить контекст с помощью модуля Dialogflow NPM, вы должны сначала создать контекст, используя dialogflow.ContextsClient
, а затем отправить его по запросу.
Чтобы преобразовать параметры в формат, требуемый Dialogflow, вам необходимо использовать этот модуль: pb-util
const dialogflow = require('dialogflow');
const { struct } = require('pb-util');
const projectId = 'projectId';
const contextsClient = new dialogflow.ContextsClient();
const sessionClient = new dialogflow.SessionsClient();
async function createContext(sessionId, contextId, parameters, lifespanCount = 5) {
const sessionPath = contextsClient.sessionPath(projectId, sessionId);
const contextPath = contextsClient.contextPath(
projectId,
sessionId,
contextId
);
const request = {
parent: sessionPath,
context: {
name: contextPath,
parameters: struct.encode(parameters)
lifespanCount
}
};
const [context] = await contextsClient.createContext(request);
return context;
}
function sendQuery(sessionId, query, context) {
const session = sessionClient.sessionPath(projectId, sessionId);
const request = {
session,
queryInput: {
text: {
text: query
}
},
queryParams: {
contexts: [context] // You can pass multiple contexts if you wish
}
};
return sessionClient.detectIntent(request);
}
(async() => {
const parameters = { // Custom parameters to pass with context
welcome: true
};
const sessionId = 'my-session';
const context = await createContext(sessionId, 'welcome-context', parameters);
const response = await sendQuery(sessionId, 'Hi', context);
console.log(response);
})();
Имейте в виду, что вы отправляете контекст ввода. Выходной контекст генерируется в намерении.
Если у вас есть проблемы с аутентификацией клиентов SessionClient
& ContextClient
, вы можете проверить этот другой вопрос: Простой диалог для простой авторизации