【问题标题】:Amazon Lex - Switch Intent without ElicitSlotAmazon Lex - 没有 ElicitSlot 的切换意图
【发布时间】:2020-02-10 14:53:40
【问题描述】:

我正在尝试切换 Intent,而不使用 ElicitSlot。原因是我的下一个 Intent 不需要插槽或用户输入。

目前我正在使用 ElicitSlot。在 Greetings 意图中,我设置了插槽 Nums。在新闻意图中,我检查插槽“Nums”是否存在并相应地进行。但是这不起作用,它仍然要求提示“Nums”插槽。

当前问候意图:履行

var sessionAttributes = intentRequest.sessionAttributes;
var slots = intentRequest.currentIntent.slots;

const num = slots.Num;
    
if(num == 1){
    str = 'News';
    intentRequest.currentIntent.name = 'News';
    intentRequest.currentIntent.slots = {
        Nums: 3
    }
    callback(close(sessionAttributes, str, intentRequest.currentIntent.slots, 'Nums'));
}

当前新闻意图:Lambda 初始化和验证

if(!slots.Nums){
    slots.Nums = intentRequest.inputTranscript;
    callback(close(sessionAttributes, 'News', slots, 'Nums'));
}

if(slots.Nums){
    callback(close(sessionAttributes, 'News', slots, 'Displaying News...'));
}

成功对话框示例:

用户:嗨

机器人:欢迎:(1) 新闻 (2) 选项 2 (3) 选项 3

用户:1

机器人:显示新闻...

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-lex


    【解决方案1】:

    目前 Lex + Lambda 无法做到这一点。由于您可以通过语音/文字触发其他意图,因此在将此菜单用于 DTMF/数字时,我确实认识到需要。

    一种解决方法是让您自己调用“显示新闻”意图代码。由于示例代码是 Lambda 代码,因此您可以控制该代码的流程,而无需依赖 Lex 进行调解。

    if(num == 1){
        callback(close(sessionAttributes, 'News', slots, 'Displaying News...'));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-29
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多