我正在编写一种在 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"
}
}
任何帮助将不胜感激。