Как получить результат аутентификации при входе из клиента WebHook? - PullRequest
0 голосов
/ 05 июня 2019

Я настраиваю выполнение 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?Я действительно не хотел бы делать это, хотя, мне пришлось бы переписать много строк кода ...: (

...