Alexa技能-如何从另一个意图返回带有插槽值的意图?

时间:2019-02-03 12:32:38

标签: alexa alexa-skills-kit

如何从另一个意图返回带有槽值的意图?

我想通过在另一个意图中返回其插槽值来触发一个意图。

这是我的JSON文件的示例:

{
  "interactionModel": {
    "languageModel": {
      "invocationName": "movie antakshari",
      "intents": [
        {
          "name": "SchoolIntent",
          "slots": [
            {
              "name": "Subject",
              "type": "subjects"
            }
          ],
          "samples": ["{subjects}"]
        },
        {
          "name": "teachersIntent",
          "slots": [],
          "samples": ["teachers"]
        },
      ],
      "types": [
        {
          "name": "subjects",
          "values": [
            {
              "name": {"value": "maths"}
            },
            {
              "name": {"value": "english"}
            }
          ]
        }
      ]
    }
  }
}

这是我的index.js文件:

const teacherIntentHandler = {
    canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'teacherIntent';
    },

    handle(handlerInput) {
        if (some condition) {
            // Here I want to return the schoolIntentHandler with a slot value maths
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您可以通过ElicitIntent来实现。但是,当您引起您的意图时,针对特定意图的广告位将变得清晰(重置为null)。为了克服这个问题,在引起意图之前,请以一种独特的方式将您的广告位值放入会话属性中,以将其标识为广告位,例如 SLOT_key 。当它进入所需的意图时,从会话属性中获取广告位值并将其用于您的逻辑。

答案 1 :(得分:0)

意图调用由用户话语驱动。用户必须说些什么,以便Alexa Service可以将用户所说的内容与模型中的意图相匹配。

在您的情况下,您需要通过正确引导用户来使用户调用schoolIntent。即您需要从此处返回语音,以使用户说出与schoolIntent相匹配的内容

handle(handlerInput) {
    if (some condition) {
        // Here I want to return the schoolIntentHandler with a slot value maths
        //
        // You need to return a speech from here that will make user to utter something that matches schoolIntent.
    }
}