【问题标题】:Alexa Skill: Trigger Intent after starting skillAlexa技能:启动技能后触发意图
【发布时间】: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


    【解决方案1】:

    在 Github 上查看来自 Alexa 团队的 multiple-stream-sample

    您需要做的就是使用Audio Player Interface。诀窍是在添加AudioPlayerPlayDirective 时使用ENQUEUE 而不是REPLACE_ALL

    然后您应该能够使用“Alexa,Next”和“Alexa,Previous”命令在您的m3u 流之间导航(请参阅NextPlaybackHandler)。

    【讨论】:

    • 谢谢你,但不完全是,我想做。我的目标是切换到任何(!)广播电台(之前定义为 m3u)。例如:Alexa,开始我的技能 - 现在它从收音机 1 开始 - 到目前为止很好。然后我想用Alexa切换到radio 5(这不是下一个),切换到radio 5。稍后我想用Alexa从5切换到3,切换到radio3。
    猜你喜欢
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    相关资源
    最近更新 更多