Dialogflow es 谷歌行动在账户链接前询问参数

Dialogflow es 谷歌行动在账户链接前询问参数,dialogflow-es,actions-on-google,Dialogflow Es,Actions On Google,我正在使用我的谷歌行动,出于某种原因,它要求参数,然后启动帐户链接,然后再次要求参数 答复示例: 代码 对话流 您不应该在登录事件意图中添加培训短语。如果请求signin许可的意图已经足够训练phares了。因为它在事件中指向动作、意图、签名,并在那个里继续,除非用户还并没有登录。我猜你在一个意图中做了这两个动作,所以这会使它变得混乱,并试图调用相同的意图并请求参数 如果必须使用这种方式,请尝试使用上下文,以便在第二次调用时将参数值传递给此意图。您不应在登录事件意图中添加培训短语。如果请求

我正在使用我的谷歌行动,出于某种原因,它要求参数,然后启动帐户链接,然后再次要求参数

答复示例:

代码 对话流

您不应该在登录事件意图中添加培训短语。如果请求signin许可的意图已经足够训练phares了。因为它在事件中指向动作、意图、签名,并在那个里继续,除非用户还并没有登录。我猜你在一个意图中做了这两个动作,所以这会使它变得混乱,并试图调用相同的意图并请求参数


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

您不应在登录事件意图中添加培训短语。如果请求signin许可的意图已经足够训练phares了。因为它在事件中指向动作、意图、签名,并在那个里继续,除非用户还并没有登录。我猜你在一个意图中做了这两个动作,所以这会使它变得混乱,并试图调用相同的意图并请求参数


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

我确信您的intent的懒惰填充已关闭

您的创建通道意图将channelname作为必需参数。如果没有Sloth填充,在满足所有必需参数之前,intents不会调用您的服务器/代码

发生的情况是:

  • 您正在调用Create Channel intent,它要求输入通道名称,因为这是必需的
  • 用户给出一个通道名,当所有必需的参数都满足时,intent调用您的代码
  • 您的代码触发登录意图,因为用户尚未登录
  • 用户授予在事件中触发操作\u意图\u签名\u的权限
  • 您的创建频道意图已被调用,因为它将动作\u意图\u登录\u作为触发器,并要求提供频道名称,因为此意图是全新的 要修复此问题,请执行以下操作之一:

    • 在意图底部启用树懒填充
    • 添加输出上下文并将#[context-NAME].channelname作为默认值添加到channelname参数(不带手镯)。当鼠标悬停在参数上时,可以通过单击出现的3点来指定默认值
    • 从创建频道意图中拆分捕获事件中的符号

    希望有帮助。

    我确信你的意图的懒惰填充已经结束

    您的创建通道意图将channelname作为必需参数。如果没有Sloth填充,在满足所有必需参数之前,intents不会调用您的服务器/代码

    发生的情况是:

  • 您正在调用Create Channel intent,它要求输入通道名称,因为这是必需的
  • 用户给出一个通道名,当所有必需的参数都满足时,intent调用您的代码
  • 您的代码触发登录意图,因为用户尚未登录
  • 用户授予在事件中触发操作\u意图\u签名\u的权限
  • 您的创建频道意图已被调用,因为它将动作\u意图\u登录\u作为触发器,并要求提供频道名称,因为此意图是全新的 要修复此问题,请执行以下操作之一:

    • 在意图底部启用树懒填充
    • 添加输出上下文并将#[context-NAME].channelname作为默认值添加到channelname参数(不带手镯)。当鼠标悬停在参数上时,可以通过单击出现的3点来指定默认值
    • 从创建频道意图中拆分捕获事件中的符号

    希望有帮助。

    请不要将代码作为图像发布-这会使阅读变得非常困难,如有必要,请复制,以便我们可以尝试重现您的问题。Dialogflow意图的屏幕截图非常有用,但这是您希望在处理过程中涉及到的唯一意图吗?@Captier有比这个更多的意图,但都是相同的,因此如果我们能够解决这个意图中的问题,它将几乎解决我正在使用的所有其他意图中的问题。嗯,这将是有用的,看看什么导致它发送“你能给我的渠道名称”(第一次和第二次)。请不要张贴你的代码作为一个图像-这使它很难阅读,如果必要的话,复制,以便我们可以尝试重现你的问题。Dialogflow意图的屏幕截图非常有用,但这是您希望在处理过程中涉及到的唯一意图吗?@Captier有比这个更多的意图,但都是相同的,因此如果我们能够解决这个意图中的问题,它将几乎解决我正在使用的所有其他意图中的问题。嗯,看看是什么导致它发送“你能给我Channelname吗”(第一次和第二次)。谢谢你的详细回答@YemG,我很快会尝试并报告发生的情况。请注意,即使用户拒绝,事件中的行动\u意图\u签名\u也会触发。我建议您添加一个新的非必需参数,并将#actions_intent_SIGN_IN.SIGN_IN作为值,以获得用户响应,并相应地更改代码。编辑:每次对话只能呼叫登录一次。如果用户拒绝,在会话重新启动之前,您不能要求他再次登录。因此,要么结束对话,要么保存用户响应。也许因为您已经了解了很多,您介意将此函数添加到这个开源项目中吗。如果你不能,没问题。谢谢你的详细回答@YemG,我会很快尝试并报告发生的情况。请注意,即使用户拒绝,事件中的行为\u意图\u签名\u也会触发。我建议您添加一个新的非必需参数,并将#actions_intent_SIGN_IN.SIGN_IN作为值,以获得用户响应,并相应地更改代码。编辑:每次对话只能呼叫登录一次。如果用户拒绝,在会话重新启动之前,您不能要求他再次登录。因此,要么结束对话,要么保存用户r
    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);
    
        }
    
      }
    
    });