You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Alexa AMAZON.YesIntent/NoIntent对话流转及模糊场景JSON配置咨询

处理Alexa的AMAZON.YesIntent/NoIntent:对话流转与歧义处理

嘿,我来帮你搞定Alexa里AMAZON.YesIntent/NoIntent的对话流转和歧义处理问题——这在技能开发里是个高频需求,我给你拆解清楚,再附上实打实的JSON配置示例。

一、让Yes/No Intent接入对话流程并传递到带响应槽的意图

默认情况下,AMAZON.YesIntent和NoIntent是全局触发的,要让它们能精准对应到特定的对话流程(比如确认某个槽位后继续填充其他槽),核心是用会话属性(sessionAttributes)跟踪对话上下文,让Alexa知道用户的“是/否”对应哪个未完成的意图请求。

具体步骤:

  • 第一步:在需要用户确认的主意图(比如BookTableIntent)中,当需要确认某个槽位(比如预订日期)时,返回带确认提示的响应,同时把当前意图名称、目标槽位等信息存入会话属性。
  • 第二步:在AMAZON.YesIntent/NoIntent的处理逻辑中,读取会话属性里的上下文信息,判断用户是在确认哪个意图的哪个槽位,然后把控制权转交给对应的意图,直接处理确认结果。

示例1:主意图触发确认请求的JSON响应

当BookTableIntent需要用户确认日期时,返回的响应如下:

{
  "version": "1.0",
  "sessionAttributes": {
    "currentIntent": "BookTableIntent",
    "targetSlot": "date",
    "pendingConfirmation": true,
    "tempDateValue": "2024-06-15"
  },
  "response": {
    "outputSpeech": {
      "type": "PlainText",
      "text": "你确认要预订2024年6月15日的晚餐吗?"
    },
    "reprompt": {
      "outputSpeech": {
        "type": "PlainText",
        "text": "请告诉我是或者否哦。"
      }
    },
    "shouldEndSession": false
  }
}

示例2:YesIntent传递到带槽的意图的JSON响应

当用户说“是”触发AMAZON.YesIntent后,读取会话属性,确认日期有效,然后转去BookTableIntent继续收集“用餐人数”槽位:

{
  "version": "1.0",
  "sessionAttributes": {
    "currentIntent": "BookTableIntent",
    "pendingConfirmation": false,
    "date": "2024-06-15"
  },
  "response": {
    "outputSpeech": {
      "type": "PlainText",
      "text": "好的,日期已确认!接下来请告诉我你需要的用餐人数。"
    },
    "directives": [
      {
        "type": "Dialog.ElicitSlot",
        "slotToElicit": "partySize",
        "updatedIntent": {
          "name": "BookTableIntent",
          "slots": {
            "date": {
              "name": "date",
              "value": "2024-06-15"
            },
            "partySize": {
              "name": "partySize"
            }
          }
        }
      }
    ],
    "shouldEndSession": false
  }
}

二、处理Yes/No Intent的歧义情况

如果用户的“是/否”可能对应多个未完成的请求(比如之前同时触发了预订餐桌和点饮料的意图),或者Alexa无法明确用户的指向,就需要返回澄清对话,或者根据规则转去自定义的澄清意图。

核心思路是在会话属性里维护一个待处理意图的栈,当上下文不明确时,触发澄清流程,让用户明确自己的需求。

示例:歧义时返回澄清对话的JSON响应

当会话属性里存在多个待处理意图,AMAZON.YesIntent触发后返回的澄清响应:

{
  "version": "1.0",
  "sessionAttributes": {
    "pendingIntents": ["BookTableIntent", "OrderDrinkIntent"]
  },
  "response": {
    "outputSpeech": {
      "type": "PlainText",
      "text": "抱歉,我没太明白你是确认预订餐桌还是确认点饮料呢?"
    },
    "reprompt": {
      "outputSpeech": {
        "type": "PlainText",
        "text": "请告诉我你指的是哪个请求哦。"
      }
    },
    "directives": [
      {
        "type": "Dialog.ElicitSlot",
        "slotToElicit": "targetIntent",
        "updatedIntent": {
          "name": "ClarifyIntent",
          "slots": {
            "targetIntent": {
              "name": "targetIntent"
            }
          }
        }
      }
    ],
    "shouldEndSession": false
  }
}

一些关键注意点

  • 会话属性是核心:一定要维护好会话属性的上下文信息,避免混乱,否则Yes/No的流转会出现错误。
  • 全局意图的触发范围:在Alexa开发者控制台的Intent Builder里,确保已经添加了AMAZON.YesIntent和NoIntent,并且可以通过自定义样本 utterance 调整触发的精准度。
  • 歧义处理优先级:如果上下文太复杂,优先用澄清对话,不要强行猜测用户意图,避免降低用户体验。

内容的提问来源于stack exchange,提问作者ina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:33:07