首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alexa技能:启动技能后触发意图

Alexa技能:启动技能后触发意图
EN

Stack Overflow用户
提问于 2020-10-13 02:13:39
回答 1查看 67关注 0票数 0

几天前,我通过Alexa Developer Console开始使用Alexa skill进行技能编程。因此,我的技能发展水平并不是很高,我希望在这里得到一个问题的帮助。

我有播放流(m3u)的技能。这很好用。

我的简单代码是用index.js编写的

代码语言:javascript
复制
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“部分中定义。

代码也是写的(非常基础):

代码语言:javascript
复制
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”来改变流,但它不起作用:(

我的意图

代码语言:javascript
复制
{
    "name": "Radio2Intent",
     "slots": [],
     "samples": [
       "Change to Radio 2"
     ]
}

也许任何人都能在这里帮我。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 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)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64323220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档