如何编写不显示任何卡片的Alexa技能

时间:2019-07-07 09:38:30

标签: alexa alexa-skills-kit alexa-skill amazon-fire-tv

我正在编写一种在 Amazon Fire TV Cube 上使用的技能。该技能具有简单的命令。例如,“ Alexa,请电影院(技能名称)将音量设置为50 ”。技能处理程序向服务器发送简单的HTTP GET命令,并返回简单的.speak响应“ 将音量设置为50 ”。

我的问题是它还会显示一张卡牌,其技能名称会保留几秒钟。它基本上说:“ 电影院(技能名称),要退出,请尝试“ Alexa,退出。”。显然,如果我正在看电影,这很烦人。我在Alexa文档中到处都看过,但这只是讲述了如何自定义和编写更好的卡片,而不是如何避免显示任何内容。

我的问题是对于ResponseBuilder是否有某些东西可以调用不同的方法或不同的参数,以便它只说话而不显示任何内容。

这是技能处理程序代码:

const SetVolumeIntentHandler = {
    canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'IntentRequest'
            && handlerInput.requestEnvelope.request.intent.name === 'SetVolumeIntent';
    },
    handle(handlerInput) {
        const my_vol = handlerInput.requestEnvelope.request.intent.slots.volume.value;
        const speechText = 'setting volume to ' + my_vol;
        httpGet(my_ip, my_port, '/process_command?command=set_volume&volume=' + my_vol, (theResult) => {});
        return handlerInput.responseBuilder
            .speak(speechText)
            .getResponse();
    }
};

httpGet是一个功能,它听起来像什么。请注意,它本身可以完成工作(音量已更改)。我的问题只是如何阻止它显示任何内容,而只是在后台进行工作。

这是我在Alexa测试环境中获得的JSON输出:

{
    "body": {
        "version": "1.0",
        "response": {
            "outputSpeech": {
                "type": "SSML",
                "ssml": "<speak>setting volume to 50</speak>"
            },
            "type": "_DEFAULT_RESPONSE"
        },
        "sessionAttributes": {},
        "userAgent": "ask-node/2.3.0 Node/v8.10.0"
    }
}

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我没有像您一样的 Fire TV Cube ,但这是我在模拟器中的测试结果 medium hub simulator capture

这是对应的代码。

handle(handlerInput) {
        return handlerInput.responseBuilder
            .speak(`Hello World!`)
            .withSimpleCard(null)
            .getResponse();
}

请在您的消防电视中检查它并更新状态,因为我真的很期待它。谢谢。