【发布时间】:2020-10-12 18:13:39
【问题描述】:
几天前,我通过Alexa Developer Console 开始使用 Alexa 技能进行技能编程。 因此,我的技能开发水平并不高,我希望在这里得到问题的帮助。
我有播放流 (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 分钟后 - 另一个 Intent。
它的名字是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 说“更改为 Radio 2”来更改流,但它不起作用:(
我的意图
{
"name": "Radio2Intent",
"slots": [],
"samples": [
"Change to Radio 2"
]
}
也许有人可以在这里帮助我。
提前致谢。
【问题讨论】:
标签: android-intent alexa