Я настраиваю выполнение Dialogflow, которое сохраняет данные пользователя после его входа в систему.
Я использую пример из встроенного редактора (код ниже):
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
function welcome(agent) {
agent.add(`Welcome to my agent!`);
}
let intentMap = new Map();
intentMap.set('Default Welcome Intent', welcome);
agent.handleRequest(intentMap);
});
Я также хотел использовать привязку аккаунта, поэтому я добавил новую функцию, подобную этой:
function signIn(agent) {
agent.conv().ask(new SignIn('Log in to link accounts'));
}
intentMap.set('Sign In', signIn);
Пока все хорошо, пользователя спрашивают, хочет ли он создать аккаунт и все такое.Проблема в следующем ... следующий шаг должен проверить, действительно ли пользователь выполнил вход. В этом примере они используют совершенно другой подход для обработки выполнений (по крайней мере, я так думаю):
https://github.com/actions-on-google/dialogflow-google-sign-in-nodejs/blob/master/functions/index.js
app.intent('Get Sign In', async (conv, params, signin) => {
if (signin.status !== 'OK') {
return conv.close(`Let's try again next time.`);
}
//more code
});
... и теперь у меня проблемы, потому что у меня есть только аргументы request
и response
, которые объединены в объект agent
WebhookClient, который передается вфункция.У меня нет аргумента signin
, и я не знаю, где найти информацию.Я проверил так много разных свойств в агенте, и данные нигде не найти ...
Итак, мой вопрос:
кто-нибудь знаетесли информация хранится где-то в объектах запроса / ответа / агента?Или, может быть, он «мог» быть сохранен, но мне нужно что-то изменить / добавить в определение Intent в консоли Dialogflow (здесь я не показываю вам определение, потому что оно почти пустое, я включил веб-зацепки и добавил «Знак»).В «событие как триггер, и функция выполнения выполняется после создания учетной записи пользователя, так что все в порядке - но он просто не имеет аргумента signin
),
, если этоне хранится там, и я не могу обработать вход в систему с помощью WebhookClient - не могли бы вы объяснить, как я могу "объединить" эти два подхода?Или я должен написать код точно так же, как в примере, и раз и навсегда отказаться от WebhookClient?Я действительно не хотел бы делать это, хотя, мне пришлось бы переписать много строк кода ...: (