如何从WebHook客户端检索登录身份验证结果?

时间:2019-06-05 11:23:52

标签: dialogflow dialogflow-fulfillment

我正在设置一个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
});

...现在我很麻烦,因为我只有requestresponse参数,它们被组合到传递给函数的agent WebhookClient对象中。我没有signin参数,也不知道在哪里可以找到这些信息。我检查了代理中的许多不同属性,但找不到数据了...

所以,我的问题是:

  • 有人知道信息是否存储在请求/响应/代理对象中的某处吗?或可能“可以”存储它,但是我必须在Dialogflow控制台中更改/向Intent定义添加一些内容(此处未显示定义,因为它几乎是空的,我启用了webhooks并添加了“ Sign以“事件”为触发条件,并且履行功能在创建用户帐户后执行,因此可以-但它没有signin参数),

  • 如果该代码没有存储在其中,并且我无法使用WebhookClient处理登录-您能否解释一下如何“合并”这两种方法?还是我必须完全按照示例中的方式编写代码,并彻底放弃WebhookClient?我真的不想这么做,但是,我不得不重写很多行代码...:(

0 个答案:

没有答案