几天前,我通过Alexa Developer Console开始使用Alexa skill进行技能编程。因此,我的技能发展水平并不是很高,我希望在这里得到一个问题的帮助。
我有播放流(m3u)的技能。这很好用。
我的简单代码是用index.js编写的
const Radio1 = {
token: '1',
url: 'https://[...].m3u',
metadata: {
title: 'Radio1',
},
}
const Radio2 = {
token: '2',
url: 'https://[...].m3u',
metadata: {
title: 'Radio2',
},
}
const PlayStreamIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'LaunchRequest'
},
handle(handlerInput) {
const stream = Radio1;
const speechText = `Starting ${stream.metadata.title}`;
return handlerInput.responseBuilder
.speak(speechText)
.addAudioPlayerPlayDirective('REPLACE_ALL', stream.url, stream.token, 0, null, stream.metadata)
.getResponse();
}
};这只是开始我的技能,例如Alexa start MySkillName它起作用了,但现在我想在一段时间后触发-比方说10分钟后-另一个意图。它的名称是Radio2Intent,并且已经在"Intents“部分中定义。
代码也是写的(非常基础):
const Radio2IntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'Radio2Intent';
},
handle(handlerInput) {
const stream = Radio2;
const speechText = `Starting ${stream.metadata.title}`;
return handlerInput.responseBuilder
.speak(speechText)
.addAudioPlayerPlayDirective('REPLACE_ALL', stream.url, stream.token, 0, null, stream.metadata)
.getResponse();
}
};
[...]
exports.handler = skillBuilder
.addRequestHandlers(
[...]
Radio2IntentHandler
)虽然,我可以通过对Alexa说“更改到广播2”来改变流,但它不起作用:(
我的意图
{
"name": "Radio2Intent",
"slots": [],
"samples": [
"Change to Radio 2"
]
}也许任何人都能在这里帮我。
提前谢谢。
发布于 2020-10-13 15:47:42
在Github上查看Alexa Team的multiple-stream-sample。
你所需要做的就是使用Audio Player Interface。诀窍是在添加AudioPlayerPlayDirective时使用ENQUEUE而不是REPLACE_ALL。
然后你应该能够使用"Alexa,Next“和"Alexa,Previous”命令在你的m3u流之间导航(参见NextPlaybackHandler)。
https://stackoverflow.com/questions/64323220
复制相似问题