【问题标题】:Alexa Echo Dot - ASK skill problemsAlexa Echo Dot - 询问技能问题
【发布时间】:2017-01-05 15:45:39
【问题描述】:

我想做一个简单的测试自定义 Alexa Skill,但我卡住了,我不确定问题出在哪里。也许更有经验的人知道我错过了什么?

调用名称

家庭系统

意图架构

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

示例话语

TestIntent set state {test}
TestIntent add state

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

我得到的结果是这样的:

LaunchRequest 可以在服务模拟器和 Echo 上工作。它使用预期的 JSON 触发 HTTP POST,我得到预期的语音回复。

IntentRequest 仅适用于服务模拟器,它从不适用于 Echo。我说例如“alexa home system set state 8”,没有向我的服务器发出请求,回声只是发出声音,仅此而已。

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

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

【问题讨论】:

  • 它在 echosim.io 上有效吗? ,为什么不使用 lambda 服务器?
  • @u.gen echosim.io 完美模拟了我的回声,同样的问题。由我自己主持听起来更简单、更快捷。但这是可以尝试的。最让我困惑的是 LaunchRequest 有效,但 IntentRequest 甚至不会触发对我的服务器的响应或请求。
  • 尝试使用此工具 github.com/bespoken/bst 设置本地开发环境并使用 lambdas,这应该可以让您很好地了解为什么您的请求没有通过。 docs.bespoken.tools/en/latest/tutorials/tutorial_lambda_nodejs
  • 也可能分享您的 index.js 或任何您的意图

标签: alexa-skills-kit alexa-skill amazon-echo


【解决方案1】:

我找到了问题,这是一个经典的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
  • LaunchRequestshouldEndSession: false 响应,否则会话将结束。这在我的代码中映射到 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,家庭系统设置状态九”在模拟器中工作有点令人困惑,但我至少不得不说“Alexa,询问家庭系统设置状态九”。很高兴知道!
猜你喜欢
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
相关资源
最近更新 更多