alexa-skills-kit - Alexa Echo Dot - 询问技能问题

标签 alexa-skills-kit amazon-echo

我想做一个简单的测试自定义 Alexa Skill,但我陷入困境,并且不确定问题是什么。也许更有经验的人知道我错过了什么?

调用名称

家庭系统

意图架构

{
  "intents":  [
    {
      "intent": "AMAZON.HelpIntent",
      "slots": []
    },
    {
      "intent": "TestIntent",
      "slots": [
        {"name": "test", "type": "AMAZON.NUMBER"}
      ]
    }
  ]
}

示例话语

TestIntent set state {test}
TestIntent add state

我已经在自己的自托管服务器上编写了自己的小型 python 服务器,我已经在同一系统上拥有了可用的新闻 Flash 技能。我花了很多时间查看文档、阅读教程,看起来我已经做了我应该做的事情。

我得到的结果是这样的:

LaunchRequest 在服务模拟器和 Echo 上都有效。它使用预期的 JSON 触发 HTTP POST,我得到了预期的语音回复。

但是IntentRequest只能在服务模拟器上工作,它在Echo上不起作用。例如,我说“alexa home系统设置状态八”,没有向我的服务器发出任何请求,回声只是发出声音,仅此而已。

我不知道如何调试这个,该技能是美国技能,而我的 Echo 处于美国模式。我尝试在欧洲和北美设定终点。尝试了不同的触发词,不同的插槽,没有插槽......我当然在“设置”->“历史记录”下进行了检查,以确保设备正确理解我。

知道接下来要尝试什么吗?如何调试这个?

最佳答案

我发现了这个问题,很经典PEBCAK (椅子和键盘之间存在问题)问题。

我错过了,我必须更精确地调用意图(一次性包含触发词和意图的单个句子)。有效且可行的示例是:

Alexa, ask home system to set state nine
Alexa, set state twelve using home system
Alexa, tell home system set state one

当我使用替代的两步调用时,我意识到了这一点,并意识到它是有效的。这必须是我调用技能的方式,而不是后端:

Alexa, open home system
(Alexa responds, and listens for the command)
Set state to eight
(Intent triggered, Alexa responds)
  • 上面的第一个请求是 LaunchRequest
  • LaunchRequest 响应 shouldEndSession: false,否则 session 将结束。这映射到我的代码中的 question(...)

触发技能的方式还有很多,完整列表请参见此页:https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/supported-phrases-to-begin-a-conversation (向下滚动到表格)

最后谢谢u-gen反馈,bst是一个有趣的项目(从未尝试过),我猜如果您使用像 lambda 这样的托管解决方案,它会非常有用。但多亏了这些文档,我找到了 Flask-ask,这是一个简化了我的代码的项目。

最后,如果其他人想尝试的话,我的测试项目的Python部分。

#!/usr/bin/env python

from flask import Flask, render_template
from flask_ask import Ask
from flask_ask import statement, question, convert_errors

app = Flask(__name__)
ask = Ask(app, '/ask/')

@app.route('/')
def hello_world():
    return 'Hello, World!'

@ask.launch
def launched():
    return question('Welcome to Foo')

@ask.intent('TestIntent')
def hello():
    return statement('Hello, world')

@ask.session_ended
def session_ended():
    return "", 200

if __name__ == '__main__':
    app.run(debug=True, host="0.0.0.0", threaded=True)

关于alexa-skills-kit - Alexa Echo Dot - 询问技能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489061/

相关文章:

ssl - 使用 letsencrypt SSL 证书的 Amazon Alexa 自定义技能

node.js - 如何使用 npm 中的 alexa-sdk 将 LaunchRequest 委托(delegate)给 IntentRequest

azure - 如何捕获 Alexa 控制台发送到端点的内容?

javascript - Alexa 技能 : Works for the first question but not the second question

aws-lambda - 用于智能家居 API 的 Amazon Alexa 设备发现,Lambda 失败

node.js - Alexa Skills Kit 示例技能无法在 Amazon Lambda 上上传 - 抛出错误

amazon-web-services - 当我为 Alexa 技能集创建函数时,Lambda ARN(亚马逊资源名称)没有显示在右上角

alexa - 我的自定义槽类型出现了意外的值

node.js - Alexa 如何在技能设置中使用德语同时用英语发音?

node.js - Node AWS Lambda + Twitter API : data is not defined