1

我在 Alexa 技能中使用自定义插槽。我创建了一个插槽,其中 pName 为插槽名称,插槽类型为ProductName。当我在打开我的技能后调用我的意图时,它总是会进入未处理的输入。我已按照文档创建自定义插槽,但仍未成功。例如// 我的示例话语如下:我有一个意图名称 OnHandQuantityIntent,其中包含 项目 {pName} 的现有库存示例话语

用户输入:项目 xyz234 的现有库存 Alexa 响应:内部未处理的意图。

模型 :

{
"interactionModel": {
    "languageModel": {
        "invocationName": "ebs demo",
        "intents": [
            {
                "name": "AMAZON.FallbackIntent",
                "samples": []
            },
            {
                "name": "AMAZON.CancelIntent",
                "samples": []
            },
            {
                "name": "AMAZON.HelpIntent",
                "samples": []
            },
            {
                "name": "AMAZON.StopIntent",
                "samples": []
            },
            {
                "name": "OnHandQuantityDemoIntent",
                "slots": [
                    {
                        "name": "PName",
                        "type": "Product_Type"
                    }
                ],
                "samples": [
                    "Onhand quantity {PName}",
                    "get onhand quantity for item {PName}",
                    "provide me onhand quantity for {PName}"
                ]
            }
        ],
        "types": [
            {
                "name": "Product_Type",
                "values": [
                    {
                        "id": "AT23808",
                        "name": {
                            "value": "AT23808",
                            "synonyms": [
                                "at23808",
                                "AT23808"
                            ]
                        }
                    }
                ]
            }
        ]
    }
    }
}

这是我的 alexa.js 函数

'use strict';
const Alexa = require('alexa-sdk');
const APP_ID = undefined;
const SKILL_NAME = 'DemoForDirectCall';
const GET_ITEM_MESSAGE = "ITEM DETAIL: ";
const HELP_MESSAGE = 'WE can get real time on hand quantity for Product';
const HELP_REPROMPT = 'What can I help you with?';
const STOP_MESSAGE = 'Goodbye!';



const handlers = {
   'LaunchRequest': function () {
    this.response.speak("Welcome to Demo for direct call");
    this.response.shouldEndSession(false);
    this.emit(':responseReady');
},
'OnHandQuantityDemoIntent': function () {
    console.log(JSON.stringify(this.event.request));
    var productName = "NONE";
    var intent = this.event.request.intent;
    if(!intent.slots.PName)
        productName = intent.slots.PName.value;
    const speechOutput = "You have entered "+productName;
    this.response.speak(speechOutput);
    this.emit(':responseReady');
 },
 'AMAZON.HelpIntent': function () {
    const speechOutput = HELP_MESSAGE;
    const reprompt = HELP_REPROMPT;
    this.response.speak(speechOutput).listen(reprompt);
    this.emit(':responseReady');
 },
 'AMAZON.CancelIntent': function () {
    this.response.speak(STOP_MESSAGE);
    this.emit(':responseReady');
 },
 'AMAZON.StopIntent': function () {
    this.response.speak(STOP_MESSAGE);
    this.emit(':responseReady');
 },
 'Unhandled': function () {
    console.log("Inside unhandled Intent");
    this.response.speak("Inside Unhandled Intent");
    this.emit(':responseReady');
 },
};

exports.handler = function (event, context, callback) {
const alexa = Alexa.handler(event, context, callback);
alexa.APP_ID = APP_ID;
alexa.registerHandlers(handlers);
alexa.execute();
};

用户输入:打开带有欢迎消息的 ebs 演示 Alexa 响应用户输入:项目 AT23808 Alexa 响应的现有数量:内部未处理的 Intnet。

4

2 回答 2

1

它进入Unhandled是因为没有意图处理程序AMAZON.FallbackIntent。并且提到的用户输入触发了这个最终作为“未处理”的意图。

Slot 值中的缩写和数字

当您处理 AT 或 ATZ 或 XYZ 之类的缩写时,您必须提供这样的插槽值。(尝试给出更多的变化)

x. y. z. two four seven nine
A. T. Z. one two three four
A. T. two three eight zero eight

在测试模拟器中对其进行测试时,使用类似的话语

向 ebs 演示库存商品 xyz 五三七

使用您的交互模型和我提到的更改,我收到了针对上述话语生成的请求

"intent": {
            "name": "OnHandQuantityDemoIntent",
            "confirmationStatus": "NONE",
            "slots": {
                "PName": {
                    "name": "PName",
                    "value": "XYZ537",
...

此外,将您的调用名称从更改ebse. b. s.

于 2018-07-24T05:07:28.757 回答
0

假设我必须输入用户的产品。所以 product 是我的插槽,productType 将是我的插槽类型。

Slot Types: productType 
  Values: washing machine.
product is of type: ProductType

Sample Utterance: My {product} is not working.

User input: My washing machine is not working.

这应该有效。

在您的情况下,我猜您需要为您的 ProductName 添加示例值,它是字母数字。那么它肯定会起作用。一切顺利。

于 2018-07-23T11:30:27.777 回答