Google 帐户链接前请求参数的操作

Google Action asking for parameters before account linking

我正在为我的 google 操作使用 OAuth Authorisation Flow,出于某种原因,它要求参数,然后启动帐户链接,然后再次要求参数。

示例响应:

代码

app.intent('Create Channel Intent', async (conv, params) => {

  if (!conv.user.access.token) {

    conv.ask(new SignIn());

  } else {

    var locale = conv.user.locale;

    if (locale === 'hi-IN') {

      var accessToken = conv.user.access.token;

      var channelNameRaw = params.channelname;
      var channelNameData = await helperFunctions.hinditranslate(channelNameRaw);
      var channelNameLwr = channelNameData.toLowerCase();
      var channelName = helperFunctions.replaceWhitespacesFunc(channelNameLwr);

      const headers = await helperFunctions.login(accessToken);
      const speechText = await helperFunctions.createChannel(channelName, headers);

      conv.ask(speechText);

    } else {

      var accessToken = conv.user.access.token;

      var channelNameRaw = params.channelname;
      var channelNameData = channelNameRaw.toLowerCase();
      var channelName = helperFunctions.replaceWhitespacesFunc(channelNameData);

      const headers = await helperFunctions.login(accessToken);
      const speechText = await helperFunctions.createChannel(channelName, headers);

      conv.ask(speechText);

    }

  }

});

对话流

您不应将训练短语添加到您的登录事件意图中。如果请求登录许可的意图有训练phares就足够了。因为它指向 actions_intent_SIGN_IN 事件并在那里继续,除非用户尚未登录。我猜你在一个意图中做了这两个动作,所以这让它变得混乱并试图调用相同的意图并询问参数。

如果您必须使用这种方式,请尝试使用上下文,以便您可以在第二次调用时将参数值传递给此 Intent。

我 %99 确定您的 intent 的树懒填充已关闭。

您的创建频道意图将频道名称作为必需参数。如果没有 Sloth-filling,意图将不会调用您的 server/code,直到满足每个必需的参数。

发生的事情是:

  1. 您正在调用创建频道意图,它要求输入频道名称,因为它是必需的
  2. 用户提供频道名称,意图在满足所有必需参数后调用您的代码。
  3. 您的代码触发 sign_in 意图,因为用户尚未登录。
  4. 用户授予触发 actions_intent_SIGN_IN 事件的权限
  5. 您的创建频道意图已被调用,因为它以 actions_intent_SIGN_IN 作为触发器并要求提供频道名称,因为此意图是全新的。

要修复,请执行以下操作之一:

  • 在意图底部启用 sloth-filling。
  • 添加输出上下文并将#[CONTEXT-NAME].channelname 作为默认值添加到 channelname 参数(无手镯)。当鼠标悬停在参数上时,您可以通过单击出现的三点来分配默认值。
  • 从您的创建频道意图中拆分捕获 sign_in 事件

希望对您有所帮助。