如何将代码实施到 Alexa 技能中?

How can I implement code into an Alexa Skill?

我 运行 在理解如何将我的 Python 或 JS 代码变成 Alexa 的技能时遇到了重大问题。我的代码是用 Python 编写的,一半是用 JS 编写的,但无论我尝试什么,我似乎都无法将其实现为 Alexa 技能。

我浏览了如此多的教程、示例和演练,现在我开始认为 Alexa 无法 运行 确定她的响应的短代码。似乎每个教程都是针对从 API 中提取的事实技能,这不是我想要做的。至少,我不这么认为——我还在学习。

我已经在 VSCode 中编写了代码本身,但我一直在尽可能多地将技能放在 Amazon Developer Panel 中,但我到了需要计算的地步自开始日期以来已经过了多少天,获取模型,并在循环的四天列表中输出杂务。据我所知,如果不编写一两个函数,我无法做到这一点,但一切似乎都是 JSON 中的 class。这是 Alexa 的全部用途吗?

到目前为止,我觉得我在我的教育中不知何故错过了一些非常重要的东西,或者我可能完全误解了 Alexa 技能,但我迫切需要帮助来理解这一点。

例如,如果我有 JSON 代码的这一部分:

    const ChoresIntentHandler = {
canHandle(handlerInput) {
    return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
        && Alexa.getIntentName(handlerInput.requestEnvelope) === 'ChoresIntent';
},
handle(handlerInput) {
    const speakOutput = 'Oh, you know. Stuff.';

    return handlerInput.responseBuilder
        .speak(speakOutput)
        //.reprompt('add a reprompt if you want to keep the session open for the user to respond')
        .getResponse();
}
    };

说我要实现这段代码:

    var one_day = 1000 * 60 * 60 * 24

    const measure_from = new Date('2022-04-08');
    const today = new Date();
    const diff_in_days = Math.floor((today - measure_from) / one_day) - 1 ;

我到底应该把它放在哪里?

提前谢谢你。一个多月来我一直在努力解决这个问题,但我没有想法。

简答:

真的在哪里,就看你的逻辑了

在那种情况下,如果您希望这部分代码在 ChoresIntent 被调用后 运行,则在句柄函数中。

长答案:

This is the official tutorial您将需要了解如何从头开始构建 Alexa 技能,并将涵盖 99% 的实际和未来问题

关于您的问题,您需要了解 Alexa SDK 的设计方式:

  • 一个意图 = 一次用户交互
  • 一个Intent有2个功能:
    • canHandle,从请求中判断是否应该调用句柄函数的简单条件
    • handle,匹配canHandle函数则执行的函数

您还可以在每个请求后 运行 一段代码。你有所谓的interceptors,它允许你在收到响应后立即执行代码(允许你的意图从数据库中获取数据)或者你可以在回复用户请求之前执行代码,在意图。

无论如何,我建议您仔细阅读教程,它会解释如何在 Alexa 上创建技能,但不会教您 JS 或 Python 必填。